열정/연구 일지

CUDA 호환성 확인 및 설치 방법 (총정리)

lime9 2024. 7. 16. 12:05

본디 연구에서 환경 설정이 가장 어렵다는 말은 들어왔지만... 정말 쉽지 않다.

따라서 CUDA 환경 구축에 있었던 어려움을 모두 해소해줄 통합 CUDA 설치 방법을 작성해보고자 한다!

계속 업데이트 해나갈 생각이다. 해당 글은 Nvidia driver는 이미 설치되어 있는 상황을 가정하고 진행된다.

 

마지막 업데이트 일시: 2024년 7월 16일

 

 


 

준비 과정

설치 전 나의 환경 세팅에 대해 알아가야 한다.

  1. 나의 GPU 정보 얻기: 모델 명, driver 정보 등
  2. Driver 정보에 따른 사용 가능한 CUDA 탐색
  3. GPU capability에 따른 사용 가능한 CUDA 탐색
  4. 사용하고자 하는 PyTorch 버전에 따른 사용 가능한 CUDA 탐색

 

1. GPU 정보 얻기

GPU의 모델 명을 출력해주는 명령어는 다음과 같다.

nvidia-smi --query | fgrep 'Product Name'

 

현재 내가 보유하고 있는 GPU는 RTX 4090 1개이다.

 

다음으로, 전반적인 GPU 정보를 알려주는 명령어는 다음과 같다.

nvidia-smi

  • Driver Version: Nvidia GPU의 driver version을 나타낸다. Ubuntu의 Program 목록에 'Software & Update > 추가 드라이버'에서 설정한 드라이버와 동일할 것이다.

 

  • CUDA Version: 현재 사용 중인 driver와 호환이 잘 되는 (추천하는) CUDA의 버전으로, 가능한 최저 또는 최고 버전이 아님을 염두해야 한다.

(추후 나머지 목록 정리 예정)

 

2. Driver 버전에 따른 사용 가능한 CUDA 탐색

Nvidia driver 버전에 따른 사용 가능한 CUDA 버전은 다음 링크에서 제공한다.

https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html#cuda-major-component-versions

 

CUDA 12.5 Update 1 Release Notes

Using long-deprecated cusolverDnPotrf, cusolverDnPotrs, cusolverDnGeqrf, cusolverDnGetrf, cusolverDnGetrs, cusolverDnSyevd, cusolverDnSyevdx, cusolverDnGesvd, and their accompanying bufferSize functions will result in a deprecation warning. The warning can

docs.nvidia.com

 

우리가 주요하게 봐야 할 표는 아래와 같다.

 

Table 1: CUDA Toolkit and Corresponding Driver Versions

  Linux x86_64 Driver Version Windows x86_64 Driver Version
