4 votes

Installer OpenCL sur ubuntu 16.04, ordinateur portable Dell Inspiron Intel i5 7ème génération

J'ai récemment acheté un ordinateur portable Dell Inspiron série 3000 avec un processeur Intel i5 de 7ème génération. La machine était livrée préchargée avec Windows 8 mais étant un fidèle d'Ubuntu, j'ai installé Ubuntu 16.04 dessus.

Je dois travailler avec OpenCL sur mon ordinateur portable et j'ai suivi la procédure décrite dans ce fil de discussion ( OpenCL sur ubuntu 16.04, CPU Intel Sandy Bridge ) et j'ai installé PyOpenCL (d'ailleurs, ce fil a parfaitement fonctionné pour ma station de travail au travail où j'ai une machine Xeon)

J'ai utilisé le script Python suivant ( https://github.com/benshope/PyOpenCL-Tutorial/blob/master/010_introspection.py ) pour obtenir ce résultat sur mon ordinateur portable :

============================================================
OpenCL Platforms and Devices
============================================================
Platform - Name:  Intel Gen OCL Driver
Platform - Vendor:  Intel
Platform - Version:  OpenCL 1.2 beignet 1.1.1
Platform - Profile:  FULL_PROFILE
beignet-opencl-icd: no supported GPU found, this is probably the wrong opencl-icd package for this hardware
(If you have multiple ICDs installed and OpenCL works, you can ignore this message)

Le même script sur mon poste de travail me donne :

============================================================
Platform - Name:  Intel(R) OpenCL
Platform - Vendor:  Intel(R) Corporation
Platform - Version:  OpenCL 2.0 LINUX
Platform - Profile:  FULL_PROFILE
--------------------------------------------------------
Device - Name:  Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz
Device - Type:  CPU
Device - Max Clock Speed:  2200 Mhz
Device - Compute Units:  24
Device - Local Memory:  32 KB
Device - Constant Memory:  128 KB
Device - Global Memory: 31 GB
Device - Max Buffer/Image Size: 8013 MB
Device - Max Work Group Size: 8192

lspci me donne :

lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation Device 5916 (rev 02)

(Dans un autre ordre d'idées, j'ai également installé un pilote graphique sur mon ordinateur portable, ce qui n'était pas le cas lorsque j'ai essayé d'installer OpenCL pour la première fois).

En fait, je ne parviens pas à déterminer quel format OpenCL conviendrait à mon matériel.

Tout conseil serait le bienvenu :)

4voto

steve Points 1

Ok, j'ai compris. De plus, ce n'était PAS de la science-friction :-)

Le lien ( OpenCL sur ubuntu 16.04, CPU Intel Sandy Bridge ) que j'ai suivi plus tôt était parfait puisque je travaillais sur une machine Xeon. Cela n'aurait pas fonctionné (grosse surprise !) sur mon ordinateur portable, qui n'est évidemment pas une machine Xeon.

J'avais besoin d'utiliser le sdk pour linux qui est disponible après avoir rempli le formulaire. Une fois le formulaire rempli, vous êtes redirigé vers une page où vous pouvez choisir le produit et la version et télécharger soit un fichier .gz soit un fichier .tgz. Le fichier .tgz est destiné à la version Yocto OS mais pendant l'installation vous pouvez l'exécuter sans aucune perte de généralité pour Ubuntu 16.04.

L'installation est assez simple puisqu'il y a un exécutable install.sh Shell Shell extrêmement pratique à utiliser.

Les étapes générales à suivre sont les suivantes :

  1. extraire le dossier

    tar -xzvf intel_sdk_for_opencl_2017_yocto_7.0.0.2567_x64.tgz
  2. exécuter le Shell Shell

    ./install.sh
  3. suivez les instructions

La sortie du script Python montre alors :

============================================================
OpenCL Platforms and Devices
============================================================
Platform - Name:  Intel Gen OCL Driver
Platform - Vendor:  Intel
Platform - Version:  OpenCL 1.2 beignet 1.1.1
Platform - Profile:  FULL_PROFILE
beignet-opencl-icd: no supported GPU found, this is probably the wrong opencl-icd package for this hardware
(If you have multiple ICDs installed and OpenCL works, you can ignore this message)
============================================================
Platform - Name:  Experimental OpenCL 2.1 CPU Only Platform
Platform - Vendor:  Intel(R) Corporation
Platform - Version:  OpenCL 2.1 LINUX
Platform - Profile:  FULL_PROFILE
    --------------------------------------------------------
    Device - Name:  Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz
    Device - Type:  CPU
    Device - Max Clock Speed:  2500 Mhz
    Device - Compute Units:  4
    Device - Local Memory:  32 KB
    Device - Constant Memory:  128 KB
    Device - Global Memory: 8 GB
    Device - Max Buffer/Image Size: 1962 MB
    Device - Max Work Group Size: 8192
============================================================
Platform - Name:  Intel(R) OpenCL
Platform - Vendor:  Intel(R) Corporation
Platform - Version:  OpenCL 2.0 
Platform - Profile:  FULL_PROFILE
    --------------------------------------------------------
    Device - Name:  Intel(R) HD Graphics
    Device - Type:  GPU
    Device - Max Clock Speed:  1000 Mhz
    Device - Compute Units:  23
    Device - Local Memory:  64 KB
    Device - Constant Memory:  3209904 KB
    Device - Global Memory: 6 GB
    Device - Max Buffer/Image Size: 3135 MB
    Device - Max Work Group Size: 256
    --------------------------------------------------------
    Device - Name:  Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz
    Device - Type:  CPU
    Device - Max Clock Speed:  2500 Mhz
    Device - Compute Units:  4
    Device - Local Memory:  32 KB
    Device - Constant Memory:  128 KB
    Device - Global Memory: 8 GB
    Device - Max Buffer/Image Size: 1962 MB
    Device - Max Work Group Size: 8192

3voto

digikar Points 171

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X