2012-03-23 3 views
3

Может ли кто-нибудь сказать, возможно ли после компиляции получить код OpenCL, работающий как с картами AMD, так и с Nvidia, и какова общая процедура для этого? Должен ли я установить оба OpenCL SDK (AMD/Nvidia) и с конструкцией «if» сделать разный код для каждого случая (устройство AMD или устройство Nvidia)? Если бы вы могли просто прояснить ситуацию, некоторые заголовки оценят ее. Спасибо.Код OpenCL для работы с AMD/Nvidia

ответ

4

Да, это возможно, это цель OpenCL над CUDA (которая работает только с оборудованием NVIDIA). В основном вы делаете свои ядра для написания кода на C99, который затем будет скомпилирован в промежуточном «независимом от производителя» коде. Этот последний код будет интерпретироваться вашей картой (AMD или Nvidia) во время выполнения. Как правило, нет причин, по которым вам следует писать разные коды, не используя другой SDK (но хорошо ... Я на Max OS 10.7, который, возможно, отличается от другой среды)

+0

Спасибо Flavien, поэтому, если я скомпилирую образец, используя Например, OpenCL и AMD sdk должны работать с картой Nvidia? Или я что-то упущу? – Maiss

+0

Библиотеки AMD BLAS и FFT также работают на устройствах NVIDIA, также как и библиотеки ArrayFire OpenCL. Очень удобно! – arrayfire

+2

Если вы ищете производительность, вам может понадобиться выполнить настройку конкретного поставщика, для AMD вы можете запустить ядро ​​openCL через Kernel Analyzer и проверить полученный промежуточный язык, а также код ISA, который будет работать на оборудовании. – kiranputtur

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