2010-11-14 2 views
3

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

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

ответ

3

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

Как и OpenGL, OpenCL (в Linux и Windows) использует a wrapper library для делегирования между несколькими реализациями.

2

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

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

Смежные вопросы