===== Installation de Cuda 5.0 =====
Au 24 octobre 2012, le pilote Cuda version 5 ne nécessite plus d'inscription préalable pour être téléchargé.
La grosse modification est que seul une archive est à télécharger pour disposer du pilote de carte, de l'environnement CUDA et du SDK.
Le lien suivant défini les différents paquets à installer :
* la boîte à outils : la version 5.0 pour [[http://developer.download.nvidia.com/compute/cuda/5_0/rel-update-1/installers/cuda_5.0.35_linux_64_ubuntu11.10-1.run|64 bits]] et [[http://developer.download.nvidia.com/compute/cuda/5_0/rel-update-1/installers/cuda_5.0.35_linux_32_ubuntu11.10-1.run|32 bits]]
# Dans sa version 64 bits
wget http://developer.download.nvidia.com/compute/cuda/5_0/rel-update-1/installers/cuda_5.0.35_linux_64_ubuntu11.10-1.run
# Dans sa version 32 bits
wget http://developer.download.nvidia.com/compute/cuda/5_0/rel-update-1/installers/cuda_5.0.35_linux_32_ubuntu11.10-1.run
==== Installation du pilote ====
Toutes ces commandes sont à effectuer comme ''root''
Pour commencer, installation et configuration minimale :apt-get install module-assistant
# téléchargement des prototypes du noyau courant si nécessaire
m-a prepare
# pour les noyaux récents (par exemple comme le 2.6.32, il faut blacklister nouveau
echo blacklist nouveau >> /etc/modprobe.d/blacklist.conf
# arret de GDM3 s'il est lancé
/etc/init.d/gdm3 stop
killall -9 gnome-shell
# arret de KDM s'il est lancé
/etc/init.d/kdm stop
La version Wheezy comprend des paquets permettant de bénéficier de Cuda dans sa version 4.2.9 et intègre le pilote 304.48
apt-get purge -y --force-yes $(dpkg -l | grep nvidia | awk '{ print $2 }' | tr "\n" " ")
apt-get purge -y --force-yes $(dpkg -l | grep cuda | awk '{ print $2 }' | tr "\n" " ")
==== Installation de la boîte à outils ====
Toutes ces commandes sont à effectuer comme ''root''
Par défaut, tout l'environnement Cuda 5 est adaptée pour le compilateur 4.6. Comme sous Debian Wheezy, le compilateur par défaut est le 4.6, il serait nécessaire de préciser, comme dans les autres applications, les variables CC et CXX pour pointer vers les bons compilateurs ! Sauf que cela ne fonctionne pas...
apt-get --yes --reinstall --force-yes install libxi-dev libxmu-dev freeglut3-dev gcc-4.6 g++-4.6 gfortran-4.6 linux-headers-$(uname -r)
Pour le SDK, toujours aussi simple, mais, pour uniformiser les usages, nous décidons d'installer ces librairies non pas dans ''usr/local/cuda'' mais ''/opt/cuda''. De plus, nous désirons conserver l'ancienne version :
=== Préparation du système ===
cd /opt
# Suppression du lien
[ -e /opt/cuda ] && rm -r /opt/cuda
# Lancer l'installation
sh /root/cuda_5.0.35_linux_64_ubuntu11.10-1.run -extract=/tmp/cuda
cd /tmp/cuda
=== Installation du pilote graphique ===
# Installation du pilote graphique et des librairies systeme
CC=/usr/bin/gcc-4.6 ./devdriver_5.0_linux_64_304.54.run -a -d -s -Z -X -kernel-name=$(uname -r)
# Création du fichier de configuration Xorg
nvidia-xconfig
# Redmarrage du serveur X
/etc/init.d/gdm3 start
=== Installation des librairies ===
# Installation des librairies à partir de l'archive
./cudatoolkit_5.0.35_linux_64_ubuntu11.10.run -prefix=/opt/cuda-5.0.35 -noprompt
=== Configuration de l'accès aux librairies et binaires ===
# Renommer le repertoire en le suffixant du numero de version
cd /opt
ln -sf cuda-5.0.35 cuda
# Creer le document contenant les libraires dynamiques de Cuda (la version 64 bits est pointee)
echo -e "/opt/cuda/lib64\n/opt/cuda/lib" > /etc/ld.so.conf.d/cuda.conf
# Mettre a jour la base
ldconfig
# Ajouter le chemin vers les executables de Cuda (notamment nvcc)
sed -e "s/:\/bin/:\/bin:\/opt\/cuda\/bin/" -e "s/:\/usr\/games/:\/usr\/games:\/opt\/cuda\/bin/" -i~ /etc/profile
# Placer un lien sur la librairie cuda installe par le pilote graphique
cd /opt/cuda/lib64
ln -s /usr/lib/libcuda.so libcuda.so
Par défaut, Cuda 5 ne compile **QUE** avec gcc-4.6. La première solution aurait été de pointer les compilateurs par défaut directement sur
La première méthode, bien crade, consiste à relinker les compilateurs vers la bonne version.
ln -s /usr/bin/gcc-4.6 gcc
ln -s /usr/bin/g++-4.6 g++
ln -s /usr/bin/gfortran-4.6 gfortran
La seconde méthode, plus propre, consiste à préciser à ''nvcc'' le compilateur GCC à utiliser
cd /opt/cuda/bin/
ln -s /usr/bin/gcc-4.6 gcc
ln -s /usr/bin/g++-4.6 g++
ln -s /usr/bin/gfortran-4.6 gfortran
echo -e "compiler-bindir = /opt/cuda/bin" >> nvcc.profile
==== Installation et compilation des exemples ====
Toutes ces commandes sont à effectuer comme ''root''
cd /tmp/cuda
sh cuda-samples_5.0.35_linux.run -prefix=/opt/cuda-5.0.35/samples -noprompt
Enfin, la compilation des exemples :
cd /opt/cuda/samples
make
===== Installation de PyCUDA =====
Téléchargement des sources sur : http://mathema.tician.de/software/pycuda
==== Préparation de la compilation ====
apt-get install git libboost-python1.49-dev libboost-thread1.49-dev libboost1.49-all-dev libboost1.49-dev python-setuptools
Toutes ces commandes sont à effectuer comme ''root''
==== Téléchargement des sources ====
Directement en téléchargeant par Git
cd /opt
git clone http://git.tiker.net/trees/pycuda.git
cd pycuda
git submodule init
git submodule update
En récupérant l'archive
cd /root
wget http://pypi.python.org/packages/source/p/pycuda/pycuda-2012.1.tar.gz#md5=b67c4fce6c258834339073f2537fa84f
cd /opt
tar xzf /root/pycuda-2012.1.tar.gz
ln -s pycuda-2012.1 pycuda
chown -R root.root pycuda
cd pycuda
==== Compilation et installation ====
export PATH=$PATH:/opt/cuda/bin
export PYCUDA=$PWD
# Configuration
export CUDA_ROOT=/opt/cuda
./configure.py
# Compilation
CC=/usr/bin/gcc-4.6 CXX=/usr/bin/g++-4.6 make
# Installation
make install
#
python setup.py build
python setup.py install
==== Exécution des tests d'intégration ====
cd $PYCUDA/test
Premier exemple : ''python test_cumath.py'' donne
============================= test session starts ==============================
platform linux2 -- Python 2.7.3 -- pytest-2.3.1
collected 20 items
test_cumath.py ....................
========================== 20 passed in 7.66 seconds ===========================
Deuxième exemple : ''python test_driver.py'' donne
============================= test session starts ==============================
platform linux2 -- Python 2.7.3 -- pytest-2.3.1
collected 21 items
test_driver.py .....................
========================== 21 passed in 4.20 seconds ===========================
Troisième exemple : ''python test_gpuarray.py'' donne
============================= test session starts ==============================
platform linux2 -- Python 2.7.3 -- pytest-2.3.1
collected 46 items
test_gpuarray.py ..............................................
========================== 46 passed in 25.04 seconds ==========================
==== Exécution des exemples ====
cd $PYCUDA/examples
python download-examples-from-wiki.py
cd wiki-examples
find *.py -exec python {} \;
===== Installation de PyOpenCL =====
Téléchargement des sources sur : http://mathema.tician.de/software/pyopencl
==== Préparation de la compilation ====
apt-get install libboost-thread-dev
Au 20 juin 2012, la version courante est la ''2012.1'' :
cd /opt
git clone http://git.tiker.net/trees/pyopencl.git
cd pyopencl
git submodule init
git submodule update
cd /root
wget http://pypi.python.org/packages/source/p/pyopencl/pyopencl-2012.1.tar.gz#md5=e6ae70d89d086af4636e4fbb2c806368
cd /opt
tar xzf /root/pyopencl-2012.1.tar.gz
ln -s pyopencl-2012.1 pyopencl
cd pyopencl
==== Compilation et installation de PyOpenCL ====
Avec l'installation des librairies Cuda comme présentée ci-dessus, la compilation se prépare de la façon suivante :
./configure.py --boost-inc-dir=/usr/include --boost-lib-dir=/usr/lib --boost-python-libname=boost_python-py27 --cl-inc-dir=/opt/cuda/include/ --cl-lib-dir=/usr/lib/ --boost-compiler=/opt/cuda/bin/nvcc --cl-enable-gl --no-cl-enable-device-fission
CC=/usr/bin/gcc-4.6 CXX=/usr/bin/g++-4.6 make
make install
python setup.py build
python setup.py install