CUDA 12.5 Update 1 >=555.42.06 >=555.85
CUDA 12.5 GA >=555.42.02 >=555.85
CUDA 12.4 Update 1 >=550.54.15 >=551.78
CUDA 12.4 GA >=550.54.14 >=551.61
CUDA 12.3 Update 1 >=545.23.08 >=546.12
CUDA 12.3 GA >=545.23.06 >=545.84
CUDA 12.2 Update 2 >=535.104.05 >=537.13
CUDA 12.2 Update 1 >=535.86.09 >=536.67
CUDA 12.2 GA >=535.54.03 >=536.25
CUDA 12.1 Update 1 >=530.30.02 >=531.14
CUDA 12.1 GA >=530.30.02 >=531.14
CUDA 12.0 Update 1 >=525.85.12 >=528.33
CUDA 12.0 GA >=525.60.13 >=527.41
CUDA 11.8 GA >=520.61.05 >=520.06
CUDA 11.7 Update 1 >=515.48.07 >=516.31
CUDA 11.7 GA >=515.43.04 >=516.01
CUDA 11.6 Update 2 >=510.47.03 >=511.65
CUDA 11.6 Update 1 >=510.47.03 >=511.65
CUDA 11.6 GA >=510.39.01 >=511.23
CUDA 11.5 Update 2 >=495.29.05 >=496.13
CUDA 11.5 Update 1 >=495.29.05 >=496.13
CUDA 11.5 GA >=495.29.05 >=496.04
CUDA 11.4 Update 4 >=470.82.01 >=472.50
CUDA 11.4 Update 3 >=470.82.01 >=472.50
CUDA 11.4 Update 2 >=470.57.02 >=471.41
CUDA 11.4 Update 1 >=470.57.02 >=471.41
CUDA 11.4.0 GA >=470.42.01 >=471.11
CUDA 11.3.1 Update 1 >=465.19.01 >=465.89
CUDA 11.3.0 GA >=465.19.01 >=465.89
CUDA 11.2.2 Update 2 >=460.32.03 >=461.33
CUDA 11.2.1 Update 1 >=460.32.03 >=461.09
CUDA 11.2.0 GA >=460.27.03 >=460.82
CUDA 11.1.1 Update 1 >=455.32 >=456.81
CUDA 11.1 GA >=455.23 >=456.38
CUDA 11.0.3 Update 1 >= 450.51.06 >= 451.82
CUDA 11.0.2 GA >= 450.51.05 >= 451.48
CUDA 11.0.1 RC >= 450.36.06 >= 451.22
CUDA 10.2.89 >= 440.33 >= 441.22
CUDA 10.1 (10.1.105 general release, and updates) >= 418.39 >= 418.96
CUDA 10.0.130 >= 410.48 >= 411.31
CUDA 9.2 (9.2.148 Update 1) >= 396.37 >= 398.26
CUDA 9.2 (9.2.88) >= 396.26 >= 397.44
CUDA 9.1 (9.1.85) >= 390.46 >= 391.29
CUDA 9.0 (9.0.76) >= 384.81 >= 385.54
CUDA 8.0 (8.0.61 GA2) >= 375.26 >= 376.51
CUDA 8.0 (8.0.44) >= 367.48 >= 369.30
CUDA 7.5 (7.5.16) >= 352.31 >= 353.66
CUDA 7.0 (7.0.28) >= 346.46 >= 347.62

현재 나의 drivier version은 위에 확인한 결과, 535.183.01이다. 그렇다면 CUDA 12.3 GA 이전 버전은 모두 사용 가능한 것이다.

자, 이렇게만 CUDA가 결정되면 참 편할 것이다. 하지만 이것 외에도 고려해야할 것이 더 있다.

GPU의 capability에 따라 사용 가능한 CUDA가 결정된다.

 

3. GPU capability에 따른 CUDA 버전 탐색

다음의 링크에서 확인할 수 있다.

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

 

CUDA - Wikipedia

From Wikipedia, the free encyclopedia Parallel computing platform and programming model In computing, CUDA (originally Compute Unified Device Architecture) is a proprietary[1] parallel computing platform and application programming interface (API) that all

en.wikipedia.org

 

필요한 일부분의 표만 확인해보자.

Table 2: Compute Capability, GPU semiconductors and Nvidia GPU board products

 

위에서 내가 사용하는 GPU 버전은 GeForce RTX 4090로 확인했다. 해당 버전의 micro-architecture는 Ada Lovelace로, capability 버전은 8.9이다 (왜 GPU마다 이런 이름을 붙여놓았을까...?)

Table 3: Compute Capability

 

8.9 버전은 CUDA SDK 11.8부터 사용할 수 있다. 따라서 나의 환경에서는 최소 CUDA 11.8 GA ~ 최대 CUDA 12.2 Update 2를 사용할 수 있다.

복잡해보이지만 막상 해보니 매우 쉽다.

 

4. PyTorch 버전에 따른 사용 가능한 CUDA 탐색

이때, 대부분의 머신 러닝, 딥 러닝 연구자 또는 개발자는 PyTorch를 많이 사용할 것이다. 그렇다면 이 PyTorch와의 호환성도 고려해줘야 한다 (슬슬 머리가 아파온다).

 

PyTorch 버전에 따른 지원 CUDA 버전은 아래 링크에서 확인해볼 수 있다.

https://pytorch.org/get-started/previous-versions/

 

