일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- Reinforcement Learning
- exists
- dfs
- dynamic programming
- MinHeap
- Python
- 머신러닝
- AlexNet
- DP
- 딥러닝
- Mask Processing
- 백준
- canny edge detection
- BFS
- MySQL
- sklearn
- TD
- 그래프 이론
- C++
- classification
- SIFT
- IN
- machine learning
- edge detection
- image processing
- clustering
- opencv
- 강화학습
- object detection
- 인공지능
- 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 ] Sublime Text & Sublime Merge Install (0) | 2024.08.08 |
---|