Ci-dessous, les différences entre deux révisions de la page.
developpement:activites:integration:streamfs4wheezy [2014/02/24 14:28] equemene [Stream SDK ATI sur une Debian Wheezy] |
developpement:activites:integration:streamfs4wheezy [2015/01/07 10:04] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | * [[developpement:activites:integration|Integration]] | ||
- | ====== Stream SDK ATI sur une Debian Wheezy à partir de 0 ====== | ||
- | |||
- | ===== Pourquoi cette page ? ===== | ||
- | |||
- | La distribution Wheezy intègre dans son archive //non-free// les pilotes propriétaires et les librairies permettant d'exploiter les cartes graphiques pour le calcul scientifique, mais seulement pour sa version 12.6 : les cartes graphiques récentes ne sont pas supportées. | ||
- | |||
- | Rappelons que l'API ATI.AMD dispose d'un avantage sur son concurrent Nvidia : l'intégration d'une librairie OpenCL permettant aussi bien d'utiliser son processeur généraliste que son processeur graphique. | ||
- | |||
- | ===== Installation du SDK 2.8 ===== | ||
- | |||
- | Contrairement à Nvidia, ATI utilise son pilote standard pour sa couche GPU. | ||
- | |||
- | Le lien suivant défini les différents paquets à installer : | ||
- | * le pilote : la version 13.1 pour [[http://www2.ati.com/drivers/linux/amd-driver-installer-catalyst-13.1-linux-x86.x86_64.zip|32 ou 64 bits]] | ||
- | * le pilote : la version 13.2 pour [[http://www2.ati.com/drivers/beta/amd-driver-installer-catalyst-13.2-beta7-linux-x86.x86_64.zip|32 ou 64 bits]] | ||
- | <code> | ||
- | # Pour le pilote "stable" | ||
- | wget http://www2.ati.com/drivers/linux/amd-driver-installer-catalyst-13.1-linux-x86.x86_64.zip | ||
- | # Pour le pilote "beta" : indispensable pour la HD 7340 à disposition | ||
- | wget http://www2.ati.com/drivers/beta/amd-driver-installer-catalyst-13.2-beta7-linux-x86.x86_64.zip | ||
- | </code> | ||
- | * la boîte à outils : la version 2.8 pour [[http://developer.amd.com/wordpress/media/files/AMD-APP-SDK-v2.8-lnx32.tgz|32 bits]] et [[http://developer.amd.com/wordpress/media/files/AMD-APP-SDK-v2.8-lnx64.tgz|64 bits]]. Pas de ''wget'' possible puisqu'une validation est indispensable ! | ||
- | * La version future de OpenCL 1.2 [[http://developer.amd.com/Downloads/OpenCL1.2-Static-Cplus-preview-drivers-Linux.tgz|OpenCL 1.2]] <code> | ||
- | http://developer.amd.com/Downloads/OpenCL1.2-Static-Cplus-preview-drivers-Linux.tgz | ||
- | </code> | ||
- | |||
- | ==== Installation du pilote ==== | ||
- | |||
- | Pour commencer, plus grand chose sinon que le pilote AMD/ATI utilise ''dkms'' et plus ''module-assistant'' :<code>apt-get install dkms | ||
- | # arret de GDM s'il est lancé | ||
- | /etc/init.d/gdm stop | ||
- | </code> | ||
- | |||
- | <note important>Le paquet ''scidavis'' installe ses plugins dans ''/usr/lib64'' ce qui ''casse'' le script d'installation des composants en les plaçant dans ''/usr/lib64'' au lieu de ''/usr/lib/x86_64-linux-gnu''.</note> | ||
- | |||
- | Le redémarrage semble nécessaire pour que le pilote ''radeon'' ne soit pas chargé. | ||
- | |||
- | Puis, même lancement de l'installation du pilote, version 32 ou 64 bits :<code> | ||
- | unzip amd-driver-installer-catalyst-13.1-linux-x86.x86_64.zip | ||
- | CC=/usr/bin/gcc-4.6 amd-driver-installer-catalyst-13.1-linux-x86.x86_64.run --force</code> | ||
- | |||
- | Au 1er mars 2013, le composant graphique intégré à l'AMD E2-1800 est un HD7340 : le pilote 13.1 ne fonctionne pas. Il faut donc passer sur le pilote beta, le 13.2-beta7 à cette date :<code> | ||
- | unzip amd-driver-installer-catalyst-13.2-beta7-linux-x86.x86_64.zip | ||
- | CC=/usr/bin/gcc-4.6 amd-driver-installer-catalyst-13.2-beta7-linux-x86.x86_64.run --force</code> | ||
- | |||
- | ==== Installation de la boîte à outils ==== | ||
- | |||
- | Pour le SDK, toujours aussi simple, par une simple décompression de l'archive à l'endroit idoine, soit ''/opt'' (il est supposé que l'archive se trouve dans ''/root'') : <code> | ||
- | # Renommage d'un /opt/AMDAPP précédent | ||
- | [ -d /opt/AMDAPP ] && mv /opt/AMDAPP /opt/AMDAPP.old | ||
- | mkdir /tmp/AMDSDK-2.8 | ||
- | cd /tmp/AMDSDK-2.8 | ||
- | # En 32 bits, décompresser l'archive | ||
- | tar xzf /root/AMD-APP-SDK-v2.8-lnx32.tgz | ||
- | # En 64 bits, décompresser l'archive | ||
- | tar xzf /root/AMD-APP-SDK-v2.8-lnx64.tgz | ||
- | # Lancer le script d'installation | ||
- | ./Install-AMD-APP.sh | ||
- | # Etablir un lien pour pointer de manière générique les pilotes | ||
- | cd /opt | ||
- | mv AMDAPP AMDAPP-2.8 | ||
- | ln -s AMDAPP-2.8 AMDAPP | ||
- | # Generation du ld | ||
- | ldconfig | ||
- | </code> | ||
- | |||
- | ===== Installation de librairies scientifiques ===== | ||
- | |||
- | ==== Téléchargement des sources et des exemples ==== | ||
- | |||
- | Les éléments : | ||
- | * http://developer.amd.com/wordpress/media/files/clAmdBlas1.8.291.tar.gz | ||
- | * http://developer.amd.com/wordpress/media/files/LUDOpenCLBLAS-Linux.zip | ||
- | * http://developer.amd.com/wordpress/media/files/clAmdBlasREADME1.txt | ||
- | |||
- | * http://developer.amd.com/wordpress/media/files/clAmdFft1.8.291.tar.gz | ||
- | * http://developer.amd.com/wordpress/media/files/clAmdFftREADME1.txt | ||
- | * http://developer.amd.com/wordpress/media/files/ObjectDetection-Linux.zip | ||
- | |||
- | ==== Installation des librairies BLAS et FFT ==== | ||
- | |||
- | <code> | ||
- | mkdir /tmp/CLAMD | ||
- | cd /tmp/CLAMD | ||
- | tar xzf /root/clAmdBlas1.8.291.tar.gz | ||
- | ./install-clAmdBlas-1.8.291.sh | ||
- | # Taper accept pour accepter les conditions d'utilisation | ||
- | # Taper <entree> pour valider l'installation par défaut dans /opt/clAmdBlas-1.8.291 | ||
- | tar xzf /root/clAmdFft1.8.291.tar.gz | ||
- | ./install-clAmdFft-1.8.291.sh | ||
- | # Taper accept pour accepter les conditions d'utilisation | ||
- | # Taper <entree> pour valider l'installation par défaut dans /opt/clAmdFft-1.8.291 | ||
- | cd /opt | ||
- | ln -s clAmdBlas-1.8.291 clAmdBlas | ||
- | ln -s clAmdFft-1.8.291 clAmdFft | ||
- | # | ||
- | chown -R root.root /opt/clAmdBlas /opt/clAmdFft | ||
- | # Pour une architecture 64 bits | ||
- | echo -e "/opt/clAmdBlas/lib64\n/opt/clAmdFft/lib64" > /etc/ld.so.conf.d/clAmd.conf | ||
- | # Pour une architecture 32 bits | ||
- | echo -e "/opt/clAmdBlas/lib32\n/opt/clAmdFft/lib32" >> /etc/ld.so.conf.d/clAmd.conf | ||
- | # | ||
- | ldconfig | ||
- | </code> | ||
- | |||
- | ==== Installation des librairies aparapi ==== | ||
- | |||
- | <code> | ||
- | cd /opt | ||
- | mkdir aparapi | ||
- | cd /opt/aparapi | ||
- | wget http://aparapi.googlecode.com/files/Aparapi_2013_01_23_linux_x86_64.zip | ||
- | unzip Aparapi_2013_01_23_linux_x86_64.zip | ||
- | </code> | ||
- | |||
- | ==== Compilation des exemples du SDK ==== | ||
- | |||
- | Ensuite, la compilation des exemples : ceux de CAL ont disparus, il reste ceux d'OpenCL :<code> | ||
- | apt-get -y install libxi-dev libxmu-dev freeglut3-dev | ||
- | # Cet export de variable est indispensable pour la compilation correcte des exemples parapi | ||
- | export LIBAPARAPI=/opt/aparapi/ | ||
- | cd /opt/AMDAPP/samples | ||
- | make | ||
- | </code> | ||
- | |||
- | ==== Exécution des exemples du SDK ==== | ||
- | |||
- | Enfin, l'exécution des exemples OpenCL :<code> | ||
- | # pour une architecture 64 bits | ||
- | cd /opt/AMDAPP/samples/opencl/bin/x86_64 | ||
- | # pour une architecture 32 bits | ||
- | cd /opt/AMDAPP/samples/opencl/bin/x86 | ||
- | # lancer tous les exemples | ||
- | find . -executable ! -iname "*.cl" -exec {} \; | ||
- | </code> | ||
- | |||
- | ==== Compilation des exemples des librairies ClBlas et ClFft ==== | ||
- | |||
- | <code> | ||
- | apt-get install cmake | ||
- | export AMDAPPSDKROOT=/opt/AMDAPP | ||
- | cd /opt/clAmdBlas/samples | ||
- | cmake . | ||
- | make | ||
- | cd /opt/clAmdFft/samples | ||
- | # Ces gros nuls n'ont pas verifie leur CMake : il plante ! | ||
- | sed -i "s/\.\.\/\.\.\/\.\.\\//common//g" CMakeLists.txt | ||
- | # (le cmake pointe pour quelques sources au mauvais endroit !) | ||
- | cmake . | ||
- | make | ||
- | </code> | ||
- | |||
- | ==== Exécution des exemples des librairies ClBlas et ClFft ==== | ||
- | |||
- | <code> | ||
- | |||
- | </code> | ||
- | ===== Installation de PyOpenCL ===== | ||
- | |||
- | Téléchargement des sources sur : http://mathema.tician.de/software/pyopencl | ||
- | |||
- | ==== Préparation de la compilation ==== | ||
- | |||
- | <code>apt-get -y install libboost-thread-dev python-setuptools | ||
- | </code> | ||
- | |||
- | <code>cd /opt | ||
- | git clone http://git.tiker.net/trees/pyopencl.git | ||
- | cd pyopencl | ||
- | git submodule init | ||
- | git submodule update | ||
- | </code> | ||
- | |||
- | ==== Compilation et installation de PyOpenCL ==== | ||
- | |||
- | Il est supposé que le dossier d'installation du SDK ATI se trouve dans ''/opt/AMDAPP'' : | ||
- | <code>./configure.py --boost-inc-dir=/usr/include --boost-lib-dir=/usr/lib --boost-python-libname=boost_python-py27 --cl-inc-dir=/opt/AMDAPP/include --cl-lib-dir=/opt/AMDAPP/lib/x86_64 --boost-compiler=/usr/bin/g++-4.7 | ||
- | CC=/usr/bin/gcc-4.7 CXX=/usr/bin/g++-4.7 make | ||
- | make install | ||
- | python setup.py build | ||
- | python setup.py install | ||
- | </code> | ||
- | |||
- | ==== Exécution des exemples ==== | ||
- | |||
- | Pour l'exemple standard, très intéressant parce que permettant de visualiser autant processeur graphique que générique : | ||
- | <code> | ||
- | cd examples | ||
- | python benchmark-all.py | ||
- | </code> | ||
- | |||
- | Sur un ASUS X55U avec un processeur AMD E2-1800 équipée d'une carte Radeon HD 7340 :<code> | ||
- | Execution time of test without OpenCL: 0.287725925446 s | ||
- | =============================================================== | ||
- | Platform name: AMD Accelerated Parallel Processing | ||
- | Platform profile: FULL_PROFILE | ||
- | Platform vendor: Advanced Micro Devices, Inc. | ||
- | Platform version: OpenCL 1.2 AMD-APP (1113.2) | ||
- | --------------------------------------------------------------- | ||
- | Device name: Loveland | ||
- | Device type: GPU | ||
- | Device memory: 192 MB | ||
- | Device max clock speed: 523 MHz | ||
- | Device compute units: 2 | ||
- | Device max work group size: 256 | ||
- | Device max work item sizes: [256, 256, 256] | ||
- | Data points: 8388608 | ||
- | Workers: 256 | ||
- | Preferred work group size multiple: 32 | ||
- | Execution time of test: 0.022523 s | ||
- | Results OK | ||
- | =============================================================== | ||
- | Platform name: AMD Accelerated Parallel Processing | ||
- | Platform profile: FULL_PROFILE | ||
- | Platform vendor: Advanced Micro Devices, Inc. | ||
- | Platform version: OpenCL 1.2 AMD-APP (1113.2) | ||
- | --------------------------------------------------------------- | ||
- | Device name: AMD E2-1800 APU with Radeon(tm) HD Graphics | ||
- | Device type: CPU | ||
- | Device memory: 3547 MB | ||
- | Device max clock speed: 850 MHz | ||
- | Device compute units: 2 | ||
- | Device max work group size: 1024 | ||
- | Device max work item sizes: [1024, 1024, 1024] | ||
- | Data points: 8388608 | ||
- | Workers: 256 | ||
- | Preferred work group size multiple: 1 | ||
- | Execution time of test: 0.0759986 s | ||
- | Results OK | ||
- | </code> | ||
- | |||
- | ===== Précautions d'usage ===== | ||
- | |||
- | Pour une utilisation du GPU à distance, il est nécessaire de procéder à quelques modifications de son système, sans quoi, l'usage du GPU n'est pas possible | ||
- | |||
- | ==== Modification du GDM3 ==== | ||
- | |||
- | A la fin de ''/etc/gdm3/Init/Default'', avant le ''exit 0'', rajouter les deux lignes suivantes :<code> | ||
- | xhost + | ||
- | chmod uog+rw /dev/dri/card* | ||
- | </code> | ||
- | |||
- | Les talibans de la sécurité me diront que c'est permettre à quiconque d'afficher ce qu'il veut sur l'écran, malheureusement il n'y a pas le choix ! | ||
- | |||
- | ==== Connexion sans redirection X11 ==== | ||
- | |||
- | De plus, lors d'une connexion distante, demander à ce que le X11 ne soit pas rediriger avec l'option ''-x'' associée au SSH. | ||
- | |||
- | --- //[[emmanuel.quemener@ens-lyon.fr|Emmanuel Quemener]] 2013/03/21 10:25// |