Previous PyTorch Versions

Installing previous versions of PyTorch

pytorch.org

 

PyTorch 2.3.0 버전을 사용하고 싶은 경우, 11.8 GA ~ 12.2 Update 2 내에서 CUDA 11.8 또는 12.1을 사용하면 된다.

 

 


 

설치 과정

그럼 본격적으로 설치를 진행해보자. 위의 준비 과정을 통해 우리가 구축해야 하는 환경을 파악할 수 있었다. 나는 다음과 같이 환경을 구성해보고자 한다.

  • Ubuntu LTS 22.04
  • Nvidia GeForce RTX 4090
  • PyTorch v2.0.0
  • CUDA 11.8

다음의 순서로 설치를 진행하면 된다.

  1. CUDA 이전 버전 삭제 (Optional)
  2. Nvidia driver 설치
  3. CUDA Toolkit 설치
  4. cuDNN 설치
  5. 설치 확인

 

1. CUDA 이전 버전 삭제 (Optional)

이전에 설치되어 있던 CUDA가 있다면 완전히 삭제해주어야지 재설치에 문제가 없다. 다음의 명령어를 통해 Nvidia driver를 삭제해보자.

# Nvidia driver 삭제
sudo apt-get purge nvidia*
sudo apt-get autoremove
sudo apt-get autoclean
sudo rm -rf /usr/local/cuda*

 

다음, 설치되어 있는 cuda를 삭제한다.

# CUDA 삭제
sudo rm -rf /usr/local/cuda*
sudo apt-get --purge remove 'cuda*'
sudo apt-get autoremove --purge 'cuda*'

 

삭제를 다 한 후에 모두 삭제되었는지 확인을 해본다. 다음 명령어를 입력했을 경우에 아무것도 나오지 않아야 한다.

sudo dpkg -l | grep nvidia
sudo dpkg -l | grep cuda

 

무언가 출력된다면 해당 파일 명을 다음 명령어를 통해 명시하여 제거한다.

sudo apt-get remove --purge [name]

 

위의 명령을 수행한 후에 다음 명령을 차례로 입력하여 결과를 보자.

nvidia-smi
nvcc -V

 

결과는 아무것도 나오지 않아야 제대로 삭제가 진행된 것이다. 아래 그림과 같이 출력되어야 한다.

 

2. Nvidia driver 설치

다음 명령어로 설치 가능한 드라이버를 확인할 수 있다.

ubuntu-drivers list

 

다음의 드라이버 목록에서 server, open이 붙지 않은 버전의 설치가 권장된다. 나는 nvidia-driver-535를 설치하려고 한다. autoinstall 명령어를 수행하면 권장 버전을 자동으로 설치해준다. 혹은 아래 install 명령으로 특정 버전을 설치할 수 있다.

ubuntu-drivers autoinstall
apt-get install nvidia-driver-[version]

 

또는 직접 드라이버를 다운로드 받고 설치해도 된다 (이 방법을 추천한다).

https://www.nvidia.com/Download/index.aspx

 

Download the latest official NVIDIA drivers

Download the latest official NVIDIA drivers

www.nvidia.com

 

해당 페이지에서 나의 GPU 유형을 선택하면 해당 모델에 맞는 드라이버를 검색해주고, 설치할 수 있다.

 

드라이버가 이미 설치되어 있는 환경이라면 Ubuntu 프로그램 목록에서 드라이버를 선택하여 변경해줄 수 있다.

Program > Software & Update > 추가 드라이버에서 권장되는 드라이버를 선택하고 다시 시작해주면 된다.

 

3. CUDA Toolkit 설치

다음으로 CUDA Toolkit을 설치해보자. 다음의 링크를 통해 설치 페이지로 들어갈 수 있다.

https://developer.nvidia.com/cuda-toolkit-archive

 

CUDA Toolkit Archive

Previous releases of the CUDA Toolkit, GPU Computing SDK, documentation and developer drivers can be found using the links below. Please select the release you want from the list below, and be sure to check www.nvidia.com/drivers for more recent production

developer.nvidia.com

 

