JINWOOJUNG

[ Linux Issue ] cuDNN 설치 본문

Linux&ROS Issue

[ Linux Issue ] cuDNN 설치

Jinu_01 2024. 7. 9. 20:43
728x90
반응형

CUDA 설치 이후 YOLO Deep Learning Model을 c++ 환경에서 동작시키기 위하여 cuDNN 설치가 추가적으로 요구된다. cuDNN 설치 이전, CUDA가 개인의 GPU 환경에 맞게 설치되었다는 가정하에 진행하겠다.

 

 

cuDNN을 설치하지 않으면, 위와 같이 딥러닝 모델을 동작시키는 과정에서 OpenCV 내 dnn 관련 함수들이 포함되어있지 않아 core dumped가 발생한다. 따라서 cuDNN을 설치하여 연결시켜줘야 한다. 

 

cuDNN 설치

https://developer.nvidia.com/rdp/cudnn-archive

 

위 주소로 들어가 cuDNN을 설치한다. cuDNN Version을 선택하기 위해서는, 자신의 환경에 설치된 CUDA Version을 우선적으로 알아야 한다. 

 

 

현재 CUDA 12.2 Version이기에, cuDNN은 v8.9.7을 설치하였다.

 

 

두번째 Local Installer for Linux x86_64(Tar)을 다운로드 해 준다.

 

tar -xvf cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz

 

이때, version은 자신이 선택한 버전에 맞게 바꿔준다.

 

이후 압축 풀린 파일들을 /usr/local로 붙여넣고, 권한을 설정 해 준다.

sudo cp cudnn-linux-x86_64-8.9.7.29_cuda12-archive/include/cudnn*.h /usr/local/cuda/include
sudo cp cudnn-linux-x86_64-8.9.7.29_cuda12-archive/lib/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

 

이후 링크를 생성 해 줘야 하는데, 이때 자신의 CUDA, cuDNN Version에 맞게 잘 수정해야 한다.

( CUDA 12.2, cuDNN 8.9.7 Version 기준)

sudo ln -sf /usr/local/cuda-12.2/targets/x86_64-linux/lib/libcudnn_adv_train.so.8.9.7 /usr/local/cuda-12.2/targets/x86_64-linux/lib/libcudnn_adv_train.so.8
sudo ln -sf /usr/local/cuda-12.2/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8.9.7 /usr/local/cuda-12.2/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8
sudo ln -sf /usr/local/cuda-12.2/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8.9.7 /usr/local/cuda-12.2/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8
sudo ln -sf /usr/local/cuda-12.2/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8.9.7 /usr/local/cuda-12.2/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8
sudo ln -sf /usr/local/cuda-12.2/targets/x86_64-linux/lib/libcudnn_ops_train.so.8.9.7 /usr/local/cuda-12.2/targets/x86_64-linux/lib/libcudnn_ops_train.so.8
sudo ln -sf /usr/local/cuda-12.2/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8.9.7 /usr/local/cuda-12.2/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8
sudo ln -sf /usr/local/cuda-12.2/targets/x86_64-linux/lib/libcudnn.so.8.9.7 /usr/local/cuda-12.2/targets/x86_64-linux/lib/libcudnn.so.8​

 

새로 추가된 library를 찾을 수 있도록 설정

sudo ldconfig

 

제데로 진행 되었는지 확인

ldconfig -N -v $(sed 's/:/ /' <<< $LD_LIBRARY_PATH) 2>/dev/null | grep libcudnn


이렇게 설치면 해도 OpenCV와 연동이 안될 수도 있다.

 

따라서 OpenCV를 삭제 후 cuDNN Library를 읽을 수 있도록 해야 한다. 

먼저 OpenCV 관련 항목 삭제

sudo apt-get purge libopencv*

 

OpenCV 재설치

cd ~
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git

 

Build(CUDA Version에 맞게 설정)

cd ~/opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D BUILD_EXAMPLES=ON \
-D WITH_CUDA=ON \
-D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-12.2 \
-D OPENCV_DNN_CUDA=ON \
-D CUDNN_INCLUDE_DIR=/usr/local/cuda-12.2/include \
-D CUDNN_LIBRARY=/usr/local/cuda-12.2/lib64/libcudnn.so \
-D OPENCV_GENERATE_PKGCONFIG=ON ..

 

CPU Thread 수에 맞게 make(memory 부족이 뜨면 8 혹은 16으로 진행)

make -j$(nproc)

 

install

sudo make install
sudo ldconfig

 


Reference

https://velog.io/@qaszx1004/Install-CUDA11.8-CUDNN-on-Ubuntu-20.04

https://ingu627.github.io/tips/install_cuda_linux/

728x90
반응형

'Linux&ROS Issue' 카테고리의 다른 글

[ Linux Issue ] Sublime Text & Sublime Merge Install  (0) 2024.08.08