[설치]
0. 개념
NVIDIA driver : 디스플레이 출력, GPU 일반 작업
CUDA driver : CUDA 프로그램 실행
CUDA toolkit : CUDA 애플리케이션 개발, 컴파일
* CUDA 를 JAVA 에 비유하면,
CUDA driver는 JRE(java/실행환경),
CUDA toolkit은 JDK(javac/컴파일러) 로 보면 될 것 같습니다.
1. 설치 환경
Rocky Linux 9 / NVIDIA A40
- 24/12/24 현재 CUDA 12.6 Update 3 설치 가능
https://developer.nvidia.com/cuda-downloads
- 설치되는 패키지 아래 URL에서 확인
https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html
2. 설치 과정
1) 관련 패키지 설치
dnf install -y epel-release
dnf groupinstall -y "Development Tools"
dnf install -y gcc kernel-devel kernel-headers dkms libglvnd-devel
2) nouveau 제거 (nouveau는 리눅스 기본 오픈소스 드라이버로서, NVIDIA 공식 드라이버와 충돌, CUDA 불가 등 제약)
lsmod | grep nouveau
tee /etc/modprobe.d/blacklist-nouveau.conf <<EOF
blacklist nouveau
options nouveau modeset=0
EOF
dracut --force
reboot
3) cuda를 설치합니다. (nvidia-driver-cuda와 cuda-toolkit 등의 패키지가 포함되며, 필요시, 개별 설치 가능합니다.)
wget https://developer.download.nvidia.com/compute/cuda/12.6.3/local_installers/cuda-repo-rhel9-12-6-local-12.6.3_560.35.05-1.x86_64.rpm
dnf install -y cuda-repo-rhel9-12-6-local-12.6.3_560.35.05-1.x86_64.rpm
dnf install -y cuda
echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
만약, 설치 시 아래와 같은 오류가 나오면, egl-x11 패키지를 제거 후 다시 시도해 봅니다.
file /usr/lib64/libnvidia-egl-xcb.so.1 from install of nvidia-driver-libs-3:560.35.05-1.el9.x86_64 conflicts with file from package egl-x11-1.0.0^20240916gitf13be94-1.el9.x86_6
egl-x11은 OpenGL 및 EGL과 관련된 기본 X11 라이브러리 패키지이며, NVIDIA 드라이버가 이 패키지와 충돌이 발생할 수 있습니다. 필요시, egl-gbm, egl-wayland 를 별도 설치할 수 있습니다.
dnf remove -y egl-x11
4) GPU 정보 확인
# nvidia-smi
Tue Dec 24 13:39:46 2024
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 560.35.03 Driver Version: 560.35.03 CUDA Version: 12.6 |
|-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA A40 Off | 00000000:03:00.0 Off | 0 |
| 0% 30C P8 12W / 300W | 1MiB / 46068MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
| 1 NVIDIA A40 Off | 00000000:03:01.0 Off | 0 |
| 0% 32C P8 12W / 300W | 1MiB / 46068MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| No running processes found |
+-----------------------------------------------------------------------------------------+
5) CUDA 컴파일러 버전 확인 (제대로 설치가 되지 않으면
# nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2024 NVIDIA Corporation
Built on Tue_Oct_29_23:50:19_PDT_2024
Cuda compilation tools, release 12.6, V12.6.85
Build cuda_12.6.r12.6/compiler.35059454_0
6) 상세한 정보 필요 시, nvtop, nvitop 설치하여 사용
[삭제]
(주의) cuda, nvidia 관련 모든 패키지, 디렉토리, 모듈을 삭제합니다.
rpm -qa | egrep "cuda|nvidia"
dnf remove -y "cuda*"
dnf remove -y "nvidia*"
sudo dnf autoremove -y
sudo rm -rf /usr/lib64/nvidia /usr/lib/nvidia /var/lib/nvidia
sudo rm -rf /etc/modprobe.d/nvidia* /etc/modules-load.d/nvidi