상세 컨텐츠

본문 제목

CUDA (+CUDA Toolkit), Nvidia Driver, cuDNN 우분투 20.04 설치

PyTorch

by Riella 2021. 3. 2. 20:43

본문

728x90

Reference: 출처 1, 출처 2, CUDA 공식 웹사이트 (버전 체크), 공식으로 나온 설치 방법

Update: 24.07.29

 

그래픽 카드가 인식이 안되어서 최근 재설치 했습니다.

기존 파일을 지우는 이유는 충돌로 인해 broken package 어쩌구 뜨면 어차피 지워야 하기 때문에 그걸 막기 위해 미리 지워주는겁니다!

기존 파일 지우는걸 그대로 따라해도 여전히 지워지지 않는게 조금있어서 내용을 더 추가해두었습니다.

이젠 12.5를 설치해야하는 모양이더라고요.

공식 사이트에 들어가서 LTS 20.04 기준 Linux ➔ x86-64 ➔ Ubuntu ➔ 20.04를 누르면 설치 방법이 동일하게 나옵니다!

 

[기존 파일 지우기]

cuda를 설치한 적이 있다면 apt에 repo가 등록되어있을 건데 지워줍니다.

등록된 key값 있는지 확인

sudo apt-key list

nvidia/cuda 패키지가 존재한다면

sudo rm /etc/apt/sources.list.d/cuda*

nvidia-cuda-toolkit 제거

sudo apt remove --autoremove nvidia-cuda-toolkit

기존에 설치되어있는 Nvidia config 파일 의존성 파일 등등 지우기.

sudo apt-get purge nvidia*
sudo apt-get autoremove
sudo apt-get autoclean

그리고 기존 드라이버를 지워야 새로운 드라이버를 설치 할 수 있다 (링크). cuda가 안깔려서 추가로 넣음

우선 내 컴퓨터에 깔린 드라이버 확인

apt list -i | grep nvidia

만약에 특정 버전(version number)의 드라이버를 지우고 싶다 하면 아래처럼 적기

sudo apt purge nvidia-*-(version number)

만일 기존 깔려있는게 550이라서 충돌이 난다고 하면 아래처럼 적어주면 된다.

sudo apt purge nvidia-*-550

 

제가 설치할 때는 이렇지 않았지만 /usr/local/ 에 cuda 또는 cuda 뭐시기 폴더가 있으면 install이 안 되는 경우도 있다고 한다.

그럴 때는 그 폴더들 지워주기

sudo rm -rf /usr/local/cuda*

~/.bashrc에 cuda path랑 LD_LIBRARY_PATH를 설정했다면 지워주자.

nano ~/.bashrc
해당하는 경로 제거 후 저장

 

[cuda 설치하기 전 gcc, 커널 헤더, 패키지 설치]

cuda 사용 가능한 gpu인지 확인하기

lspci | grep -i nvidia

여기에 있는 gpu이면 사용 가능!

 

사용 가능한 리눅스 버전인지 확인하기

uname -m && cat /etc/*release

gcc가 설치되었는지 확인하기

gcc --version

마지막으로 커널 버전 확인하고 그에 맞는 커널 헤더와 개발 패키지를 설치해줘야 한다.

uname -r
예: 5.8.0-44-generic라고 뜨면 5.8.0-44가 커널 버전이다.
sudo apt-get install linux-headers-$(uname -r)
예: sudo apt-get install linux-headers-5.8.0-44

만일 E: Couldn't find any package by regex 'linux-headers-3.8.0-44' 이런 식으로 뜬다면

apt-cache search linux-headers를 입력하고 골라서 설치해도 된다는 글이 있었지만

아래 명령어를 통해 generic버전을 다운로드하였다.

sudo apt-get install linux-headers-generic

 

[cuda, Nvidia Driver, cuda toolkit 설치]

CUDA Toolkit 12.5에 잘 적혀있다. 따라서 입력해주면 된다.

ubuntu20.04, x86_64기준

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-keyring_1.1-1_all.deb

 

받은 패키지 압축 해제

sudo dpkg -i cuda-keyring_1.1-1_all.deb

cuda 설치

sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-5

Nvidia Driver 설치

sudo apt-get install -y nvidia-driver-555-open
sudo apt-get install -y cuda-drivers-555

 

cuda toolkit 설치

sudo apt install nvidia-cuda-toolkit

참고로 cuda가 라이브러리라면 cuda toolkit은 cuda로 gpu 프로그래밍할 때 쉽게 해주는 소프트웨어라고 한다.

만약 여기서 충돌이 나면 자동 삭제 후 다시 윗 커멘드 ㄱㄱ

sudo apt autoremove

 

아래 cuDNN 설치 부분은 추후 업뎃 하겠습니다.

환경 변수 설정한 다음 (하단에 있음) 컴퓨터 재부팅 해주세요

 

[cuDNN 설치]

공식 사이트에서 다운 가능합니다.

cuda 12.x는 cuDNN v8.9.7을 다운 받아야하네요

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb

이전에 쓰던 키가 있어서 지워줌 (새로 설치시 필요 X)

sudo apt-key del 7fa2af80

cuda 12 패키지를 위한 cuDNN 설치

 

sudo apt-get update
sudo apt-get -y install cudnn-cuda-12

일반적으로 설치하려면 아래처럼

sudo apt-get -y install cudnn

 

[환경 변수 영구적으로 설정]

설치한 cuda 버전이 12.5이면 아래 명령어에서 cuda-12.5로 변경

echo 'export PATH=/usr/local/cuda-12.5/bin${PATH:+:${PATH}}' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-12.5/lib64' >> ~/.bashrc
source ~/.bashrc

잘 더해졌나 확인하기

echo $PATH
echo $LD_LIBRARY_PATH

~/.profile에서 수정하셔도 됩니다.

 

[버전 확인]

첫 줄은 Nvidia Driver 버전과 cuda driver API 버전, 두 번째 줄로는 cuda runtime API 버전을 확인할 수 있다.

환경 변수가 맞게 설정되어 있다면 nvcc가 설치한 버전(12.5)으로 나와야 한다 (자세한 설명).

nvidia-smi는 변수 설정 후 껐다 켜야 뜨고

nvcc --version은 cuda toolkit 설치해야 뜹니다.

nvidia-smi
nvcc --version
(혹은 nvcc -V)

cuDNN 버전 확인

/sbin/ldconfig -N -v $(sed 's/:/ /' <<< $LD_LIBRARY_PATH) 2>/dev/null | grep libcudnn

 

참고: (수정 필요)

cuda 11.1을 깔고 파이썬 가상 환경을 만든 후에 그 안에서 pip로 pytorch를 설치할 때

pip install torch==1.8.0+cu111 torchvision==0.9.0+cu111 torchaudio==0.8.0 -f https://download.pytorch.org/whl/torch_stable.html

지금은 12.4까지 서포트가 된다 (12.5 깔았는데 ㅠ)

만일 cuda, cuDNN, pytorch버전이 안 맞으면 CUDNN_STATUS_NOT_INITIALIZED 에러가 뜬다 (물론 다른 이유로 이 에러가 뜨는 것도 가능하다- 링크).

설치 제거

 

 

끝까지 봐주셔서 감사합니다 :)

관련글 더보기

댓글 영역