개요

리눅스 개발을 하다보면, 엔비디아 드라이버, 도커, CMake 등 환경을 잡을 일이 있다. GPU가 있는 환경에서 경험상 가장 유용한 방법은

  1. NVIDIA 드라이버 설치
  2. NVIDIA 컨테이너 툴킷 설치
  3. Docker Hub에서 이미지 다운로드
  4. CMake 등 여러 빌드 도구 및 패키지 설치

이 과정이면 NVIDIA GPU 환경에서 작업마다 패키지 의존성을 피하여 독립된 환경을 구축할 수 있다.

NVIDIA 드라이버 설치

GPU를 활용한다면, 엔비디아 드라이버는 필수이다. 아래 명령어로 적절한 NVIDIA 드라이버 설치 유무를 확인한다.

nvidia-smi

GPU 정보가 제대로 뜨지 않는다면, 설치해야 한다. 아래 명령어로 적절한 드라이버 넘버를 확인한다.

ubintu-drivers devices

nvidia-driver-XXX - distro non-free recommnede 로그의 넘버로 NVIDIA 드라이버를 설치한다.

sudo apt-get install nvidia-driver-XXX

NVIDIA Container Toolkit 설치

NVIDIA Container Toolkit은 도커 컨테이너 내에서 GPU를 사용할 수 있도록 관리한다.

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt update
sudo apt install -y nvidia-container-toolkit
sudo systemctl restart docker

Docker 설치

우분투 시스템 패키지 업데이트

sudo apt-get update

패키지 설치

sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

Docker의 공식 GPG 키를 추가

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Docker의 공식 apt 레포지토리를 추가

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

우분투 시스템 패키지 업데이트

sudo apt-get update

Docker 설치

sudo apt-get install docker-ce docker-ce-cli containerd.io

Docker 상태 확인

sudo systemctl status docker

Docker 실행 확인

sudo docker run hello-world

C++ Clang 컴파일러 설치

아래 명령어로 clang을 설치한다.

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install clang
clang --version

아무 C++ 코드를 작성하고, 아래 명령어로 테스트 C++ 코드를 실행한다.

clang++ -std=c++17 -o test test.cpp
./test

Docker 이미지 다운로드

GPU 활용 가능한 Docker 이미지를 Docker Hub에서 다운받을 수 있다. 아래 링크에서 파이토치 이미지들이 많이 있다. cuda, cudnn 버전을 보고 선택해야 한다. Docker Hub pytorch/pytorch

runtime, devel 등 몇 가지 버전이 있다. runtime은 cudnn을 포함하여 딥러닝 애플리케이션을 가속한다. 반면에 devel은 CUDA 애플리케이션을 직접 컴파일 할 수 있다.

# runtime 이미지
docker pull pytorch/pytorch:2.4.0-cuda11.8-cudnn9-runtime

# CUDA 개발 가능한 이미지
docker pull pytorch/pytorch:2.4.0-cuda11.8-cudnn9-devel

다운로드한 이미지를 아래의 명령어로 실행할 수 있다.

# 다운로드한 이미지를 빌드
docker build -t <이미지 이름> .

# 이미지 확인
docker images

# 빌드한 이미지로 컨테이너 생성
docker run -it -d -p 호스트 포트:컨테이너 포트 -v 호스트 디렉토리:컨테이너 디렉토리 --name <이름> <이미지이름 >

# 컨테이너 목록 확인
docker ps

# 종료된 컨테이너 포함 목록 확인 
docker ps -a

# 종료된 컨테이너 삭제
docker rm <컨테이너 이름>

# 이미지 삭제
docker rmi <이미지 이름>

이 외에 다양한 명령어들을 사용할 수 있다.

CMake 설치

아래 명령어로 cmake를 설치한다.

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install cmake
cmake --version

CMkaeList.txt를 만들고 아래 내용을 작성하여 테스트 C++ 코드를 빌드한다.
이때 CMkaeList.txt는 프로젝트 폴더 안에 위치해야 한다.

project(test VERSION 1.0)

set(CMAKE_CXX_STANDARD 17)
set(CAMKE_CXX_STANDARD_REQUIRED True)

add_executable(${PROJECT_NAME} test.cpp)

아래 명령어로 CMake를 통해 소스 코드를 빌드한다.

mkdir build
cd build
cmake ..
make

아래 명령어로 빌드한 프로젝트를 실행한다.

./test