일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 백준
- Mask Processing
- dfs
- AlexNet
- r-cnn
- MySQL
- dynamic programming
- deep learning
- real-time object detection
- 머신러닝
- object detection
- DP
- YoLO
- Python
- 그래프 이론
- eecs 498
- C++
- MinHeap
- One-Stage Detector
- Reinforcement Learning
- 딥러닝
- CNN
- canny edge detection
- two-stage detector
- machine learning
- BFS
- LSTM
- opencv
- image processing
- 강화학습
- Today
- Total
JINWOOJUNG
[ Linux Issue ] cuDNN 설치 본문
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
'Linux&ROS Issue' 카테고리의 다른 글
[Linux Issue] Terminal 안켜짐 (0) | 2025.01.18 |
---|---|
[ Linux Issue ] Sublime Text & Sublime Merge Install (0) | 2024.08.08 |