이 글은 Ubuntu 20.04 버전에 CUDA와 cuDNN설치를 위한 글이며, Nvidia 그래픽 드라이버 설치가 완료되었다는 가정하에 쓴 글이다.
Nvidia 그래픽 드라이버 설치가 아직 완료되지 않았다면, 해당 Nvidia 그래픽 드라이버 설치 게시글을 보고 그래픽 드라이버를 설치한 후 이 게시글을 보기를 추천한다.
CUDA(Compute Unified Device Architecture)는 NVIDIA에서 개발한 병렬 컴퓨팅 플랫폼 및 프로그래밍 모델이다. NVIDIA의 GPU(그래픽 처리 장치)를 사용하여 고성능 병렬 컴퓨팅을 수행하기 위해 설계되었다. CUDA는 일반적으로 과학 및 공학 응용 프로그램에서 병렬 처리를 통해 계산 작업을 가속화하는 데 사용된다.
CUDA는 GPU에서 실행되는 병렬 프로그래밍을 위한 특수한 C 언어 확장을 제공하며, 이를 통해 개발자는 GPU에서 동시에 여러 작업을 수행하도록 코드를 작성할 수 있다.
- 병렬 아키텍처 활용: CUDA는 수천 개의 병렬 스레드를 사용하여 GPU에서 동시에 수행되는 작업을 지원한다
- GPU 가속화: CUDA를 사용하면 CPU와 GPU를 협력하여 계산 작업을 분산할 수 있습니다. 이로써 일반적으로 높은 계산 성능을 얻을 수 있다.
- 쉬운 프로그래밍 모델: CUDA C는 일반적인 C 언어를 기반으로 하며, GPU에서 실행되는 코드를 쉽게 작성할 수 있도록 돕는다.
- 라이브러리 및 도구: CUDA는 다양한 라이브러리와 도구를 제공하여 과학 및 공학 응용 프로그램의 가속화를 지원한다.
위의 사진 클릭 또는 Nvidia CUDA 11.6 버전 공식 설치 링크 바로가기
위의 링크 또는 아래의 코드를 터미널 창에 입력하여 Installer를 다운받고 Installer를 실행한다.
# Installer 설치
wget https://developer.download.nvidia.com/compute/cuda/11.6.0/local_installers/cuda_11.6.0_510.39.01_linux.run
# Installer 실행
sudo sh cuda_11.6.0_510.39.01_linux.run
Installer를 실행하면 터미널 창이 아래와 같이 바뀐다.
- Continue 선택
- accept 입력
- 중요 ! Driver에 Enter키를 이용하여 드라이버 설치 제외
(드라이버 설치가 완료되었다는 가정하에 진행한다. 드라이버 설치는 Nvidia 그래픽 드라이버 설치 게시글로 이동하여 설치 후 진행)
- Install 선택
- 해당 창이 뜬다면 Yes 선택
해당 과정을 완료하면 설치가 진행되며, 설치 완료시 다음과 같은 화면을 볼 수 있다.
CUDA Toolkit 관련 설정을 환경 변수에 추가해야한다.
/etc/profile에 모든 권한을 부여하고 .bashrc 마지막에 다음 명령어들을 넣어주고 저장해준다.
# /etc/profile에 권한 부여 (나는 권한을 부여하지 않으면 nvcc -V를 했을 때 CUDA 확인이 되지 않았다.)
sudo chmod 777 /etc/profile
# 편집기를 이용하여 ./bashrc 수정 (gedit, vim, nano 등 원하는 편집기 사용)
gedit ~/.bashrc
# .bashrc 맨 마지막에 추가 후 저장
export PATH=$PATH:/usr/local/cuda-11.6/bin >> /etc/profile
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.6/lib64 >> /etc/profile
export CUDARDIR=/usr/local/cuda-11.6 >> /etc/profile
export CUDA_HOME=/usr/local/cuda
# .bashrc 수정 내용 적용
source ~/.bashrc
환경 변수 설정까지 마친 후, CUDA가 잘 설치되었는지 확인한다.
nvcc -V
다음과 같은 출력이 나오면 CUDA 설치가 완료된 것이다.
cuDNN(CUDA Deep Neural Network)은 NVIDIA에서 개발한 딥러닝을 위한 GPU 가속화 라이브러리다. 딥 뉴럴 네트워크(DNN)를 훈련하고 실행하는 데 사용되는 고성능 GPU 가속화를 지원한다. cuDNN은 NVIDIA의 CUDA 프레임워크와 함께 사용되어 딥러닝 모델의 효율적인 학습 및 추론을 가능하게 한다. 또한 cuDNN은 다양한 딥러닝 작업에 사용되는 최적화된 기본 빌딩 블록을 제공한다.
- 컨볼루션 연산 최적화: cuDNN은 컨볼루션(Convolution) 연산을 최적화하여 딥러닝 모델에서 주로 사용되는 합성곱 신경망(Convolutional Neural Network, CNN)의 학습 및 추론을 가속화한다.
- 풀링 연산 가속화: 풀링(Pooling) 연산도 최적화되어 딥러닝에서 자주 사용되는 풀링 작업을 효율적으로 수행할 수 있다.
- 정규화 및 활성화 함수 최적화: 정규화(Normalization) 및 활성화 함수(Activation Function)에 대한 최적화를 제공하여 더 빠른 훈련과 추론을 가능하게 한다.
- 하드웨어 가속화 지원: NVIDIA의 GPU 아키텍처에 최적화되어 있어, cuDNN은 NVIDIA GPU에서 최대의 성능을 발휘할 수 있다.
- 딥러닝 프레임워크 통합: cuDNN은 주요 딥러닝 프레임워크인 TensorFlow, PyTorch, Caffe, MXNet 등과 통합되어 사용자가 이러한 프레임워크에서 쉽게 cuDNN을 활용할 수 있다.
위의 사진 클릭 또는 Nvidia cuDNN 8.5.0 버전 공식 설치 링크 바로가기
cuDNN은 Nvidia 계정이 있어야 다운받을 수 있다. Nvidia 계정이 없다면 회원가입 후 진행해야한다.
아래 사진과 같이 CUDA 11.x
버전이며, cuDNN 8.5.0
버전인 탭에서
Local Installer for Linux x86_64 (Tar)
를 클릭하여 압축 파일을 다운받는다.
터미널 창을 열고 다음 명령어를 수행한다.
# Downloads 폴더로 이동
cd Downloads
# 압축파일 압축 해제
tar -xvf cudnn-linux-x86_64-8.5.0.96_cuda11-archive.tar.xz
그러면 아래 사진과 같이 압축 해제가 진행된다.
압축 해제가 완료되면 해당 파일들을 내 컴퓨터로 옮겨야한다. 아래의 명령어들을 실행하여 진행한다.
# cp : 복사 명령어
sudo cp cudnn-linux-x86_64-8.5.0.96_cuda11-archive/include/cudnn* /usr/local/cuda/include
sudo cp cudnn-linux-x86_64-8.5.0.96_cuda11-archive/lib/libcudnn* /usr/local/cuda/lib64
# chmod : 권한 부여 명령어
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
# ln : 링크 명령어
sudo ln -sf /usr/local/cuda-11.6/targets/x86_64-linux/lib/libcudnn_adv_train.so.8.5.0 /usr/local/cuda-11.6/targets/x86_64-linux/lib/libcudnn_adv_train.so.8
sudo ln -sf /usr/local/cuda-11.6/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8.5.0 /usr/local/cuda-11.6/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8
sudo ln -sf /usr/local/cuda-11.6/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8.5.0 /usr/local/cuda-11.6/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8
sudo ln -sf /usr/local/cuda-11.6/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8.5.0 /usr/local/cuda-11.6/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8
sudo ln -sf /usr/local/cuda-11.6/targets/x86_64-linux/lib/libcudnn_ops_train.so.8.5.0 /usr/local/cuda-11.6/targets/x86_64-linux/lib/libcudnn_ops_train.so.8
sudo ln -sf /usr/local/cuda-11.6/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8.5.0 /usr/local/cuda-11.6/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8
sudo ln -sf /usr/local/cuda-11.6/targets/x86_64-linux/lib/libcudnn.so.8.5.0 /usr/local/cuda-11.6/targets/x86_64-linux/lib/libcudnn.so.8
# 새로 추가된 라이브러리를 시스템에서 찾을 수 있도록 한다.
sudo ldconfig
모든 작업을 완료하면 아래 명령어를 통해 작업이 잘 완료되었는지 확인한다.
ldconfig -N -v $(sed 's/:/ /' <<< $LD_LIBRARY_PATH) 2>/dev/null | grep libcudnn
아래 사진과 같이 7가지가 잘 나오면 설치가 완료된 것이다.
위의 내용들을 따라 진행하면 CUDA 11.6 버전과 cuDNN 8.5.0 버전을 설치 할 수 있다. 딥러닝 공부를 위해선 꼭 필요한 작업이므로 기본 세팅시 진행하면 좋을 것이다.
Reference