====== Compilation de OpenCV avec CUDA sur Ubuntu====== =====Installation de Cuda sur Ubuntu 20.04 Mate===== Sur une installation toute fraîche: sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/3bf863cc.pub wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600 sudo apt update sudo apt install nvidia-cuda-toolkit =====Désinstaller le Nvidia driver===== Pour commencer proprement, si besoin. sudo apt purge nvidia-* sudo apt autoremove =====Installation du driver NVIDIA, CUDA, CuDNN, OpenCV ===== Adapter ce tuto à la dernière version de CUDA ... 11.2 ... 11.3 ... **Message aux générations futures: la durée d'un confinement égale la durée d'installation de ce truc, les téléchargements sont très gros, la compil interminable, mais quel plaisir à la fin de retrouver la liberté et ses amis.** Mise à jour et installation vitale après installation de Xubuntu 20.04 sudo apt update sudo apt upgrade sudo apt install synaptic terminator geany geany-plugins git python3-pip sudo dpkg --add-architecture i386 sudo apt update sudo apt upgrade Toute la suite est extraite de **[[https://towardsdatascience.com/yolov4-with-cuda-powered-opencv-dnn-2fef48ea3984|towardsdatascience.com Faster YOLOv4 Performance with CUDA enabled OpenCV]]** ====Installation du driver==== * Aller à Pilotes Additionnels: installer le driver 460 (version à confirmer avec cuda 11.3) ====Installation de CUDA==== * Suivre les instructions de https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=2004&target_type=debnetwork, soit: wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600 sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/7fa2af80.pub sudo add-apt-repository "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /" sudo apt update sudo apt -y install cuda sudo reboot Finally, finish off by pasting the following in your **.bashrc** # CUDA export CUDA=11.3 export PATH=/usr/local/cuda-$CUDA/bin${PATH:+:${PATH}} export CUDA_PATH=/usr/local/cuda-$CUDA export CUDA_HOME=/usr/local/cuda-$CUDA export LIBRARY_PATH=$CUDA_HOME/lib64:$LIBRARY_PATH export LD_LIBRARY_PATH=/usr/local/cuda-$CUDA/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} export LD_LIBRARY_PATH=/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH export NVCC=/usr/local/cuda-$CUDA/bin/nvcc export CFLAGS="-I$CUDA_HOME/include $CFLAGS" Se reconnecter ou source ~/.bashrc ====Compilation de OpenCV avec CUDNN==== ===Désinstaller les versions installées=== Dans le système de fichier ou dans .local sudo pip3 uninstall opencv-python python3.8 -m pip uninstall opencv-python --user ===CuDNN=== Télécharger CuDNN à [[https://developer.nvidia.com/rdp/cudnn-archive|developer.nvidia.com cudnn-archive]]. Les dev sont nécessaires pour une compilation.\\ Adaptez à la version vous avez téléchargé ! sudo dpkg -i libcudnn8_......+cuda11.3....amd64.deb sudo dpkg -i libcudnn8-dev_8.....+cuda11.3...._amd64.deb sudo apt install python3-dev python3-pip python3-testresources sudo apt install build-essential cmake pkg-config unzip yasm git checkinstall libjpeg-dev libpng-dev libtiff-dev libavcodec-dev libavformat-dev libswscale-dev libavresample-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libxvidcore-dev x264 libx264-dev libfaac-dev libmp3lame-dev libtheora-dev libfaac-dev libmp3lame-dev libvorbis-dev libopencore-amrnb-dev libopencore-amrwb-dev libgtk-3-dev libtbb-dev libatlas-base-dev gfortran libprotobuf-dev protobuf-compiler libgoogle-glog-dev libgflags-dev libgphoto2-dev libeigen3-dev libhdf5-dev doxygen sudo pip3 install numpy mkdir opencvbuild && cd opencvbuild wget -O opencv.zip https://github.com/opencv/opencv/archive/4.5.2.zip wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.5.2.zip unzip opencv.zip unzip opencv_contrib.zip mv opencv-4.5.2 opencv mv opencv_contrib-4.5.2 opencv_contrib cd opencv mkdir build && cd build Dans la commande qui suit, il faut spécifier CUDA_ARCH_BIN. Le trouver sur [[https://en.wikipedia.org/wiki/CUDA|en.wikipedia.org CUDA]] ou à [[https://developer.nvidia.com/cuda-gpus|developer.nvidia.com/cuda-gpus]]\\ Pour 1060 GTX --> 6.1\\ Pour GTX 850m --> 5.0 cmake \ -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_C_COMPILER=/usr/bin/gcc \ -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_PYTHON_EXAMPLES=ON \ -D INSTALL_C_EXAMPLES=ON -D WITH_TBB=ON -D WITH_CUDA=ON -D WITH_CUDNN=ON \ -D OPENCV_DNN_CUDA=ON -D CUDA_ARCH_BIN=6.1 -D BUILD_opencv_cudacodec=OFF \ -D ENABLE_FAST_MATH=1 -D CUDA_FAST_MATH=1 -D WITH_CUBLAS=1 \ -D WITH_V4L=ON -D WITH_QT=OFF -D WITH_OPENGL=ON -D WITH_GSTREAMER=ON \ -D WITH_FFMPEG=ON -D OPENCV_GENERATE_PKGCONFIG=ON \ -D OPENCV_PC_FILE_NAME=opencv4.pc -D OPENCV_ENABLE_NONFREE=ON \ -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \ -D PYTHON_DEFAULT_EXECUTABLE=$(which python3) -D BUILD_EXAMPLES=ON .. Vérifier dans la sortie terminal que CUDA et CuDNN sont bien ON. Si oui, continuer, sinon inutile de continuer, remonter dans le terminal pour chercher les FAILED. C'est souvent les lib-dev qui manquent ! make -j8 sudo make install # Vérification finale: pkg-config --libs --cflags opencv4 =====Désinstallation d'une version de CUDA===== Supprimer les dossiers cuda.your_version du dossier /usr/local/ {{tag> ia linux sb cuda opencv}}