Ubuntu 18.04에 CUDA+CUDNN를 설치해 보도록 하겠습니다. OpenCV까지 설치할 계획으로, 하나의 포스팅에서 전부 다루기에는 내용이 길어서 글을 나누어 작성하겠습니다. 저도 리눅스에 설치하는 것은 처음이었는데, 단순히 따라 했다가 중간에 막히는 부분이 많았기 때문에 정리해서 올려봅니다.
2020년 11월 6일 추가
CMake로 OpenCV 빌드 환경 설정 시, Python 경로를 인지하지 못하는 문제가 발생하였습니다. 우분투에 anaconda부터 Python 각종 버전들이 깔려있는 바람에 꼬인 것 같아요. Python을 지우고 재 설치하려다가 dependency 걸려있는 패키지들도 통째로 날아가는 바람에, 그냥 Ubuntu 20.04를 재설치 했습니다. 겸사겸사 기존 가이드 문서도 조금 다듬었고, 아래 가이드를 따라 Ubuntu 20.04에서 잘 설치되는 것을 확인했습니다. Python 3.8.5, CUDA 11.1, cuDNN은 8.0.4으로 설치하였습니다.
※ 설치 환경
- Ubuntu 18.04.5 LTS
- GPU: GeForce RTX 2060 SUPER (8GB)
1. 기본 작업 수행
컴파일 전 필요한 패키지를 설치합니다. 소스코드 빌드 시 필요한 기본적인 패키지들을 다운로드 합니다.
$ sudo apt-get install build-essential
2. GPU Driver 설치
아래 방법은 nvidia 사이트에서 설치파일을 다운로드 받아서 설치 과정을 진행합니다. 특정 버전의 GPU Driver 설치를 원할 경우에는 다른 사이트에서 방법을 찾아보셔야 합니다.
드라이버를 다운로드 받기 위해 www.nvidia.com/drivers에 접속합니다. 그리고 GPU 정보 및 OS 사양을 선택합니다.
Search 버튼을 누르고 Driver를 다운로드 합니다.
다운로드 된 설치 파일에 실행 권한을 부여해 준 후, 파일을 실행합니다.
$ sudo chmod +x NVIDIA-Linux-x86_64-450.66.run
$ sudo ./NVIDIA-Linux-x86_64-450.66.run
‘nvidia-drm 사용 중’, ‘누보 드라이버와 충돌’ 등의 문제로 설치 과정에서 오류가 발생할 수 있으므로, 재부팅 후 터미널 모드에서 설치하는 것을 권장합니다.
로그인 화면에서 Ctrl+Alt+F2을 누르면 터미널 모드에 진입할 수 있습니다.
#Lightdm을 중지합니다.
$ sudo /etc/init.d/lightdm stop
# 시스템 run-level을 바꾼 후 실행합니다.
$ systemctl isolate multi-user.target
$ sudo modprobe -r nvidia-drm
# Nvidia 드라이버를 설치합니다.
$ sudo ./NVIDIA-Linux-x86_64-450.66.run
# 다시 GUI 환경으로 전환합니다.
$ systemctl start graphical.target
3. CUDA 설치
CUDA toolkit 10.2를 설치하기 위해, 저장소-developer.nvidia.com/cuda-toolkit-archive에 접속합니다.
여기서 CUDA Toolkit 10.2를 선택합니다.
OS 사양 등의 정보를 선택하고, 마지막으로 runfile(local)를 선택합니다.
위 캡처 화면 중간에 보면 설치 명령어가 나타납니다. 아래쪽에 패치 파일에 대한 다운로드 링크도 추가되어 있네요. 패치는 따로 진행하지 않겠습니다.
$ wget http://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda_10.2.89_440.33.01_linux.run
$ sudo chmod +x cuda_10.2.89_440.33.01_linux.run
$ sudo sh cuda_10.2.89_440.33.01_linux.run
설치 프로그램을 실행하고 라이선스 동의 요청에 ‘accept‘를 입력합니다.
Driver는 앞에서 설치하였으므로 체크를 해제합니다. Enter 또는 Space를 눌러서 체크박스 on/off 할 수 있습니다. 이제 화면 제일 밑에 있는 Install을 선택하여 설치를 진행합니다.
설치가 끝나면 아래와 같이 설치 결과 요약이 뜹니다. 시키는 대로 ~/.profile (또는 ~/.bash_profile) 내 PATH와 LD_LIBRARY_PATH에 경로를 추가합니다.
4. cuDNN 설치
cuDNN(Deep Neural Network)은 GPU-accelerated 라이브러리로 딥러닝을 돌릴 때 사용합니다. cuDNN을 on/off 했을 때 속도 차이가 넘사벽 수준입니다. 선택이 아니라 필수로 사용해야 하는 라이브러리죠.
developer.nvidia.com/cudnn 사이트에 접속해서 cuDNN을 다운로드하도록 하겠습니다. 로그인을 해야 다운로드 가능합니다.
로그인을 하고 설문조사를 간단히 마친 후, cuDNN 8.0을 다운로드 해보겠습니다.
제일 첫번째에 있는 cuDNN Library for Linux (x86)을 클릭하여 다운로드 합니다. 다운받은 파일 명은 cudnn-10.2-linux-x64-v8.0.4.30.tgz입니다. 압축을 풀면 cuda라는 폴더가 생기고, cuda 폴더 안에는 헤더파일이 들어있는 include/ 폴더와 라이브러리가 들어있는 lib64/ 폴더가 보일 것입니다.
$ tar -xvf cudnn-10.2-linux-x64-v8.0.4.30.tgz
include/ 내 헤더 파일 cudnn.h와 lib64/ 내 라이브러리 파일을 cuda 설치 폴더에 각각 복사하면 됩니다.
#cudnn.h 파일을 복사합니다.
$ sudo cp ./cuda/include/* /usr/local/cuda-10.2/include
#라이브러리 파일 복사 시, 옵션 -P를 붙여서 심볼릭 링크가 깨지지 않도록 합니다.
$ sudo cp -P ./cuda/lib64/* /usr/local/cuda-10.2/lib64
#모든 사용자에게 라이브러리 실행권한을 부여합니다.
$ sudo chmod a+r /usr/local/cuda-10.2/lib64/libcudnn*
5. 최종 확인
CUDA 10.2 버전은 GPU Driver 버전이 440대가 맞는 것 같은 기분이 들지만… 일단 설치는 마쳤습니다. GPU driver와 CUDA가 합이 잘 안맞으면 문제가 발생할 수도 있긴 합니다만, 개인 PC에서 끄적끄적 해보려고 환경을 만든 것이라 이대로 써보도록 하겠습니다. CUDA는 PC에 여러 버전을 설치해도 문제는 없습니다.
CUDA 버전은 nvcc –version 을 입력하면 확인할 수 있습니다.
※ 만약 nvcc를 인식하지 못할 경우, PATH를 추가하면 됩니다. (export PATH=$PATH:/usr/local/cuda-10.2/bin)
GPU driver version은 nvidia-smi를 입력하면 확인할 수 있습니다.