CUDA 버전은 세 가지가 있어요
명령마다 아래 셋 중 다른 것을 보여 줘서, 한 서버에서 숫자가 서로 다르게 나오는 게 정상이에요.
- 드라이버: 드라이버마다 실행할 수 있는 최고 CUDA 버전이 정해져 있어요.
- CUDA 툴킷:
nvcc컴파일러와 개발용 라이브러리예요. CUDA 코드를 직접 컴파일할 때 필요해요. - 프레임워크의 CUDA 런타임: PyTorch 휠처럼 미리 빌드된 패키지에 들어 있는 CUDA 라이브러리예요. 시스템 툴킷과 따로 움직여요.
명령별로 알 수 있는 것
| 명령 | 알려 주는 것 | 주의할 점 |
|---|---|---|
nvidia-smi | 드라이버 버전, 드라이버가 지원하는 최고 CUDA 버전 | 설치된 툴킷 버전이 아니에요 |
nvcc --version | PATH에 잡힌 CUDA 툴킷 버전 | 툴킷이 없거나 PATH에 없으면 실행되지 않아요 |
cat /usr/local/cuda/version.json | /usr/local/cuda가 가리키는 툴킷 버전 | CUDA 11.1부터 있어요. 그 이전은 version.txt |
ls /usr/local/ | grep cuda | 설치된 툴킷 폴더 목록 | 여러 버전이 함께 있을 수 있어요 |
torch.version.cuda | PyTorch가 빌드될 때 쓴 CUDA 버전 | 시스템 툴킷과 상관없어요 |
torch.backends.cudnn.version() | PyTorch가 쓰는 cuDNN 버전 | 90100처럼 숫자로 나와요 |
nvidia-smi --query-gpu=compute_cap --format=csv | GPU의 compute capability | 오래된 드라이버는 지원하지 않을 수 있어요 |
nvidia-smi: 드라이버가 지원하는 최고 CUDA 버전
nvidia-smi| NVIDIA-SMI 550.54.15 Driver Version: 550.54.15 CUDA Version: 12.4 |오른쪽 위의 CUDA Version은 툴킷이 없어도 드라이버만 있으면 표시돼요. 툴킷을 12.1로 설치했어도 여기에는 12.4가 나올 수 있고, 이게 nvcc와 숫자가 다른 가장 흔한 이유예요.
스크립트에서 드라이버 버전만 뽑을 때는 쿼리 옵션을 써요. 나머지 항목은 nvidia-smi 사용법을 보세요.
nvidia-smi --query-gpu=name,driver_version --format=csvnvcc와 version.json: 설치된 CUDA 툴킷 버전
nvcc --versionCuda compilation tools, release 12.4, V12.4.131nvcc: command not found는 툴킷이 아예 없거나, /usr/local/cuda-12.x 같은 폴더에 있는데 PATH에 등록되지 않았다는 뜻이에요. 폴더를 직접 보면 둘을 구분할 수 있어요.
ls /usr/local/ | grep cuda
ls -l /usr/local/cuda
cat /usr/local/cuda/version.json/usr/local/cuda는 보통 실제 버전 폴더(예: /usr/local/cuda-12.4)를 가리키는 링크라서, 툴킷이 여러 개면 이 링크가 가리키는 쪽이 기본으로 쓰여요. 폴더는 있는데 nvcc만 안 잡힌다면 PATH를 추가하세요.
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}PyTorch의 CUDA와 cuDNN 버전
python -c "import torch; print(torch.__version__, torch.version.cuda, torch.backends.cudnn.version())"2.4.0+cu124 12.4 90100cuDNN은 합성곱 같은 딥러닝 연산을 빠르게 해 주는 NVIDIA 라이브러리예요. 숫자는 cuDNN 9부터 90100이 9.1.0을, 그 이전에는 8902가 8.9.2를 뜻해요. CPU 전용 빌드라면 CUDA와 cuDNN 자리에 None이 나와요.
pip로 설치한 PyTorch는 CUDA 런타임과 cuDNN을 함께 가져와서, 시스템에 nvcc가 없거나 버전이 달라도 GPU를 쓸 수 있어요. Linux에서는 pip list | grep nvidia로 nvidia-cudnn-cu12 같은 패키지가 보여요. apt로 따로 설치한 cuDNN(dpkg -l | grep cudnn)은 이 PyTorch가 쓰지 않아요.
GPU의 compute capability 확인
compute capability는 GPU 세대를 나타내는 번호예요(V100은 7.0, RTX 3090은 8.6). CUDA 버전이나 PyTorch 빌드가 내 GPU를 지원하는지 판단하는 기준이 돼요.
nvidia-smi --query-gpu=name,compute_cap --format=csvname, compute_cap
NVIDIA GeForce RTX 3090, 8.6오래된 드라이버에서 compute_cap이 유효하지 않은 필드라는 오류가 나오면 PyTorch에서 torch.cuda.get_device_capability(0)로 확인하세요. (8, 6)처럼 나와요.
버전이 서로 다를 때의 호환 기준
드라이버가 지원하는 CUDA 버전이 앱이 빌드된 CUDA 버전과 같거나 높아야 해요. 새 드라이버로 예전 CUDA 앱을 돌리는 건 괜찮지만 반대는 안 돼요.
| 상황 | 결과 |
|---|---|
nvidia-smi 12.4, torch.version.cuda 12.1 | 동작해요. 드라이버 쪽이 더 높아요. |
nvidia-smi 12.4, nvcc 12.1 | 정상이에요. 툴킷은 드라이버가 지원하는 버전 이하면 돼요. |
nvidia-smi 11.8, torch.version.cuda 12.4 | GPU를 쓸 수 없어요. 드라이버를 올리거나 더 낮은 CUDA로 빌드된 PyTorch를 설치하세요. |
nvcc 12.4, torch.version.cuda 12.1 | PyTorch 실행에는 상관없어요. CUDA 확장을 빌드할 때만 맞춰야 해요. |
같은 메이저 버전(예: 12.x) 안에서는 드라이버가 조금 낮아도 동작하는 경우가 많지만, 일부 기능이 제한될 수 있어요.
nvcc 버전은 CUDA 코드가 든 패키지를 소스에서 빌드하거나 PyTorch용 C++/CUDA 확장을 컴파일할 때 중요해요. 이때는 메이저 버전이 torch.version.cuda와 같아야 하고, 마이너 버전까지 맞추면 더 안전해요. PyTorch가 GPU를 아예 못 쓴다면 PyTorch에서 GPU를 인식하지 못할 때를 보세요.
Shelf GPU 서버에서 확인할 때
Shelf의 환경 템플릿은 드라이버까지 설치해 줘요. 예시 환경인 ‘Ubuntu 22.04 + CUDA 12.4’와 ‘PyTorch 2.4 Notebook’은 둘 다 CUDA 12.4 기준이에요. 서버를 만든 뒤 위 명령으로 드라이버와 PyTorch의 CUDA 버전을 한 번 확인하고 시작하세요.
지금 만들 수 있는 GA102 20GB와 RTX 3090 24GB는 둘 다 compute capability 8.6이에요. 준비 중인 GPU는 V100 16GB가 7.0, A100 80GB가 8.0, RTX 3060 Ti 8GB가 8.6, AD103-32GB가 8.9예요.
자주 묻는 질문
Docker 컨테이너 안에서는 어떻게 확인하나요?
컨테이너 안의 nvidia-smi는 호스트 드라이버 기준 값을 보여 줘요. nvidia/cuda 이미지로 만든 컨테이너라면 보통 echo $CUDA_VERSION으로 이미지에 든 툴킷 버전을 볼 수 있어요.
Windows에서는 CUDA 버전을 어떻게 확인하나요?
명령 프롬프트나 PowerShell에서 nvidia-smi와 nvcc --version을 똑같이 쓸 수 있어요. 툴킷은 보통 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA 아래에 버전별 폴더로 설치돼요.
