Contents

Ubuntu에 NVIDIA Driver, CUDA, cuDNN 설치하기

Ubuntu에서 NVIDIA 그래픽카드를 사용할 경우 드라이버, CUDA, CUDNN을 잘 관리해주는게 생각보다 쉽지 않다. 특히, 종종 Ubuntu package를 업데이트했더니 version mismatch로 에러를 보는 경우도 꽤 자주 있었다. 이런 문제를 여러번 겪으면서 시행착오를 줄이기 위해 확실한 설치방법을 남기고자 한다.

이 글을 포함해 인터넷에 설치하는 여러 방법이 있지만 역시 가장 중요한 것은 공식설치문서이다. 공식문서가 굉장히 가독성이 떨어지고 읽기 귀찮게 생기기는 했지만 공식문서를 읽는 습관을 들이는 것은 매우 중요하다고 생각한다. 가급적이면 공식문서를 읽고 이 글은 읽은 내용에 심증을 굳히기 위한 자료로 사용되었으면 하는 바람이다.

NVIDIA Driver

우선 드라이버를 설치해야한다. Ubuntu를 desktop 버전으로 설치했다면 Software & Updates 앱의 Additional Drivers에서 설치하면 편리하다.

/ubuntu-nvidia/desktop-software-and-update.png
Software & Updates: Additional Drivers

특히, 괄호안에 tested라고 적힌 버전이 있는데 이는 해당 버전이 사용하는 Ubuntu 버전에서 잘 작동하는게 확인되었다는 의미이다. 따라서 tested라고 되어있는 버전이 있다면 해당 버전을 사용하면 된다. 서버환경이라면 본인에게 적절한 버전을 찾고 sudo apt install nvidia-driver-xxx로 설치하면 된다. NVIDIA Driver 설치 사이트에서도 설치파일을 .run형태로 제공하지만 X server가 작동하는 상황에서 설치할 경우 문제가 생길 수 있어 가급적이면 앞의 두 가지 방식을 권장한다.

설치가 완료되면 다음을 통해 확인할 수 있다.

1
cat /proc/driver/nvidia/version

CUDA

CUDA설치 자체는 간단한데 혼동이 생길 수 있는 부분이 있다.

/ubuntu-nvidia/nvidia-smi.png
nvidia-smi

오른쪽 상단을 보면 CUDA Version: 11.2라고 되어있다. 이 말은 지금 사용하는 driver가 지원하는 CUDA version이 11.2까지라는 뜻이지 현재 설치된 CUDA가 11.2라는 뜻이 아니다. 따라서 driver가 지원하는 version을 확인하고 해당 version에 맞는 CUDA version을 설치하면 된다. CUDA Toolkit Archive에 가서 해당 버전을 설치하면 된다. 이후과정은 NVIDIA 설치페이지가 워낙 잘 설명하고 있어 그대로 따라하면 된다. OS, architecture, distribution, version을 고르고 installation type을 고르면 설치방법이 나온다.

/ubuntu-nvidia/cuda-install-page.png
CUDA Toolkit Installation

설치된 뒤가 중요하다. 이는 Post-installation Actions에 잘 설명되어있다. 특히 신경써야 할 부분은 PATHLD_LIBRARY_PATH를 잡아주어야 한다. CUDA설치가 되었다면 /usr/local로 가보자. CUDA버전과 관련된 많은 문제는 바로 이 /usr/local에서 해결하면된다. 현재 설치된 버전에 해당하는 폴더가 있을 것이다. 여기서 지금 설치된 디렉토리를 확인해두자. 확인했다면 /etc/profile, ~/.profile, ~/.bashrc 중 한 곳에 등록을 해두자. 만약 서버에 설치하는 상황이라면 모든 사용자에게 NVIDIA CUDA정보를 등록해주어야 하므로 /etc/profilePATHLD_LIBRARY_PATH를 등록하면 된다. 등록하는 내용은 다음과 같다.

1
2
PATH=/usr/local/cuda-[YOUR VERSION]/bin${PATH:+:${PATH}}
LD_LIBRARY_PATH=/usr/local/cuda-[YOUR VERSION]/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

딥러닝 연구에는 이정도 설정이면 충분하지만 본인에게 해당하는 설정이 더 있을 수 있으니 Post-installation Actions을 잘 확인해보자.

CUDA설치는 다음을 통해 확인할 수 있다.

1
nvcc -V

CUDNN

CUDNN Documentation이 공식 설치 가이드이다. 다운받아서 복사해주는 방법과 debian installation이 있고 여기서는 다운받아 복사하는 방법을 설명한다. NVIDIA cuDNN 페이지에서 사용하는 환경에 맞는 파일을 받으면 된다. 개별로 받기보다는 상단의 묶음파일을 받으면 편리하다. 받으면 .tgz파일이 생기게 된다. 여기서부터가 중요하다. 파일 안에는 cuda폴더가 있고 그 안에 lib64, include가 있다. 압축을 풀고 위에서 확인해둔 /usr/local의 cuda 디렉토리에 맞게 옮겨주어야 한다.

  • cudnn.h

    1
    
    sudo cp cuda/include/cudnn*.h /usr/local/cuda-[YOUR VERSION]/include 
    
  • lib64

    Symbolic link를 보존해야하므로 -P option을 붙여 복사해야 한다.

    1
    
    sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda-[YOUR VERSION]/lib64 
    
  • 권한부여

    1
    
    sudo chmod a+r /usr/local/cuda-[YOUR VERSION]/include/cudnn*.h /usr/local/cuda-[YOUR VERSION]/lib64/libcudnn*
    

CUDNN 설치는 버전에 따라 다른데 8.X부터는 아래를 통해 확인한다.

1
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

8.X이전 버전이라면 다음을 통해 확인한다.

1
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

Reference