원하는 CUDA의 버전을 선택하고, 나의 설치 platform 환경에 따라 옵션을 선택해주면 CUDA 설치 명령어가 아래 나온다.

 

아래 명령어대로 Terminal에 입력해주면 된다.

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda-repo-ubuntu2204-11-8-local_11.8.0-520.61.05-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2204-11-8-local_11.8.0-520.61.05-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2204-11-8-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda

 

4. cuDNN 설치

다음의 페이지에서 cuDNN 다운로드를 진행할 수 있다.

https://developer.nvidia.com/rdp/cudnn-archive

 

cuDNN Archive

Download releases from the GPU-accelerated primitive library for deep neural networks.

developer.nvidia.com

 

설치하고자 하는 cuDNN 버전은 8.6이다 (CUDA 11.8 버전과 잘 호환된다고 한다). 설치하고자하는 버전을 찾아 Platform 환경에 맞는 버전을 다운로드 받으면 된다. 링크를 복사해준다.

 

해당 링크를 통해 다음의 명령어를 차례로 진행한다.

wget https://developer.nvidia.com/compute/cudnn/secure/8.6.0/local_installers/11.8/cudnn-local-repo-ubuntu2204-8.6.0.163_1.0-1_amd64.deb
sudo dpkg -i cudnn-local-repo-ubuntu2204-8.6.0.163_1.0-1_amd64.deb
sudo cp /var/cudnn-local-repo-ubuntu2204-8.6.0.163/cudnn-local-FAED14DD-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cudnn

 

5. 설치 확인

CUDA Toolkit 설치 확인은 아래의 명령어로 진행한다.

nvcc -V

 

내가 설치한 버전인 11.8이 제대로 출력되는지 확인한다.

 

cuDNN의 설치 확인은 다음의 명령어로 수행한다. cuDNN은 따로 버전 확인 명령어가 없어 헤더 파일을 확인하는 듯하다.

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

 

내가 설치한 버전은 8.6이므로 #define CUDNN_MAJOR [version] 에 8이 출력되어야 하고, #define CUDNN_MINOR [version] 에 소수점 부분의 6이 출력된다.

 


 

Reference

https://jjuke-brain.tistory.com/entry/GPU-%EC%84%9C%EB%B2%84-%EC%82%AC%EC%9A%A9%EB%B2%95-CUDA-PyTorch-%EB%B2%84%EC%A0%84-%EB%A7%9E%EC%B6%94%EA%B8%B0-%EC%B4%9D%EC%A0%95%EB%A6%AC

 

GPU 서버 사용법 - CUDA, PyTorch 버전 맞추기 (총정리)

논문 구현을 해볼 때마다 PyTorch버전에 따라 필요한 CUDA 버전이 다르고, 버전이 서로 맞지 않아 시간을 낭비하는 경우가 많았다. 이를 해결하기 위해 (내가 썼던..) 여러 글을 참조해서 docker 컨테

jjuke-brain.tistory.com

 

https://velog.io/@d0ngje/Nvidia-%EA%B7%B8%EB%9E%98%ED%94%BD-%EC%B9%B4%EB%93%9C-%EC%82%AD%EC%A0%9C-%EC%9E%AC%EC%84%A4%EC%B9%98

 

Nvidia 그래픽 드라이버 & CUDA 삭제와 재설치

Autoware 설치를 해보려하니 nvidia 그래픽 드라이버, cuda 설치 때문에 골치가 아프다.몇번을 찾아서 하니 귀찮아서 기록을 해두려 한다.우선 위의 명령어로 현재 설치된 그래픽 드라이버와 cuda의 ver

velog.io

 

https://dain2013.tistory.com/128

 

[Ubuntu] Ubuntu 22.04 server - Nvidia Driver 설치 및 CUDA 설치

안녕하세요. 글로벌 IT Service Leader 주식회사 #다인엔시스 입니다.오늘은 Ubuntu 22.04 server에서 Nvidia Driver 설치 및 CUDA 설치 방법에 대해 알아보고자 합니다.  Nvidia Driver 설치 (apt install 이용) 다음

dain2013.tistory.com