Ceci est une ancienne révision du document !
La Debian Jessie ne dispose que de la version 6.0.37 de CUDA et du pilote 340.46. Ces versions peuvent rapidement sembler insuffisantes pour ceux qui désirent utiliser les dernières fonctionnalités de CUDA 6 ou simplement utiliser les dernières cartes video Nvidia.
Voici la méthode permettant d'installer à partir d'un rétro-portage les paquets Nvidia ainsi que tout l'environnement associé. Au 28 mai 2015, il n'est pas possible de récupérer la version 346.59 se trouvant dans l'archive experimental : le module NVIDIA casse à l'installation par DKMS. Il est donc nécessaire d'installer le dernier pilote opérationnel issu des snaphots Debian, le pilote 343.36. L'environnement de développement, le 6.5.14, sera rétroporté directement de l'archive experimental.
/proc
dpkg -l | egrep "nvidia|cuda|cupti|nvtoolsext|nvvm|nvctrl|nvcuvid|curand|cublas|cufft|cudart|cuinj|cusparse|libnpp" | 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 '{}'
Il est nécessaire d'insérer les sources des paquets sid et expérimentaux pour disposer de la dernière version de CUDA packagée (la 6.5.14).
apt-get install -y pbuilder pciutils debhelper quilt libgtk2.0-dev libjansson-dev libvdpau-dev libxv-dev libxxf86vm-dev dh-autoreconf [ $(grep jessie /etc/apt/sources.list | grep deb-src | 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 sid /etc/apt/sources.list | grep deb-src | 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 | grep deb-src | 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 -y update
mkdir -p /root/nvidia/debian cd /root/nvidia apt-get source glx-alternatives apt-get build-dep glx-alternatives -y cd glx-alternatives-* debuild cd .. ls -1 *.deb mv *.deb debian
Les paquets créés sont les suivants :
glx-alternative-fglrx_0.7.1_amd64.deb glx-alternative-mesa_0.7.1_amd64.deb glx-alternative-nvidia_0.7.1_amd64.deb glx-diversions_0.7.1_amd64.deb update-glx_0.7.1_amd64.deb
cd /root/nvidia apt-get source -y nvidia-xconfig nvidia-support nvidia-modprobe libvdpau-dev apt-get build-dep -y libvdpau-dev cd /root/nvidia/libvdpau-* debuild cd .. dpkg -i libvdpau1_*_amd64.deb libvdpau-dev_*_amd64.deb mv *deb debian # Telechargement des composants nvidia-graphics-drivers apt-get source nvidia-graphics-drivers apt-get -y build-dep nvidia-xconfig nvidia-support nvidia-modprobe nvidia-settings nvidia-graphics-drivers
cd /root/nvidia/ cd nvidia-graphics-drivers-* debuild cd .. ls -1 *.deb mv *.deb debian
Les paquets créés sont les suivants :
libcuda1_352.55-3_amd64.deb libegl1-nvidia_352.55-3_amd64.deb libgl1-nvidia-glx_352.55-3_amd64.deb libgles1-nvidia_352.55-3_amd64.deb libgles2-nvidia_352.55-3_amd64.deb libnvcuvid1_352.55-3_amd64.deb libnvidia-compiler_352.55-3_amd64.deb libnvidia-eglcore_352.55-3_amd64.deb libnvidia-encode1_352.55-3_amd64.deb libnvidia-fbc1_352.55-3_amd64.deb libnvidia-ifr1_352.55-3_amd64.deb libnvidia-ml1_352.55-3_amd64.deb nvidia-alternative_352.55-3_amd64.deb nvidia-cuda-mps_352.55-3_amd64.deb nvidia-detect_352.55-3_amd64.deb nvidia-driver_352.55-3_amd64.deb nvidia-driver-bin_352.55-3_amd64.deb nvidia-kernel-dkms_352.55-3_amd64.deb nvidia-kernel-source_352.55-3_amd64.deb nvidia-kernel-support_352.55-3_amd64.deb nvidia-libopencl1_352.55-3_amd64.deb nvidia-opencl-common_352.55-3_amd64.deb nvidia-opencl-icd_352.55-3_amd64.deb nvidia-smi_352.55-3_amd64.deb nvidia-vdpau-driver_352.55-3_amd64.deb xserver-xorg-video-nvidia_352.55-3_amd64.deb
cd /root/nvidia/nvidia-modprobe-*/ debuild cd .. ls -1 *.deb mv *.deb debian
Les paquets créés sont les suivants :
nvidia-modprobe_358.09-1_amd64.deb
apt-get source -y nvidia-settings apt-get build-dep -y nvidia-settings cd /root/nvidia/nvidia-settings-* debuild cd .. ls -1 *.deb mv *.deb debian
Les paquets créés sont les suivants :
libxnvctrl0_346.59-1_amd64.deb libxnvctrl-dev_346.59-1_amd64.deb nvidia-settings_346.59-1_amd64.deb
cd /root/nvidia/nvidia-xconfig-*/ debuild cd .. ls -1 *.deb mv *.deb debian
Le paquet créé est le suivant :
nvidia-xconfig_340.93-1_amd64.deb
cd /root/nvidia/nvidia-support-*/ debuild cd .. ls -1 *.deb mv *.deb debian
Les paquets créés sont les suivants :
nvidia-installer-cleanup_20151021+1_amd64.deb nvidia-kernel-common_20151021+1_amd64.deb nvidia-support_20151021+1_amd64.deb
cd /root/nvidia/debian rmmod nvidia sync rmmod -f nouveau dpkg -i nvidia-installer-cleanup_*_amd64.deb dpkg -i glx-diversions_*_amd64.deb update-glx_*.deb glx-alternative-mesa_*_amd64.deb dpkg -i nvidia-support_*_amd64.deb dpkg -i glx-alternative-nvidia_*_amd64.deb dpkg -i nvidia-modprobe_*_amd64.deb dpkg -i nvidia-alternative_*_amd64.deb dpkg -i libgl1-nvidia-glx_*_amd64.deb apt-get install -y xserver-xorg-core libaudit1 libxkbfile1 x11-xkb-utils xfonts-base xserver-common dpkg -i nvidia-kernel-common_*_amd64.deb dpkg -i nvidia-kernel-source_*_amd64.deb dpkg -i nvidia-kernel-support_*_amd64.deb dpkg -i nvidia-kernel-dkms_*_amd64.deb ls -1 lib*352.55*deb | xargs -I '{}' dpkg -i '{}' apt-get -f install dpkg -i xserver-xorg-video-nvidia_* dpkg -i nvidia-vdpau-driver_*_amd64.deb nvidia-driver_*_amd64.deb nvidia-driver-bin_*_amd64.deb ls *352.55*deb | grep -v ^lib | grep -v nvidia-kernel | grep -v libopencl | xargs -I '{}' dpkg -i '{}' dpkg -i nvidia-driver-bin_*deb nvidia-driver_*deb nvidia-xconfig* nvidia-settings* libxnvctrl* nvidia-smi_* apt-get -f install
cd /root/nvidia apt-get -y source nvidia-cuda-toolkit apt-get -y build-dep nvidia-cuda-toolkit cd nvidia-cuda-toolkit-* debuild cd .. ls -1 *.deb mv *.deb debian
Les paquets créés sont les suivants :
apt-get install -y opencl-headers ocl-icd-opencl-dev cd /root/nvidia/debian ls *6.5.19*deb | grep -v opencl | xargs -I '{}' dpkg -i '{}' # Il arrive que l'installeur rale sur nvidia-cuda-toolkit. Si c'est le cas, la commande suivante s'impose apt-get -f install
cd /root/nvidia apt-get -y source python-pyopencl apt-get -y build-dep python-pyopencl cd pyopencl-* debuild cd .. ls -1 *.deb mv *.deb debian
Les paquets créés sont les suivants :
python3-pyopencl_2015.1-1_amd64.deb python3-pyopencl-dbg_2015.1-1_amd64.deb python-pyopencl_2015.1-1_amd64.deb python-pyopencl-dbg_2015.1-1_amd64.deb python-pyopencl-doc_2015.1-1_all.deb
Réinstallation du composant ICD associé au périphérique Nvidia
cd /root/nvidia/debian dpkg -i nvidia-opencl-common_*_amd64.deb nvidia-opencl-icd_*_amd64.deb
cd /root/nvidia apt-get source -y pycuda apt-get -y build-dep pycuda cd pycuda-*/ debuild cd .. ls -1 *.deb mv *.deb debian
python3-pycuda_2015.1.2-1_amd64.deb python3-pycuda-dbg_2015.1.2-1_amd64.deb python-pycuda_2015.1.2-1_amd64.deb python-pycuda-dbg_2015.1.2-1_amd64.deb python-pycuda-doc_2015.1.2-1_all.deb
cd /root/nvidia/debian # Les paquets suivants issus de AMD sont necessaires pour le premier et bien utile pour le second apt-get install -y ocl-icd-libopencl1 ocl-icd-dev opencl-headers apt-get install -y amd-opencl-icd amd-clinfo # Les paquets icd standard ocl-icd-opencl-dev ocl-icd-libopencl1 dpkg -i python-pyopencl*.deb python3-pyopencl*.deb
cd /root/nvidia/debian apt-get install -y python-pytest python3-pytest dpkg -i python-pycuda*deb python3-pycuda*deb
python /usr/share/doc/python-pyopencl-doc/examples/benchmark.py
Sur des cartes Tesla C1060 & Quadro FX 580 (et un Dell Precision 3500):
('Execution time of test without OpenCL: ', 7.415176868438721, 's') =============================================================== ('Platform name:', 'NVIDIA CUDA') ('Platform profile:', 'FULL_PROFILE') ('Platform vendor:', 'NVIDIA Corporation') ('Platform version:', 'OpenCL 1.1 CUDA 6.0.1') --------------------------------------------------------------- ('Device name:', 'Tesla C1060') ('Device type:', 'GPU') ('Device memory: ', 4095, 'MB') ('Device max clock speed:', 1296, 'MHz') ('Device compute units:', 30) Execution time of test: 0.00188525 s Results OK =============================================================== ('Platform name:', 'NVIDIA CUDA') ('Platform profile:', 'FULL_PROFILE') ('Platform vendor:', 'NVIDIA Corporation') ('Platform version:', 'OpenCL 1.1 CUDA 6.0.1') --------------------------------------------------------------- ('Device name:', 'Quadro FX 580') ('Device type:', 'GPU') ('Device memory: ', 511, 'MB') ('Device max clock speed:', 1125, 'MHz') ('Device compute units:', 4) Execution time of test: 0.0126466 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 (938.2)') --------------------------------------------------------------- ('Device name:', 'Intel(R) Xeon(R) CPU W3565 @ 3.20GHz') ('Device type:', 'CPU') ('Device memory: ', 12041, 'MB') ('Device max clock speed:', 3199, 'MHz') ('Device compute units:', 4) Execution time of test: 0.00191834 s Results OK
Sur une carte GT650M (et un Mac Book Pro):
('Execution time of test without OpenCL: ', 7.595532178878784, 's') =============================================================== ('Platform name:', 'NVIDIA CUDA') ('Platform profile:', 'FULL_PROFILE') ('Platform vendor:', 'NVIDIA Corporation') ('Platform version:', 'OpenCL 1.1 CUDA 6.0.1') --------------------------------------------------------------- ('Device name:', 'GeForce GT 650M') ('Device type:', 'GPU') ('Device memory: ', 511, 'MB') ('Device max clock speed:', 405, 'MHz') ('Device compute units:', 2) Execution time of test: 0.0011792 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 (938.2)') --------------------------------------------------------------- ('Device name:', 'Intel(R) Core(TM) i7-3615QM CPU @ 2.30GHz') ('Device type:', 'CPU') ('Device memory: ', 7942, 'MB') ('Device max clock speed:', 1388, 'MHz') ('Device compute units:', 8) Execution time of test: 0.00280508 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.
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