web-dev-qa-db-fra.com

Compilation d'un programme OpenCL à l'aide d'un fichier CL / cl.h

J'ai un échantillon "Hello, World!" code du net et je veux l'exécuter sur le GPU sur le serveur de mon université. Quand je tape "gcc main.c", il répond:

CL/cl.h: aucun fichier ou répertoire de ce type

Que devrais-je faire? Comment puis-je avoir ce fichier d'en-tête?

18
sandra

Assurez-vous que la boîte à outils appropriée est installée.

Cela dépend de ce que vous prévoyez d'exécuter votre code. Si vous avez une carte NVidia, vous devez télécharger et installer CUDA-toolkit qui contient également les binaires et les bibliothèques nécessaires pour opencl.

Utilisez-vous Linux? Si vous pensez que vous avez déjà installé OpenCL, il se peut qu'il se trouve à un emplacement différent du standard/usr/include. Tapez ce qui suit et voyez quels résultats vous obtenez:

find / -iname cl.h 2>/dev/null

Sur mon ordinateur portable par exemple, l'en-tête se trouve à /usr/local/cuda-5.5/include. Si c'est le cas si votre fichier d'en-tête se trouve à un emplacement différent, il vous suffit de spécifier le chemin lors de la complication

g++ -I/usr/local/cuda-5.5/include main.c -lOpenCL

Vous pouvez également créer un lien symbolique à partir du chemin d'accès vers /usr/include:

ln -s /usr/local/cuda-5.5/include/CL /usr/include
19
Michael Aquilina

Utilisez-vous bunt ou Debian distro? Ensuite, vous pouvez utiliser ce package pour résoudre le problème avec le fichier d'en-tête manquant:

apt-get install opencl-headers

Vous devez installer la bibliothèque opencl pour résoudre les problèmes de liaison en utilisant ce package Debian et bunt :

apt-get install ocl-icd-libopencl1

Vous pouvez également utiliser ces bibliothèques non libres : nvidia-libopencl1 (Debian) ou nvidia-libopencl1-xx (Ubuntu).

14
OscarGarcia