[WSL2] CUDA 환경 설정하기 (CUDA Toolkit, CuDNN)

최가윤·2024년 9월 6일
0

WSL2

목록 보기
2/4
post-thumbnail

WSL2에서 GPU를 사용하기 위한 CUDA 설정을 해보자! 처음에는 헷갈리고 어려웠지만, 몇 번 시행착오를 겪으며 설치하다보니 익숙해지고 있다. WSL2를 세팅하는 동안 가장 중요하다고 느낀 점은 한국어가 편하다고 블로그를 뒤적거리는 것보다 NVIDIA 공식 홈페이지를 확인해보자는 것이다.

일반적으로 CUDA 설정은 NVIDIA Driver, CUDA Toolkit, cuDNN 설치를 이야기한다.

  • Driver: GPU 하드웨어와 운영 체제 간 통신을 가능하게 하는 소프트웨어.
  • CUDA Toolkit: 개발자들이 GPU를 사용하여 병렬 컴퓨팅을 구현할 수 있도록 도구와 라이브러리를 제공.
  • cuDNN: 딥 러닝 알고리즘의 GPU 가속을 위한 최적화된 함수와 루틴을 제공하는 라이브러리.

1. NVIDIA Driver

CUDA 설정을 진행하면서 가장 헷갈렸던 점이다. 블로그에서는 다들 NVIDIA Driver를 설치해야 된다고 하는데, 일반적으로 컴퓨터를 새로 사자마자 Windows NVIDIA Driver를 설치하기 때문이다. 그러면 Linux Driver를 새로 설치하라는 의미인가? 싶었지만, WSL2에서는 Linux Driver를 인식하지 못하고 계속 오류가 발생했다.

NVIDIA에서는 다음과 같이 안내하고 있다.

Once a Windows NVIDIA GPU driver is installed on the system, CUDA becomes available within WSL 2. The CUDA driver installed on Windows host will be stubbed inside the WSL 2 as libcuda.so, therefore users must not install any NVIDIA GPU Linux driver within WSL 2. One has to be very careful here as the default CUDA Toolkit comes packaged with a driver, and it is easy to overwrite the WSL 2 NVIDIA driver with the default installation.

한 마디로 Linux NVIDIA Driver를 별도로 설치하면 overwrite 문제가 발생하기에, Windows NVIDIA Driver를 사용 + 추가로 WSL2용 CUDA Toolkit 설치만 할 것을 권장한다는 이야기이다. 실제로도 Windows terminal, WSL2, Ubuntu에 nvidia-smi 명령어를 입력하면, Driver가 설치되어 있고 GPU를 잘 인식하고 있음을 확인할 수 있다.

2. CUDA Toolkit

먼저 오래된 GPG key를 삭제한다.

sudo apt-key del 7fa2af80

CUDA Toolkit 설치 옵션은 두 가지가 있다.
1. WSL-Ubuntu package를 이용한 설치 (권장)
2. Meta package를 이용한 설치

이 글에서는 권장 옵션에 대해 설명하고자 한다. 공식 링크를 따라가면 최신 버전 12.6 다운로드 방법을 안내해준다. 하지만, 무작정 최신 버전을 다운로드하기보단 개인의 GPU와 NVIDIA Driver에 따라 버전을 선택해야하므로 CUDA Toolkit Archive에 들어가자.

일반적으로 nvidia-smi 명령어를 입력한 뒤 우상단에 CUDA Version보다 같거나 낮은 버전을 사용한다. 해당 명령어 상의 CUDA 버전과 Cuda Toolkit의 버전이 같은 것을 가르키지 않기에 무조건 같을 필요는 없다 (참고).

Toolkit

wget https://developer.download.nvidia.com/compute/cuda/12.0.0/local_installers/cuda_12.0.0_525.60.13_linux.run
sudo sh cuda_12.0.0_525.60.13_linux.run

설치가 정상적으로 끝났는지 확인해보자

ls /usr/local/ | grep cuda

3. cuDNN

cuDNN 홈페이지에서 내 CUDA Version에 맞는 파일을 선택한다. 나는 CUDA Toolkit 12.0 버전을 설치했으므로, CUDA Version 12를 선택했다.

cuDNN

Ubuntu의 deb 파일이 아닌 Tarball의 tar.xz 파일로 다운로드 후 설치했다.

# 다운로드
wget https://developer.download.nvidia.com/compute/cudnn/redist/cudnn/linux-x86_64/cudnn-linux-x86_64-9.4.0.58_cuda12-archive.tar.xz

# 압축해제
tar -xvf cudnn-linux-x86_64-9.4.0.58_cuda12-archive.tar.xz

# CUDA 폴더로 이동
cd cudnn-linux-x86_64-9.4.0.58_cuda12-archive
sudo cp include/cudnn*.h /usr/local/cuda-12.0/include
sudo cp lib/libcudnn* /usr/local/cuda-12.0/lib64

설치를 완료하기 위해서는 PATH 설정이 필요하다.

vi ~/.profile
PATH=/usr/local/cuda-12.0/bin:$PATH
LD_LIBRARY_PATH=/usr/local/cuda-12.0/extras/CUPTI/lib64:$LD_LIBRARY_PATH
LD_LIBRARY_PATH=/usr/local/cuda-12.0/lib64:$LD_LIBRARY_PATH
source ~/.profile

설치가 정상적으로 끝났는지 확인해보자

nvcc --version

WSL2의 자체적인 한계로 아직 profilers를 지원하지 않으며, nvidia-smi와 같은 명령어를 사용해도 특정 프로세스가 얼마만큼의 vram을 사용하는지 확인할 수 없다. (e.g. GPU Memory Usage shows "N/A")

예전에 이 문제를 해결하려고 Linux용 Driver를 설치하는 등의 노력을 해봤지만... 애초에 해결할 수 있는 문제가 아닌 듯하니 받아들이자.

참고자료

WSL2로 CUDA 환경 설정하기
Steps to manage multiple CUDA environments

profile
Study AI (2022 - )

0개의 댓글

관련 채용 정보