
Eu tenho uma máquina bi Xeon com Ubuntu 10.10 e uma placa gráfica Nvidia GTX 480 e gostaria de usar OpenCL na CPU e na GPU.
Instalei o driver Nvidia mais recente (nvidia-current) com apt-get e baixei e instalei o CUDA Toolkit (3.2) mais recente da página da Nvidia.
MAS isso me permite executar código OpenCL apenas na GPU Nvidia e NÃO na CPU.
Então li alguns artigos na internet dizendo que o ATI SDK é capaz de executar código OpenCL na CPU.
Instalei a versão mais recente dos drivers ATI e tentei compilar o SDK.
Consegui então executar código na CPU, mas não mais na GPU.
Existe alguma maneira de executar o código OpenCL na GPU Nvidia e na CPU Xeon?
Responder1
A implementação Nvidia CUDA e ATI Stream OpenCL suporta a extensão Khronos ICD, portanto, quando você chamar clGetPlatformIDs, você obterá duas plataformas diferentes e, portanto, poderá consultar dispositivos CPU/GPU nessas plataformas e, claro, a plataforma ATI retornará a CPU dispositivo e plataforma Nvidia retornarão o dispositivo GPU.
Então você pode criar CommandQueues nesses dispositivos e iniciar seu kernel. É claro que isso significa que não é trivial compartilhar a tarefa entre GPU e CPU, mas pelo menos ter um botão em seu aplicativo que alterna de CPU para GPU seria muito fácil de fazer.