AI/Infrastructure

Ubuntu에서 `nvidia-smi` 설치 및 CUDA 테스트 가이드

Royzero 2025. 9. 1. 22:46
반응형

Ubuntu에서 nvidia-smi 설치 및 CUDA 테스트 가이드

설명: Ubuntu에서 NVIDIA 드라이버 설치로 nvidia-smi를 사용 가능하게 만들고, CUDA Toolkit 설치 후 nvcc와 간단한 커널 및 deviceQuery로 테스트하는 방법을 단계별로 정리합니다. Jammy(22.04), Noble(24.04) 기준으로 동작하며, 20.04도 유사합니다.


개요 (Introduction)

이 글은 “ubuntu에서 nvidia-smi 설치 및 cuda 테스트” 방법을 처음부터 끝까지 안내합니다. 기본 흐름은 다음과 같습니다.

  1. GPU 인식 확인 → 2) 권장 NVIDIA 드라이버 설치(nvidia-smi 포함) → 3) CUDA Toolkit 설치 → 4) 환경변수 설정(필요 시) → 5) 샘플 코드/유틸리티로 테스트 → 6) 문제 해결.

사전 준비

시스템/하드웨어 확인

# Ubuntu 버전 및 코드네임
. /etc/os-release && echo "$PRETTY_NAME  ($VERSION_CODENAME)"

# NVIDIA GPU가 잡히는지 확인
lspci | grep -i nvidia

# 커널/보안 부팅 상태 참고 (Secure Boot가 켜져 있으면 드라이버 로드 실패 가능)
mokutil --sb-state 2>/dev/null || echo "mokutil not installed"

패키지 최신화

sudo apt update && sudo apt -y upgrade
sudo apt -y install build-essential dkms linux-headers-$(uname -r) wget git

1. NVIDIA 드라이버 설치 (nvidia-smi 포함)

Ubuntu는 권장 드라이버를 자동으로 제안합니다.

# 권장 드라이버 확인
ubuntu-drivers devices

# 권장 드라이버 자동 설치
sudo ubuntu-drivers autoinstall
sudo reboot

재부팅 후 확인:

# 드라이버/카드 상태 확인 (정상 시 표가 출력)
nvidia-smi

# 모듈 로드 확인
lsmod | grep nvidia

참고: 일반적으로 nvidia-smi는 드라이버 패키지(예: nvidia-driver-535) 설치 시 함께 제공됩니다. 만약 nvidia-smi가 없거나 command not found라면, 설치한 드라이버 버전에 맞는 nvidia-utils-<버전>이 필요한지 확인하세요.

apt-cache policy nvidia-utils-* | grep Installed -n -A2
# (예) 드라이버가 535라면:
sudo apt install -y nvidia-utils-535

2. CUDA Toolkit 설치

CUDA는 두 가지 방식이 있습니다.

방법 A) Ubuntu 저장소(간단, 버전이 다소 보수적)

sudo apt update
sudo apt install -y nvidia-cuda-toolkit
nvcc --version
  • 장점: 설치가 간단하고 의존성 관리가 수월합니다.
  • 단점: 최신 CUDA가 아닐 수 있습니다.

방법 B) NVIDIA CUDA 저장소(권장, 최신에 가깝게)

배포판 코드네임(예: focal, jammy, noble)에 맞는 NVIDIA 공식 문서의 안내를 따르세요. 핵심 절차는 “키링 설치 → 저장소 등록 → 툴킷 설치”입니다. 아래는 기본 골자입니다.

# 1) CUDA 리포지토리 키링 설치 (버전은 시점에 따라 달라질 수 있음)
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu$(. /etc/os-release; echo ${VERSION_ID/./})/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt update

# 2) 원하는 툴킷 설치 (예: 최신 메이저 라인)
# 패키지 이름은 예: cuda-toolkit-12-4, cuda-toolkit-12-5 등
apt-cache search cuda-toolkit | grep '^cuda-toolkit'
sudo apt install -y cuda-toolkit-12-4

# 3) 심볼릭 링크(옵션) 및 환경 변수 설정
# /usr/local/cuda-12.x 가 설치된 경우 편의용 링크 및 PATH 추가
sudo ln -sfn /usr/local/cuda-12.4 /usr/local/cuda   # 설치 버전에 맞춰 조정
echo 'export PATH=/usr/local/cuda/bin:$PATH' | sudo tee /etc/profile.d/cuda.sh
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' | sudo tee -a /etc/profile.d/cuda.sh
source /etc/profile.d/cuda.sh

# 4) 확인
nvcc --version

