===== 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