본문 바로가기

OS/Ubuntu

[Ubuntu] CUDA & cuDNN 설치 (Install CUDA & cuDNN on Ubuntu)

NVIDIA 드라이버 설치에 이어서 CUDA 설치 방법을 기록한다.

[Ubuntu에 CUDA 설치]

이번 글은 NVIDIA CUDA 설치 방법에 대한 설명이다.
현재까지 나온 버전들이 상당히 많은데 그 중에서 CUDA Toolkit의 버전 9.0 또는 10.0 버전을 cuDNN 라이브러리와 함께 설치하는 방법에 대해 설명한다.

Ubuntu 환경에서 패키지 리스트를 추가하여 설치하는 방법에 대해 설명하며, 다른 CUDA 버전을 설치하더라도 설치 방법은 동일하다.

1. Ubuntu 환경

환경은 Ubuntu 16.04와 18.04 버전을 기준으로 설명한다.
먼저 NVIDIA 드라이버가 설치되었는지 확인하기 위해서 아래의 명령어를 실행한다.

$ nvidia-smi

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.33.01              Driver Version: 440.33.01                 |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 166...  Off  | 00000000:01:00.0  On |                  N/A |
|  0%   38C    P8    10W / 120W |    805MiB /  5943MiB |      6%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1116      G   /usr/lib/xorg/Xorg                           498MiB |
|    0      1975      G   compiz                                       305MiB |
+-----------------------------------------------------------------------------+

GTX 1660Ti 모델로 NVIDIA 드라이버 버전은 440.33.01을 사용한다.

위와 비슷한 내용의 드라이버 정보가 나타나지 않는다면, CUDA를 설치하기 전에 먼저 NVIDIA 드라이버가 올바르게 설치되었는지 확인해보기 바람.

[Ubuntu] NVIDIA 드라이버 설치 (Install NVIDIA Driver on Ubuntu)

그리고 CUDA를 설치 하기 이전에, 설치하고자 하는 CUDA 버전이 현재 GPU의 Compute Capability(계산 능력)을 지원하는지 확인해야 한다. Compute Capability는 아래의 페이지에서 확인 할 수 있다.

https://developer.nvidia.com/cuda-gpus

https://en.wikipedia.org/wiki/CUDA

Compute Capability에 따라 설치 할 수 있는 CUDA 버전은 아래의 내용을 확인.

CUDA Compute capability Architecture
6.5 Last version with support for compute capability 1.x (Tesla)
7.5 support for compute capability 2.0 – 5.x (Fermi, Kepler, Maxwell)
8.0 support for compute capability 2.0 – 6.x (Fermi, Kepler, Maxwell, Pascal), last version with support for Compute Capability 2.x (Fermi)
9.0 – 9.2 support for compute capability 3.0 – 7.2 (Kepler, Maxwell, Pascal, Volta)
10.0 – 10.1 support for compute capability 3.0 – 7.5 (Kepler, Maxwell, Pascal, Volta, Turing)

예를 들어 설치하고자 하고자 하는 CUDA 버전이 9.0일경우, GTX 750 Ti의 Compute capability이 5.0 이므로 CUDA 9.0이 설치 가능함.
(CUDA 9.0은 Compute capability이 3.0 ~ 7.2 까지 지원하기 때문)

2. 패키지 리스트 추가

(**앞서 NVIDIA 드라이버 설치 글을 따라 드라이버를 설치하고 온 경우에는 이 과정을 넘어가도 된다. 이 과정을 할 경우 패키지 리스트를 multiple로 추가했다면서 sudo apt-get update 시에 경고 문구가 뜸.)

현재 NVIDIA 공식 Repository에서 지원되는 배포판 종류는 우분투 16.04, 17.04, 17.10, 18.04, 18.10 등이다.
이 배포판에 해당되는 우분투 버전을 사용하는 경우, 아래의 공통 명령어로 패키지 리스트를 추가 할 수 있다.

먼저 아래 명령어로 현재 사용하고 있는 Ubuntu 버전을 확인한다.

$ release="ubuntu"$(lsb_release -sr | sed -e "s/\.//g")
$ echo $release

만약 우분투 18.04 버전일 경우, ubuntu1804와 같이 출력될 것이고, 16.04일 경우, ubuntu1604로 출력이 나오게 된다.

위의 명령어로 배포판 이름이 $release 변수에 저장되게 하고, 아래의 명령어에서 해당 Repository로 추가될 수 있도록 사용한다.
따라서 꼭 위의 명령어를 실행 후에 아래의 명령오로 Repository를 추가한다.

$ sudo apt-get install sudo gnupg
$ sudo apt-key adv --fetch-keys "http://developer.download.nvidia.com/compute/cuda/repos/"$release"/x86_64/7fa2af80.pub"
$ sudo sh -c 'echo "deb http://developer.download.nvidia.com/compute/cuda/repos/'$release'/x86_64 /" > /etc/apt/sources.list.d/nvidia-cuda.list'
$ sudo sh -c 'echo "deb http://developer.download.nvidia.com/compute/machine-learning/repos/'$release'/x86_64 /" > /etc/apt/sources.list.d/nvidia-machine-learning.list'
$ sudo apt-get update

 

3. CUDA 설치

아래의 명령어로 CUDA 10.0을 설치 할 수 있다.

$ sudo apt-get install cuda-10.0

그리고 아래의 명령어는 cuDNN 7.x을 설치하는 명령어이다.

$ sudo apt-get install libcudnn7-dev

CUDA와 cuDNN 라이브러리를 설치하면 텐서플로우를 설치할 준비가 완료된 것이다.

4. 버전 확인

시스템에 설치된 CUDA 및 cuDNN 버전을 확인하기 위해서는 아래의 명령어를 실행하면 된다.
먼저 CUDA의 버전을 확인 하기 위해서는 아래의 명령어를 실행한다.

$ cat /usr/local/cuda/version.txt
CUDA Version 10.0.130

그리고 시스템에 설치된 cuDNN의 버전을 확인하기 위해서는 아래의 명령어를 사용한다. cudnn.h 헤더 파일 없이 라이브러리 파일만 존재해도 실행에는 문제가 없다.

$ cat /usr/include/cudnn.h | grep -E "CUDNN_MAJOR|CUDNN_MINOR|CUDNN_PATCHLEVEL"
#define CUDNN_MAJOR 7
#define CUDNN_MINOR 6
#define CUDNN_PATCHLEVEL 5
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)


$ sudo find / -name libcudnn*.*
/usr/lib/x86_64-linux-gnu/libcudnn.so.7
/usr/lib/x86_64-linux-gnu/libcudnn.so.7.5.1
/var/lib/dpkg/info/libcudnn7.list
/var/lib/dpkg/info/libcudnn7.md5sums
/var/lib/dpkg/info/libcudnn7.triggers
/var/lib/dpkg/info/libcudnn7.shlibs
CUDA 및 cuDNN 등의 라이브러리는 GPU에서 모델을 학습하고 추론하는데 가속 기능을 사용할 수 있다.
이 외에도 딥러닝 모델에서 추론하기 위해서 NVIDIA에서 TensorRT라는 최적화 라이브러리 또한 함께 제공된다.
TensorRT와 관련해서는 다음 글을 참고해 주시기 바랍니다.

5. Reference

CUDA 설치 우분투 환경 - Hiseon.me

https://hiseon.me/linux/ubuntu/cuda-install/