메모: Ubuntu 저장소 방식(A)에서는 nvcc/usr/bin/nvcc에 위치해 별도 PATH 설정이 필요 없는 경우가 많습니다. NVIDIA 저장소 방식(B)은 /usr/local/cuda-<버전>에 설치되므로 PATH/LIB 설정이 필요합니다.


3. CUDA 동작 테스트

3-1. nvidia-smi/nvcc 버전 확인

nvidia-smi
nvcc --version
  • nvidia-smi 상단의 CUDA Version은 “드라이버가 지원하는 최대 CUDA 런타임 버전”을 의미합니다.
  • 실제 사용 중인 Toolchain은 nvcc --version 결과를 따릅니다.

3-2. 최소 샘플 커널 빌드/실행

hello.cu 작성 후 간단히 디바이스 이름을 출력하는 예제입니다.

// hello.cu
#include <cstdio>
#include <cuda_runtime.h>

__global__ void noop() {}

int main() {
    int count = 0;
    cudaGetDeviceCount(&count);
    if (count == 0) {
        printf("No CUDA devices found.\n");
        return 1;
    }
    cudaDeviceProp prop;
    cudaGetDeviceProperties(&prop, 0);
    printf("Hello from GPU: %s, SMs: %d\n", prop.name, prop.multiProcessorCount);
    noop<<<1,1>>>();
    cudaDeviceSynchronize();
    printf("OK\n");
    return 0;
}

컴파일/실행:

nvcc -O2 hello.cu -o hello
./hello

정상이라면 GPU 이름, SM 개수, “OK”가 출력됩니다.

3-3. 공식 샘플(deviceQuery)로 테스트

git clone https://github.com/NVIDIA/cuda-samples.git
cd cuda-samples
make -j"$(nproc)"  # 시간이 다소 걸릴 수 있음
cd Samples/1_Utilities/deviceQuery
./deviceQuery

마지막에 Result = PASS가 나오면 기본 환경이 정상입니다.

3-4. Docker로 빠르게 확인(선택)

이미 Docker와 NVIDIA Container Toolkit이 구성되어 있다면, 한 줄로 점검 가능합니다.

docker run --rm --gpus all nvidia/cuda:12.4.0-runtime-ubuntu22.04 nvidia-smi

4. 자주 발생하는 이슈 및 해결

NVIDIA-SMI has failed…

  • Secure Boot 활성화: UEFI에서 Secure Boot를 끄거나, MOK 등록 과정을 통해 서명된 모듈을 사용해야 합니다.

  • nouveau 충돌: 기본 오픈소스 드라이버가 로드되면 불안정해질 수 있습니다.

    lsmod | grep nouveau   # 로드되었는지 확인
    # 필요시 블랙리스트:
    echo -e "blacklist nouveau\noptions nouveau modeset=0" | sudo tee /etc/modprobe.d/blacklist-nouveau.conf
    sudo update-initramfs -u
    sudo reboot
  • 커널 업데이트 후 드라이버 재빌드 필요: dkms status로 상태 확인 후 재설치/재부팅.

nvcc 컴파일 에러(GCC 호환성)

  • 특정 CUDA 버전은 특정 GCC 버전과만 호환됩니다. 대안:

    sudo apt install -y gcc-12 g++-12   # 예시
    nvcc -ccbin g++-12 hello.cu -o hello

라이브러리 경로 문제

  • 실행 시 libcudart.so 등을 찾지 못하면 LD_LIBRARY_PATH 설정을 다시 확인하세요.

    echo $LD_LIBRARY_PATH
    ldconfig -p | grep cudart

5. 깔끔한 점검 체크리스트

  • lspci로 NVIDIA GPU 식별됨
  • ubuntu-drivers autoinstall로 권장 드라이버 설치 및 재부팅
  • nvidia-smi가 정상 출력
  • CUDA Toolkit 설치(nvcc --version 확인)
  • 간단 샘플(hello.cu 또는 deviceQuery) 빌드/실행 PASS

결론 (요약 정리)

Ubuntu에서 nvidia-smi는 NVIDIA 드라이버 설치 시 함께 제공되며, 정상 동작 확인 후 CUDA Toolkit을 설치해 nvcc와 샘플로 검증하면 환경이 완성됩니다. 최신성이 중요하면 NVIDIA 저장소(방법 B)를, 단순 설치가 목적이면 Ubuntu 저장소(방법 A)를 선택하세요. Secure Boot, nouveau 충돌, GCC 호환성만 유의하면 대부분의 설정은 안정적으로 마무리됩니다.

반응형