Могу ли я ориентироваться на процессор через OpenCL при разработке с CUDA инструментарием OpenCL SDK? - PullRequest
3 голосов
/ 14 ноября 2010

Я новичок в понятиях GPGPU, и последние пару месяцев я медленно изучал различия между CUDA и OPENCL. Я понял, что спецификация OpenCL позволяет программисту ориентироваться на вычислительное устройство (то есть на архитектуру GPU / CPU), но подход CUDA C не имеет такой абстракции, поскольку он всегда нацелен на совместимую архитектуру Nvidia GPU. Поэтому мне было интересно, если я напишу ядро ​​OPENCL, используя реализацию Nvidia в среде CUDA, могу ли я по-прежнему ориентироваться на процессор? Насколько я понимаю, среда AMD Stream позволяет вам делать это с их реализацией OpenCL.

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 14 ноября 2010

Вы по-прежнему можете ориентироваться на ЦП в системе с установленным OpenCL на базе графического процессора Nvidia, если вы это имеете в виду. Реализация OpenCL от Nvidia поддерживает только графические процессоры Nvidia, но реализация AMD, которая может быть установлена ​​вместе с NVidia, также поддерживает процессоры.

Подобно OpenGL, OpenCL (в Linux и Windows) использует библиотеку-оболочку для делегирования между несколькими реализациями.

2 голосов
/ 14 ноября 2010

NVIDIA OpenCL, ATI OpenCL, AMD OpenCL (CPU) - это всего лишь три разные реализации одного и того же API: OpenCL.Это означает, что пока вы кодируете в OpenCL и придерживаетесь спецификации, ваш исполняемый файл должен работать должным образом на любой платформе / оборудовании, поддерживающем OpenCL, будь то GPU или CPU.

В вашем случае, разработка с NVIDIAOpenCL с использованием CUDA sdk не должен препятствовать запуску вашего приложения в других средах, таких как AMD Stream или что-либо еще (например, OpenCL на Power ), если на целевой платформе установлен драйвер, совместимый с OpenCL.

...