Je me suis rendu compte après avoir passé plus de 16 heures à faire fonctionner OpenCL sur Windows et Linux, que OpenCL sur ubuntu 16.04, CPU Intel Sandy Bridge est le plus proche pour le faire fonctionner.
Ce qui n'a pas fonctionné pour moi, c'est l'installation des pilotes et la configuration, après quoi j'ai essayé à d'autres endroits. Oui, les versions étaient différentes. J'en ai tenu compte dans la mesure du possible. Mais, c'était la première fois que j'installais des bibliothèques et que j'établissais des liens. Donc, j'espère que cela aidera les débutants comme moi. Je n'ai couvert que la partie concernant les GPU Intel.
Faire fonctionner OpenCL
sudo apt install clinfo ocl-icd-opencl-dev opencl-headers
Vérifiez la sortie de clinfo
clinfo | grep "GPU"
pour vérifier si le GPU est inclus. S'il n'y a pas de ligne comme
Device Type GPU
dans la sortie, alors, le GPU ne supporte pas encore OpenCL. Dans ce cas, essayez d'installer beignet-opencl-icd, tabla-opencl-icd, etc - peut-être, un à la fois. Continuez à vérifier la sortie de clinfo
après chaque. S'il comprend la ligne ci-dessus, vous avez terminé.
Installation des pilotes Intel OpenCL
Si cela ne fonctionne pas, installez les pilotes opencl d'intel à partir de https://software.intel.com/en-us/articles/opencl-drivers#latest_linux_driver . L'installation automatique demande une tonne de temps et d'espace. Il existe cependant une autre méthode. Dézippez l'archive. Installez alien, si vous ne l'avez pas déjà fait : sudo apt install alien
cd
dans le dossier dézippé, et exécutez
sudo alien -i *.rpm
Vérifiez à nouveau la sortie de "clinfo". Il devrait y avoir un GPU. clinfo | grep "GPU"
À ce stade, vous avez une implémentation fonctionnelle d'OpenCL.
Cependant, en essayant des exemples (de これ ), j'ai constaté que la plupart des exemples fonctionnent avec les bibliothèques d'Intel (voir ci-dessous), certains ne fonctionnent pas avec les bibliothèques installées avec la distribution (installées ci-dessus). (Je suppose que c'est à cause des différentes versions d'openCL concernées).
Installer le SDK OpenCL d'Intel
Installez le SDK Intel OpenCL pour Linux (après vous être enregistré gratuitement) avec eux, à partir d'ici Intel OpenCL SDK pour Linux . Il suffit d'exécuter l'installateur script - pas besoin de travailler sur les parties de le faire fonctionner avec Eclipse et tout. Vous devrez peut-être
sudo apt install dkms
A ce stade, vous devriez avoir tout préparé.
Si vous êtes un novice (comme moi)
Connaître le processus de compilation des programmes C : d'abord, les fichiers objets sont générés, puis ceux-ci sont liés. Voir https://stackoverflow.com/questions/31179452/what-exactly-is-in-a-o-a-so-file .
Dans un IDE (je ne sais pas pour le terminal), il y a deux parties à traiter avec les bibliothèques. La première consiste à inclure le chemin vers les fichiers d'en-tête. La seconde consiste à inclure les fichiers de la bibliothèque dans le projet.
J'utilise des CodeBlocks. Donc, la raison pour laquelle Linux est aimé est que la toute première commande de cette réponse a envoyé les fichiers à l'endroit prévu. Les fichiers d'en-tête sont dans le répertoire /usr/include, sous le dossier 'CL'. La bibliothèque (dans mon cas) est dans le répertoire /usr/lib/x86_64-linux-gnu, nommée 'libOpenCL.so'. Vous n'avez rien d'autre à faire pour les utiliser. Vous pouvez simplement commencer à coder -
#include<CL/cl.h>
Dans le cas du SDK Intel OpenCL, les fichiers d'en-tête se trouvent sous /opt/intel/opencl-sdk/include, tandis que les fichiers de bibliothèque se trouvent sous /opt/intel/opencl-sdk/include. Après l'installation, vérifiez le contenu de /opt/intel/opencl pour le contenu. Celui-ci contient également les bibliothèques. Cependant, l'un des fichiers de bibliothèque m'a donné une erreur de syntaxe (libclang.so). Le SDK Intel OpenCL doit être téléchargé principalement pour les fichiers d'en-tête dans : /opt/intel/opencl-sdk/lib64 - seulement les .so. (J'ai trouvé le fichier libclang.so qui donne une erreur de syntaxe. Vérifiez en exécutant le programme).
En cas de CodeBlocks pour utiliser ces fichiers d'Intel - ceux qui ne sont pas par défaut -. Créez un nouveau projet. Faites un clic droit sur le projet dans la sous-fenêtre du gestionnaire. Allez à "Build options". Sélectionnez le nom du projet dans le panneau de gauche - ainsi, les paramètres seront appliqués pour les versions Release et Debug. Dans Linker settings -> link libraries, cliquez sur "Add". Ici, ajoutez les bibliothèques (pas les fichiers d'en-tête ; tous les .so) : à /opt/intel/opencl-sdk/lib64. Dans l'onglet Search directories, sous 'compiler', ajoutez /opt/intel/opencl/include (ou l'endroit où se trouvent vos fichiers d'en-tête).
En cas de Eclipse D'abord, installez le CDT. Ensuite, après avoir créé le projet, sous Project -> Properties -> C/C++ Build -> Settings -> Tool Settings, (1) sous GCC C++ Compiler, includes, ajouter le répertoire des fichiers header. (2) sous GCC C++ Linker, dans la section Libraries, ajouter OpenCL et dans la partie inférieure, dans la section Library Path, ajouter le chemin. Dans mon cas, pour que cela fonctionne, j'ai demandé, /opt/intel/opencl/include dans la première partie et /opt/intel/opencl/SDK/lib64 dans la deuxième partie. Le défaut comme dans le cas de Codeblocks n'a pas fonctionné. Peut-être est-ce dû aux versions, ou je n'ai pas essayé correctement - Eclipse est nouveau pour moi.
C'est fait.
Ce qui suit devrait s'exécuter et se compiler : https://github.com/bgaster/opencl-book-samples/blob/master/src/Chapter_3/OpenCLInfo/OpenCLInfo.cpp
Crédits : Internet