OpenCL от nVidia


    Как известно, технология CUDA доступна только для видеокарт nVidia. Из-за этого факта часто возникают вопросы: как быть владельцам видеокарт ATI Radeon, и стоит ли вообще использовать решения, доступные на аппаратных средствах только одного производителя.

    В связи с этим, я решил немного уточнить, что же из себя представляет CUDA, и какую роль она занимает в имплементации унифицированных стандартах GPGPU на видеокартах nVidia.

    Программные реализации GPGPU


    В настоящий момент на рынке еще нет универсальной технологий для использования GPU в неграфических вычислениях, хотя разработки идут полным ходом.

    Среди разрабатываемых технологий особо стоит отметить Microsoft DirectX Compute и OpenCL, которую предложила Apple. Из заголовка можно догадаться, что сегодня речь пойдет об OpenCL и её реализации от nVidia.

    OpenCL — открытый стандарт для GPGPU, который разрабатывается консорциумом Khronos (khronos.org), и по замыслам, позволит использовать мощности GPU на различных программных и аппаратных платформах.

    Возможно, у некоторых возникнет вопрос: зачем nVidia разрабатывает CUDA, а ATI – Stream, не проще было бы сразу договориться о принятии общего стандарта. Но на самом деле все не так просто как кажется, и дело не только в политике производителей, хотя и в ней тоже. Так уж случилось, что развитие GPU идет несколько другим путем, в отличие CPU, где общая архитектура унифицирована достаточно давно. Графические процессоры различных производителей изначально имели совершенно разную архитектуру. Например, не существует общих команд для GPU разных производителей, не существует универсального ассемблера. И ответ касательно CUDA и Stream весьма прост – это и есть те аппаратно-зависимые прослойки поверх которых и строятся унифицированные архитектуры OpenCL и DirectX Compute. Если кто-то читал предыдущие записи по nVidia CUDA, то, наверное, заметил упоминание о CUDA driver API. CUDA driver API является той самой аппаратно-зависимой прослойка для работы с GPU от nVidia. В целом, программный стек для работы с nVidia GPU имеет следующий вид (можно найти в официальной документации по CUDA):



    Как можно видеть, OpenCL и DX11 Compute работают поверх технологии CUDA.

    Когда ждать OpenCL от nVidia



    Не так давно консорциум Khronos обнародовал первую версию спецификации OpenCL, которая доступна на сайте данной организации в виде pdf-документа.

    Компания nVidia так же представила roadmap по поддержке OpenCL в своей продукции:



    Правда, beta-версия скорее всего будет доступна только для партнеров nVidia. Остается надеяться, что уже в середине года появится полноценная имплементация OpenCL, которой сможет воспользоваться любой желающий.

    Заключение


    Надеюсь, что немного развеял туман войны относительно поддержки OpenCL кампанией nVidia, и какую роль в этом играет CUDA.
    Поделиться публикацией

    Комментарии 16

      +4
      Вы зачем-то упомянули ATI Stream в начале статьи, тем самым заставили, по-крайней мере меня, ждать какого-то общего решения для видеокарт обоих производителей. Но в конце почему-то не осветили перспектив работы OpenCL с видеокартами AMD. =)
        +4
        AMD так же заявили о полной поддержке OpenCL + обещала инструменты для взаимодействия с кодом, который уже написан на Brook+.
        Я лишь показал роль CUDA в текущей программной архитектуре nVidia GPU.
          0
          Спасибо за информацию. Именно это я и хотел увидеть =)
            0
            Об Brook+ можно убиться со спокойной душой :( Он либо компилит неправильно, либо НЕ компилит :(
          –1
          поддержи OpenCL кампанией nVidia


          Исправьте «ашипки» пожалуйста :)

          ЗЫ: За статью спасибо :)
            0
            fixed
              0
              кампанией -> компанией
            0
            С этой статьей становится действительно понятнее, что из себя будут представлять технологии вычисления на видеокартах в будущем.
            Как я считаю, видеокарты не заменяют (как за это переживает интел), а расширяют свой профиль вычислений, станут более универсальными устройствами (интересно, правильно ли будет тогда называть их «видеокартами»? :) и займут лишь тот сектор, где они будут выгодными.
              –1
              запасаюсь по-корном
                –3
                ну понятно короче каким кормом
                0
                где можно почитать о том, что конкретно и с какой (оценочно) скоростью будут считать gpu (помимо уже существующего folding@home, например)?
                  0
                  Про существующие проекты с применением CUDA (в т.ч. с указанием прироста производительности) написано здесь. Уверен, что с началом поддержки OpenCL новые поекты на его основе будут также попадать туда.
                • НЛО прилетело и опубликовало эту надпись здесь
                    0
                    Постараюсь написать статью про архитектуры GPU различных производителей (Ati и nVidia). Так как в двух словах получится слишком поверхностно.
                      –1
                      Хочется прокомментировать определение
                      OpenCL — открытый стандарт для GPGPU, который разрабатывается консорциумом Khronos (khronos.org), и по замыслам, позволит использовать мощности GPU на различных программных и аппаратных платформах."

                      Ну, на самом деле на сайте http://www.khronos.org/opencl/ opencl определяется несколько шире.
                      OpenCL создан не только для расчетах на GPU, но и на CPU и др.

                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                      Самое читаемое