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

5

Eu tenho uma máquina bi Xeon com o Ubuntu 10.10 e uma placa de vídeo Nvidia GTX 480 e gostaria de usar o OpenCL na CPU e na GPU.

Instalei o driver mais recente da Nvidia (nvidia-current) com o apt-get e baixei e instalei o Kit de ferramentas CUDA mais recente (3.2) da página da Nvidia.

MAS isso me permite apenas executar código OpenCL na GPU da Nvidia e NÃO na CPU.

Eu então li alguns artigos na internet dizendo que o SDK da ATI é capaz de executar código OpenCL na CPU.

Instalei a versão mais recente dos drivers da ATI e tentei compilar o SDK.

Eu consegui executar código na CPU, mas não na GPU mais.

Existe alguma maneira de executar código OpenCL tanto na GPU Nvidia quanto na CPU Xeon?

    
por Studer 30.11.2010 / 17:02

1 resposta

2

A implementação Nvidia CUDA e ATI Stream OpenCL suportam a extensão Khronos ICD, portanto, quando você chamar clGetPlatformIDs, você terá duas plataformas diferentes e, portanto, poderá consultar dispositivos CPU / GPU nessas plataformas e, claro, a plataforma ATI retornar o dispositivo da CPU e a plataforma Nvidia retornará o dispositivo da GPU.

Em seguida, 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 no seu aplicativo que muda de CPU para GPU seria bastante fácil de fazer.

    
por mhr3 16.12.2010 / 13:18