Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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 SIDUSne 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 $}' | 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.+
-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 -*.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.+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 -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(tmHD Graphics+Device name: Intel(RXeon(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 pluslors d'une connexion distante, demander à ce que le X11 ne soit pas rediriger avec l'​option ''​-x''​ associée au SSH.+Pour son installationsuivre 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//
developpement/activites/integration/stream4wheezy.1363965852.txt.gz · Dernière modification: 2015/01/07 10:04 (modification externe)