Программирование OpenCL на CPU и GPU с картами Nvidia?

Программирование OpenCL на CPU и GPU с картами Nvidia?

У меня есть компьютер с двумя процессорами Xeon, Ubuntu 10.10 и видеокартой Nvidia GTX 480, и я хотел бы использовать OpenCL на CPU и GPU.

Я установил последнюю версию драйвера Nvidia (nvidia-current) с помощью apt-get, а также загрузил и установил последнюю версию CUDA Toolkit (3.2) со страницы Nvidia.

НО это позволяет мне запускать код OpenCL только на графическом процессоре Nvidia, а НЕ на центральном процессоре.

Затем я прочитал несколько статей в Интернете, в которых говорилось, что ATI SDK способен запускать код OpenCL на процессоре.

Я установил последнюю версию драйверов ATI, затем попытался скомпилировать SDK.

После этого я смог запустить код на центральном процессоре, но уже не на графическом процессоре.

Есть ли способ запустить код OpenCL как на графическом процессоре Nvidia, так и на центральном процессоре Xeon?

решение1

Реализации Nvidia CUDA и ATI Stream OpenCL поддерживают расширение Khronos ICD, поэтому при вызове clGetPlatformIDs вы получите две разные платформы, и, следовательно, вы можете запросить устройства CPU/GPU на этих платформах, и, конечно же, платформа ATI вернет устройство CPU, а платформа Nvidia вернет устройство GPU.

Затем вы можете создать CommandQueues на этих устройствах и запустить свое ядро. Конечно, это означает, что разделить задачу между GPU и CPU не так уж и просто, но по крайней мере иметь кнопку в вашем приложении, которая переключается с CPU на GPU, было бы довольно просто.

Связанный контент