Utilisation des librairies Stream sur une Debian Wheezy

Attention ! Le pilote 14.1 de AMD/ATI ne fonctionne pas sur les cartes AMD V5900

Rétroportage de Stream sous Wheezy

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.

Voici la méthode permettant d'installer à partir d'un rétro-portage les paquets AMD/ATI ainsi que tout l'environnement associé.

Pour une compilation dans SIDUS, ne pas oublier de monter le /proc

Purge des paquets AMD/ATI originels

dpkg -l | egrep "(clinfo|amd-opencl|amd-libopencl|fglrx)" | awk '{ print $2 }' | xargs -I '{}' apt-get -y purge '{}'
dpkg -l | grep opencl | grep -v openclip | awk '{ print $2 }' | xargs -I '{}' apt-get -y purge '{}'

Préparation du système

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.

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

Rétroportage des composants Système

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

Les paquets créés sont les suivants :

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

Rétroportage des composants FGLRX

cd /root/stream
apt-get source fglrx-driver 
apt-get install ocl-icd-libopencl1 opencl-headers
apt-get -y build-dep fglrx-driver clinfo
cd /root/stream/fglrx-driver-*/
debuild
cd ..
ls -1 *.deb
mv *.deb debian

Les paquets créés sont les suivants :

amd-clinfo_14.6~betav1.0-1_amd64.deb
amd-libopencl1_14.6~betav1.0-1_amd64.deb
amd-opencl-dev_14.6~betav1.0-1_amd64.deb
amd-opencl-icd_14.6~betav1.0-1_amd64.deb
fglrx-atieventsd_14.6~betav1.0-1_amd64.deb
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

Installation des composants FGLRX

cd /root/stream/debian
dpkg -i glx-diversions_*_amd64.deb glx-alternative-mesa_*_amd64.deb
dpkg -i glx-alternative-fglrx_*_amd64.deb
dpkg -i libfglrx_*_amd64.deb
dpkg -i libgl1-fglrx-glx_*_amd64.deb
apt-get install xserver-xorg-core libaudit0 libxkbfile1 x11-xkb-utils xfonts-base xserver-common
dpkg -i fglrx-modules-dkms_*_amd64.deb
dpkg -i fglrx-driver_*_amd64.deb
dpkg -i libfglrx-amdxvba1_*_amd64.deb
dpkg -i libxvbaw-dev_*_amd64.deb
dpkg -i fglrx-atieventsd_*_amd64.deb
dpkg -i fglrx-control_*_amd64.deb

Installation des composants Cuda & OpenCL

cd /root/stream/debian
dpkg -i amd-clinfo_14.1~beta1.3-1_amd64.deb
dpkg -i amd-opencl-icd_14.1~beta1.3-1_amd64.deb

Rétroportage du composant Python PyOpenCL

La dépendance sur une version plus récente de PyTools impose le rétroportage de cette dernière.

cd /root/stream
apt-get source python-pytools
apt-get -y build-dep python-pytools
cd /root/stream/pytools-*/
debuild
cd ..
ls -1 *.deb
mv *.deb debian
python3-pytools_2013.5.7-1_all.deb
python-pytools_2013.5.7-1_all.deb
cd /root/stream/debian
dpkg -i python3-pytools_*.deb python-pytools_*.deb 
cd /root/stream/
apt-get source pyopencl
apt-get -y build-dep pyopencl
cd /root/stream/pyopencl-*/
debuild
cd ..
ls -1 *.deb
mv *.deb debian

Les paquets créés sont les suivants :

python3-pyopencl_2013.2-1_amd64.deb
python3-pyopencl-dbg_2013.2-1_amd64.deb
python-pyopencl_2013.2-1_amd64.deb
python-pyopencl-dbg_2013.2-1_amd64.deb
python-pyopencl-doc_2013.2-1_all.deb

Installation des composants Python

cd /root/stream/debian
# Les paquets suivants issus de AMD sont necessaires pour le premier et bien utile pour le second
dpkg -i python-pyopencl_*.deb python3-pyopencl_*.deb python-pyopencl-doc_*.deb

Exécution des exemples

cd /usr/share/doc/python-pyopencl-doc/examples
python benchmark.py 

Sur une carte HD5850 (et un Dell Precision 5600):

Execution time of test without OpenCL:  0.105705976486 s
===============================================================
Platform name: AMD Accelerated Parallel Processing
Platform profile: FULL_PROFILE
Platform vendor: Advanced Micro Devices, Inc.
Platform version: OpenCL 1.2 AMD-APP (1411.4)
---------------------------------------------------------------
Device name: Cypress
Device type: GPU
Device memory:  512 MB
Device max clock speed: 725 MHz
Device compute units: 18
Device max work group size: 256
Device max work item sizes: [256, 256, 256]
Data points: 8388608
Workers: 256
Preferred work group size multiple: 64
Execution time of test: 0.0196992 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 (1411.4)
---------------------------------------------------------------
Device name: Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz
Device type: CPU
Device memory:  32201 MB
Device max clock speed: 2001 MHz
Device compute units: 12
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.0133983 s
Results OK

Vous aurez noter que l'installation préalable d'un SDK AMD a permis de disposer d'un support OpenCL sur le processeur.

Installation de PyFFT

PyFFT permet l'exploitation de PyCUDA et PyOpenCL pour effectuer tranquillement ses FFT directement à partir de ses scripts Python.

Pour son installation, suivre la page : http://www.cbp.ens-lyon.fr/emmanuel.quemener/dokuwiki/doku.php?id=pyfft4squeeze

Emmanuel Quemener 2014/02/24 14:29

developpement/activites/integration/stream4wheezy.txt · Dernière modification: 2015/01/07 10:04 (modification externe)