Programação OpenCL em CPU e GPU com placas Nvidia?

Programação OpenCL em CPU e GPU com placas Nvidia?

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.

informação relacionada