buntu-drivers를 이용해 설치 가능한 nvidia driver 목록을 확인한다.
$ ubuntu-drivers devices
1. OS, GPU 확인
$ cat /etc/os-release
PRETTY_NAME="Ubuntu 24.04.3 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION="24.04.3 LTS (Noble Numbat)"
VERSION_CODENAME=noble
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=noble
LOGO=ubuntu-logo
$ lsb_release -a
2. 시스템에 엔비디아 GPU가 있는지 확인
$ lspci | grep -i NVIDIA
sudo apt install ubuntu-drivers-common
sudo ubuntu-drivers devices
3. sudo apt install nvidia-driver-550
<CUDA 설치>
1. 패키지 설치
$ sudo apt install build-essential
2. 다운로드 설치
$ w get
https://developer.download.nvidia.com/compute/cuda/12.1.1/local_installers/cuda_12.1.1_530.30.02_linux.run
$ sudo sh cuda_12.1.1_5.0.30.02_linux.run
-->첫번째 화면 : Continue --->두번째 화면 : accept 입력. ---> 세번째 화면 : 1) Driver [ ] 2) Install
설치가 진행 됨
$ sudo vi ~/.bashrc
아래 내용 추가
export PATH=/usr/local/cuda-12.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
4. 라이브러리 설정
1) 라이브러리 경로 설정
$ sudo vi /etc/ld.so.conf
<아래 내용 추가>
/usr/local/cuda-12.1/lib64
2) lib가 제대로 나오는지 확인
$ echo $LD_LIBRARY_PATH
5. 적용하기
$ sudo ldconfig -p | grep cuda
$ echo $PATH
여기서 12.1이 나오는것을 확인하면 OK입니다!
6) nvcc -V로 버전 확인
$ nvcc -V
$ nvcc --version
< cuDNN 설치하기>
1. 다운로드
$ w get
https://developer.download.nvidia.com/compute/cudnn/redist/cudnn_samples/linux-x86_64/cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz
2. 압축 풀기와 경로로 이동하기
$ tar -xvf cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz
$ ls -lh cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz <--- 파일 크기 확인하기
$ cd cudnn-linux-x86_64-8.9.5.30_cuda12-archive/
3.파일들을 cuda경로인 /usr/local/cuda로 복사하기
$ sudo cp include/cudnn*.h /usr/local/cuda-12.1/include
$ sudo cp lib/libcudnn* /usr/local/cuda-12.1/lib64
$ sudo chmod a+r /usr/local/cuda-12.1/include/cudnn*.h /usr/local/cuda-12.1/lib64/libcudnn*
4. 복사된 파일 확인
$ ls -l /usr/local/cuda-12.1/lib64/libcudnn*
5. 설치된 cuDNN 버전 확인
$ cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
# 출력 결과
#define CUDNN_MAJOR 8
#define CUDNN_MINOR 9
#define CUDNN_PATCHLEVEL 4
6. 예제 실해하기
1) 에제소스코드 작성하기
$ vi test_cudnn.c
#include <cudnn.h>
#include <stdio.h>
int main() {
cudnnHandle_t handle;
cudnnStatus_t status = cudnnCreate(&handle);
if (status == CUDNN_STATUS_SUCCESS) {
printf("cuDNN successfully initialized.\n");
} else {
printf("cuDNN initialization failed.\n");
}
cudnnDestroy(handle);
return 0;
}
2) 컴파일하기
$ gcc -o test_cudnn test_cudnn.c -I/usr/local/cuda-12.1/include -L/usr/local/cuda-12.1/lib64 -lcudnn
3) 실행하기
$ ./test_cudnn
대표적으로 다음 오류들이 있습니다.
Could not load library libcudnn_cnn_train.so.8. But I’m sure that I have set the right LD_LIBRARY_PATH
Segmentation fault (core dumped)
/usr/local/cuda-x.x에 대한 오류
/usr/local/ 에는 cuda와 cuda-x.x 디렉토리가 있습니다.(예를 들어 cuda 11.8을 설치한 경우 cuda/ cuda-11.8/ 이 있습니다.) 이 두개 버전의 충돌 때문에 오류가 발생하는 경우가 있습니다. 위의 환경변수 설정과 같이 환경변수를 cuda/ 디렉토리로 지정해 놨다면 다음을 시도해보세요.
cd /usr/local/cuda-<version>
# ex) cd /usr/local/cuda-11.8
sudo rm -rf lib64/libcudnn*
sudo rm -rf include/cudnn*