Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
developpement:activites:integration:stream4wheezy [2013/03/22 16:24] sbarends créée |
developpement:activites:integration:stream4wheezy [2015/01/07 10:04] (Version actuelle) |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Stream SDK ATI sur une Debian Wheezy ====== | + | ====== Utilisation des librairies Stream sur une Debian Wheezy ====== |
- | ===== Pourquoi cette page ? ===== | + | <note important>Attention ! Le pilote 14.1 de AMD/ATI ne fonctionne pas sur les cartes AMD V5900</note> |
- | 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. | + | ===== Rétroportage de Stream sous Wheezy ===== |
- | 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. | + | La Debian Wheezy ne dispose que de la version 12.6 pour le pilote AMD/ATU et OpenCL et du pilote 304.88. Ces versions peuvent rapidement sembler insuffisantes pour ceux qui désirent utiliser les dernières fonctionnalités de OpenCL ou simplement utiliser les dernières cartes video AMD/ATI efficacement. |
- | ===== Installation du SDK 2.8 ===== | + | Voici la méthode permettant d'installer à partir d'un rétro-portage les paquets AMD/ATI ainsi que tout l'environnement associé. |
- | Contrairement à Nvidia, ATI utilise son pilote standard pour sa couche GPU. | + | <note warning>Pour une compilation dans SIDUS, ne pas oublier de monter le ''/proc''</note> |
+ | |||
+ | ==== Purge des paquets AMD/ATI originels ==== | ||
- | 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> | <code> | ||
- | # Pour le pilote "stable" | + | dpkg -l | egrep "(clinfo|amd-opencl|amd-libopencl|fglrx)" | awk '{ print $2 }' | xargs -I '{}' apt-get -y purge '{}' |
- | wget http://www2.ati.com/drivers/linux/amd-driver-installer-catalyst-13.1-linux-x86.x86_64.zip | + | dpkg -l | grep opencl | grep -v openclip | awk '{ print $2 }' | xargs -I '{}' apt-get -y purge '{}' |
- | # 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> | </code> | ||
- | ==== Installation du pilote ==== | + | ==== Préparation du système ==== |
- | Pour commencer, plus grand chose sinon que le pilote AMD/ATI utilise ''dkms'' et plus ''module-assistant'' :<code>apt-get install dkms | + | Il est nécessaire d'insérer les sources des paquets sid et expérimentaux pour disposer de la dernière version de FGLRX packagée comprenant tout l'environnement. |
- | # arret de GDM s'il est lancé | + | |
- | /etc/init.d/gdm stop | + | <code> |
+ | apt-get install -y pbuilder pciutils | ||
+ | [ $(grep sid /etc/apt/sources.list | wc -l) -gt 0 ] && echo "Already present" || echo "deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free" >> /etc/apt/sources.list | ||
+ | [ $(grep experimental /etc/apt/sources.list | wc -l) -gt 0 ] && echo "Already present" || echo "deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free" >> /etc/apt/sources.list | ||
+ | aptitude update | ||
</code> | </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> | + | ==== Rétroportage des composants Système ==== |
- | Le redémarrage semble nécessaire pour que le pilote ''radeon'' ne soit pas chargé. | + | <code> |
+ | mkdir -p /root/stream/debian | ||
+ | cd /root/stream | ||
+ | apt-get source glx-alternatives | ||
+ | apt-get build-dep glx-alternatives | ||
+ | cd glx-alternatives-* | ||
+ | debuild | ||
+ | cd .. | ||
+ | ls -1 *.deb | ||
+ | mv *.deb debian | ||
+ | </code> | ||
- | Puis, même lancement de l'installation du pilote, version 32 ou 64 bits :<code> | + | Les paquets créés sont les suivants : |
- | unzip amd-driver-installer-catalyst-13.1-linux-x86.x86_64.zip | + | <code> |
- | CC=/usr/bin/gcc-4.6 amd-driver-installer-catalyst-13.1-linux-x86.x86_64.run --force</code> | + | glx-alternative-fglrx_0.4.1_amd64.deb |
+ | glx-alternative-mesa_0.4.1_amd64.deb | ||
+ | glx-alternative-nvidia_0.4.1_amd64.deb | ||
+ | glx-diversions_0.4.1_amd64.deb | ||
+ | </code> | ||
+ | ==== Rétroportage des composants FGLRX ==== | ||
- | 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> | + | <code> |
- | unzip amd-driver-installer-catalyst-13.2-beta7-linux-x86.x86_64.zip | + | cd /root/stream |
- | CC=/usr/bin/gcc-4.6 amd-driver-installer-catalyst-13.2-beta7-linux-x86.x86_64.run --force</code> | + | apt-get source fglrx-driver |
+ | apt-get install ocl-icd-libopencl1 opencl-headers | ||
+ | apt-get -y build-dep fglrx-driver clinfo | ||
+ | </code> | ||
- | ==== Installation de la boîte à outils ==== | + | <code> |
- | + | cd /root/stream/fglrx-driver-*/ | |
- | 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> | + | debuild |
- | # Renommage d'un /opt/AMDAPP précédent | + | cd .. |
- | [ -d /opt/AMDAPP ] && mv /opt/AMDAPP /opt/AMDAPP.old | + | ls -1 *.deb |
- | mkdir /tmp/AMDSDK-2.8 | + | mv *.deb debian |
- | 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> | </code> | ||
- | ===== Installation de librairies scientifiques ===== | + | Les paquets créés sont les suivants : |
- | + | <code> | |
- | ==== Téléchargement des sources et des exemples ==== | + | amd-clinfo_14.6~betav1.0-1_amd64.deb |
- | + | amd-libopencl1_14.6~betav1.0-1_amd64.deb | |
- | Les éléments : | + | amd-opencl-dev_14.6~betav1.0-1_amd64.deb |
- | * http://developer.amd.com/wordpress/media/files/clAmdBlas1.8.291.tar.gz | + | amd-opencl-icd_14.6~betav1.0-1_amd64.deb |
- | * http://developer.amd.com/wordpress/media/files/LUDOpenCLBLAS-Linux.zip | + | fglrx-atieventsd_14.6~betav1.0-1_amd64.deb |
- | * http://developer.amd.com/wordpress/media/files/clAmdBlasREADME1.txt | + | fglrx-control_14.6~betav1.0-1_amd64.deb |
+ | fglrx-driver_14.6~betav1.0-1_amd64.deb | ||
+ | fglrx-modules-dkms_14.6~betav1.0-1_amd64.deb | ||
+ | fglrx-source_14.6~betav1.0-1_amd64.deb | ||
+ | libfglrx_14.6~betav1.0-1_amd64.deb | ||
+ | libfglrx-amdxvba1_14.6~betav1.0-1_amd64.deb | ||
+ | libgl1-fglrx-glx_14.6~betav1.0-1_amd64.deb | ||
+ | libxvbaw-dev_14.6~betav1.0-1_amd64.deb | ||
+ | </code> | ||
- | * 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 ==== | + | ==== Installation des composants FGLRX ==== |
<code> | <code> | ||
- | mkdir /tmp/CLAMD | + | cd /root/stream/debian |
- | cd /tmp/CLAMD | + | dpkg -i glx-diversions_*_amd64.deb glx-alternative-mesa_*_amd64.deb |
- | tar xzf /root/clAmdBlas1.8.291.tar.gz | + | dpkg -i glx-alternative-fglrx_*_amd64.deb |
- | ./install-clAmdBlas-1.8.291.sh | + | dpkg -i libfglrx_*_amd64.deb |
- | # Taper accept pour accepter les conditions d'utilisation | + | dpkg -i libgl1-fglrx-glx_*_amd64.deb |
- | # Taper <entree> pour valider l'installation par défaut dans /opt/clAmdBlas-1.8.291 | + | apt-get install xserver-xorg-core libaudit0 libxkbfile1 x11-xkb-utils xfonts-base xserver-common |
- | tar xzf /root/clAmdFft1.8.291.tar.gz | + | dpkg -i fglrx-modules-dkms_*_amd64.deb |
- | ./install-clAmdFft-1.8.291.sh | + | dpkg -i fglrx-driver_*_amd64.deb |
- | # Taper accept pour accepter les conditions d'utilisation | + | dpkg -i libfglrx-amdxvba1_*_amd64.deb |
- | # Taper <entree> pour valider l'installation par défaut dans /opt/clAmdFft-1.8.291 | + | dpkg -i libxvbaw-dev_*_amd64.deb |
- | cd /opt | + | dpkg -i fglrx-atieventsd_*_amd64.deb |
- | ln -s clAmdBlas-1.8.291 clAmdBlas | + | dpkg -i fglrx-control_*_amd64.deb |
- | 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> | </code> | ||
- | ==== Installation des librairies aparapi ==== | + | ==== Installation des composants Cuda & OpenCL ==== |
<code> | <code> | ||
- | cd /opt | + | cd /root/stream/debian |
- | mkdir aparapi | + | dpkg -i amd-clinfo_14.1~beta1.3-1_amd64.deb |
- | cd /opt/aparapi | + | dpkg -i amd-opencl-icd_14.1~beta1.3-1_amd64.deb |
- | wget http://aparapi.googlecode.com/files/Aparapi_2013_01_23_linux_x86_64.zip | + | |
- | unzip Aparapi_2013_01_23_linux_x86_64.zip | + | |
</code> | </code> | ||
- | ==== Compilation des exemples du SDK ==== | + | ==== Rétroportage du composant Python PyOpenCL ==== |
- | Ensuite, la compilation des exemples : ceux de CAL ont disparus, il reste ceux d'OpenCL :<code> | + | La dépendance sur une version plus récente de PyTools impose le rétroportage de cette dernière. |
- | 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 ==== | + | <code> |
- | + | cd /root/stream | |
- | Enfin, l'exécution des exemples OpenCL :<code> | + | apt-get source python-pytools |
- | # pour une architecture 64 bits | + | apt-get -y build-dep python-pytools |
- | cd /opt/AMDAPP/samples/opencl/bin/x86_64 | + | cd /root/stream/pytools-*/ |
- | # pour une architecture 32 bits | + | debuild |
- | cd /opt/AMDAPP/samples/opencl/bin/x86 | + | cd .. |
- | # lancer tous les exemples | + | ls -1 *.deb |
- | find . -executable ! -iname "*.cl" -exec {} \; | + | mv *.deb debian |
</code> | </code> | ||
- | |||
- | ==== Compilation des exemples des librairies ClBlas et ClFft ==== | ||
<code> | <code> | ||
- | apt-get install cmake | + | python3-pytools_2013.5.7-1_all.deb |
- | export AMDAPPSDKROOT=/opt/AMDAPP | + | python-pytools_2013.5.7-1_all.deb |
- | 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> | </code> | ||
- | |||
- | ==== Exécution des exemples des librairies ClBlas et ClFft ==== | ||
<code> | <code> | ||
+ | cd /root/stream/debian | ||
+ | dpkg -i python3-pytools_*.deb python-pytools_*.deb | ||
</code> | </code> | ||
- | ===== Installation de PyOpenCL ===== | ||
- | |||
- | Téléchargement des sources sur : http://mathema.tician.de/software/pyopencl | ||
- | ==== Préparation de la compilation ==== | + | <code> |
- | + | cd /root/stream/ | |
- | <code>apt-get -y install libboost-thread-dev python-setuptools | + | apt-get source pyopencl |
+ | apt-get -y build-dep pyopencl | ||
+ | cd /root/stream/pyopencl-*/ | ||
+ | debuild | ||
+ | cd .. | ||
+ | ls -1 *.deb | ||
+ | mv *.deb debian | ||
</code> | </code> | ||
- | <code>cd /opt | + | Les paquets créés sont les suivants : |
- | git clone http://git.tiker.net/trees/pyopencl.git | + | <code> |
- | cd pyopencl | + | python3-pyopencl_2013.2-1_amd64.deb |
- | git submodule init | + | python3-pyopencl-dbg_2013.2-1_amd64.deb |
- | git submodule update | + | python-pyopencl_2013.2-1_amd64.deb |
+ | python-pyopencl-dbg_2013.2-1_amd64.deb | ||
+ | python-pyopencl-doc_2013.2-1_all.deb | ||
</code> | </code> | ||
- | ==== Compilation et installation de PyOpenCL ==== | + | ==== Installation des composants Python ==== |
- | Il est supposé que le dossier d'installation du SDK ATI se trouve dans ''/opt/AMDAPP'' : | + | <code> |
- | <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 | + | cd /root/stream/debian |
- | CC=/usr/bin/gcc-4.7 CXX=/usr/bin/g++-4.7 make | + | # Les paquets suivants issus de AMD sont necessaires pour le premier et bien utile pour le second |
- | make install | + | dpkg -i python-pyopencl_*.deb python3-pyopencl_*.deb python-pyopencl-doc_*.deb |
- | python setup.py build | + | |
- | python setup.py install | + | |
</code> | </code> | ||
==== Exécution des exemples ==== | ==== 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> | <code> | ||
- | cd examples | + | cd /usr/share/doc/python-pyopencl-doc/examples |
- | python benchmark-all.py | + | python benchmark.py |
</code> | </code> | ||
- | Sur un ASUS X55U avec un processeur AMD E2-1800 équipée d'une carte Radeon HD 7340 :<code> | + | Sur une carte HD5850 (et un Dell Precision 5600):<code> |
- | Execution time of test without OpenCL: 0.287725925446 s | + | Execution time of test without OpenCL: 0.105705976486 s |
=============================================================== | =============================================================== | ||
Platform name: AMD Accelerated Parallel Processing | Platform name: AMD Accelerated Parallel Processing | ||
Platform profile: FULL_PROFILE | Platform profile: FULL_PROFILE | ||
Platform vendor: Advanced Micro Devices, Inc. | Platform vendor: Advanced Micro Devices, Inc. | ||
- | Platform version: OpenCL 1.2 AMD-APP (1113.2) | + | Platform version: OpenCL 1.2 AMD-APP (1411.4) |
--------------------------------------------------------------- | --------------------------------------------------------------- | ||
- | Device name: Loveland | + | Device name: Cypress |
Device type: GPU | Device type: GPU | ||
- | Device memory: 192 MB | + | Device memory: 512 MB |
- | Device max clock speed: 523 MHz | + | Device max clock speed: 725 MHz |
- | Device compute units: 2 | + | Device compute units: 18 |
Device max work group size: 256 | Device max work group size: 256 | ||
Device max work item sizes: [256, 256, 256] | Device max work item sizes: [256, 256, 256] | ||
Data points: 8388608 | Data points: 8388608 | ||
Workers: 256 | Workers: 256 | ||
- | Preferred work group size multiple: 32 | + | Preferred work group size multiple: 64 |
- | Execution time of test: 0.022523 s | + | Execution time of test: 0.0196992 s |
Results OK | Results OK | ||
=============================================================== | =============================================================== | ||
Ligne 214: | Ligne 194: | ||
Platform profile: FULL_PROFILE | Platform profile: FULL_PROFILE | ||
Platform vendor: Advanced Micro Devices, Inc. | Platform vendor: Advanced Micro Devices, Inc. | ||
- | Platform version: OpenCL 1.2 AMD-APP (1113.2) | + | Platform version: OpenCL 1.2 AMD-APP (1411.4) |
--------------------------------------------------------------- | --------------------------------------------------------------- | ||
- | Device name: AMD E2-1800 APU with Radeon(tm) HD Graphics | + | Device name: Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz |
Device type: CPU | Device type: CPU | ||
- | Device memory: 3547 MB | + | Device memory: 32201 MB |
- | Device max clock speed: 850 MHz | + | Device max clock speed: 2001 MHz |
- | Device compute units: 2 | + | Device compute units: 12 |
Device max work group size: 1024 | Device max work group size: 1024 | ||
Device max work item sizes: [1024, 1024, 1024] | Device max work item sizes: [1024, 1024, 1024] | ||
Ligne 226: | Ligne 206: | ||
Workers: 256 | Workers: 256 | ||
Preferred work group size multiple: 1 | Preferred work group size multiple: 1 | ||
- | Execution time of test: 0.0759986 s | + | Execution time of test: 0.0133983 s |
Results OK | Results OK | ||
</code> | </code> | ||
- | ===== Précautions d'usage ===== | + | Vous aurez noter que l'installation préalable d'un SDK AMD a permis de disposer d'un support OpenCL sur le processeur. |
- | + | ||
- | 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 ! | + | ====== Installation de PyFFT ====== |
- | ==== Connexion sans redirection X11 ==== | + | [[http://packages.python.org/pyfft/|PyFFT]] permet l'exploitation de PyCUDA et PyOpenCL pour effectuer tranquillement ses FFT directement à partir de ses scripts Python. |
- | De plus, lors d'une connexion distante, demander à ce que le X11 ne soit pas rediriger avec l'option ''-x'' associée au SSH. | + | Pour son installation, suivre la page : http://www.cbp.ens-lyon.fr/emmanuel.quemener/dokuwiki/doku.php?id=pyfft4squeeze |
- | --- //[[emmanuel.quemener@ens-lyon.fr|Emmanuel Quemener]] 2013/03/21 10:25// | + | --- //[[emmanuel.quemener@ens-lyon.fr|Emmanuel Quemener]] 2014/02/24 14:29// |