web-dev-qa-db-fra.com

Programmation OpenCL sur CPU et GPU avec des cartes Nvidia?

J'ai une machine bi Xeon avec Ubuntu 10.10 et une carte graphique Nvidia GTX 480 et j'aimerais utiliser OpenCL sur le processeur et le processeur graphique.

J'ai installé le dernier pilote Nvidia (nvidia-current) avec apt-get et j'ai téléchargé et installé la dernière version de CUDA Toolkit (3.2) à partir de la page Nvidia.

MAIS cela ne me permet d’exécuter que du code OpenCL sur le GPU Nvidia et NON sur le CPU.

J'ai ensuite lu sur Internet des articles disant que le SDK ATI était capable d'exécuter du code OpenCL sur le processeur.

J'ai installé la dernière version des pilotes ATI, puis essayé de compiler le SDK.

J'ai alors pu exécuter du code sur le processeur, mais plus sur le GPU.

Existe-t-il un moyen d'exécuter du code OpenCL à la fois sur le GPU Nvidia et sur le processeur Xeon?

5
Studer

Nvidia CUDA et ATI Stream OpenCL implémentent l’extension Khronos ICD. Ainsi, lorsque vous appelez clGetPlatformIDs, vous obtenez deux plates-formes différentes. Vous pouvez donc interroger les périphériques CPU/GPU sur ces plates-formes et bien sûr, la plate-forme ATI renvoie le processeur. périphérique et la plate-forme Nvidia renverront le périphérique GPU.

Ensuite, vous pouvez créer des CommandQueues sur ces périphériques et démarrer votre noyau. Bien sûr, cela signifie qu'il n'est pas facile de partager la tâche entre le processeur graphique et le processeur, mais au moins un bouton dans votre application permettant de passer d'un processeur à un processeur graphique serait relativement simple.

2
mhr3