
강의 영상 보기 (새 탭에서 재생)YouTube
📓Google Colab에서 실습하기
이 레슨은 PyTorch/GPU가 필요합니다. 노트북을 다운로드 후 Google Colab에서 열어주세요.
학습 내용
CUDA 환경 설정
학습 목표
- •CUDA 개발 환경의 구성 요소를 이해한다
- •CUDA Toolkit을 설치한다
- •nvcc 컴파일러 사용법을 익힌다
- •환경 설정을 검증한다
CUDA 개발 환경 구성 요소
CUDA 개발에는 세 가지 핵심 구성 요소가 필요합니다.
필수 구성 요소
| 구성 요소 | 역할 | 설치 방법 |
|---|---|---|
| NVIDIA 드라이버 | GPU 하드웨어 제어 | NVIDIA 웹사이트 |
| CUDA Toolkit | 개발 도구 및 라이브러리 | developer.nvidia.com |
| 호환 컴파일러 | C/C++ 컴파일 | Visual Studio, GCC |
설치 순서
1. NVIDIA 그래픽 드라이버 설치
2. CUDA Toolkit 설치
3. 환경 변수 설정
4. 설치 확인
GPU 호환성 확인
Compute Capability
각 NVIDIA GPU는 Compute Capability라는 버전을 가집니다.
| 세대 | Compute Capability | 예시 GPU |
|---|---|---|
| Kepler | 3.0 - 3.7 | GTX 780 |
| Maxwell | 5.0 - 5.3 | GTX 970 |
| Pascal | 6.0 - 6.2 | GTX 1080 |
| Turing | 7.5 | RTX 2080 |
| Ampere | 8.0 - 8.6 | RTX 3090 |
| Ada Lovelace | 8.9 | RTX 4090 |
호환성 확인 방법
bash# Windows (PowerShell) nvidia-smi # 출력 예시: # NVIDIA-SMI 535.104.05 Driver Version: 535.104.05 CUDA Version: 12.2
CUDA Toolkit 설치
다운로드 위치
- •공식 사이트: developer.nvidia.com/cuda-toolkit
설치 옵션
| 옵션 | 설명 | 권장 사용자 |
|---|---|---|
| Express | 모든 구성 요소 자동 설치 | 초보자 |
| Custom | 필요한 구성 요소만 선택 | 고급 사용자 |
주요 설치 구성 요소
CUDA Toolkit 구성 요소:
├── CUDA Runtime # 런타임 라이브러리
├── CUDA Libraries # cuBLAS, cuFFT, cuDNN 등
├── CUDA Tools # nvcc, nvprof, Nsight
├── CUDA Samples # 예제 코드
└── Documentation # 문서
환경 변수 설정
Windows 환경 변수
CUDA_PATH = C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.0
PATH += %CUDA_PATH%\bin
PATH += %CUDA_PATH%\libnvvp
Linux 환경 변수 (.bashrc)
bashexport CUDA_HOME=/usr/local/cuda export PATH=$CUDA_HOME/bin:$PATH export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH
환경 변수 확인
bash# CUDA 버전 확인 nvcc --version # 출력 예시: # nvcc: NVIDIA (R) Cuda compiler driver # Built on Tue_Aug_15_22:02:13_PDT_2023 # Cuda compilation tools, release 12.2, V12.2.140
nvcc 컴파일러
**nvcc(NVIDIA CUDA Compiler)**는 CUDA 코드를 컴파일하는 도구입니다.
nvcc의 역할
┌─────────────────────────────────────┐
│ .cu 소스 파일 │
└──────────────┬──────────────────────┘
↓
┌─────────────────────────────────────┐
│ nvcc │
│ ┌─────────┐ ┌───────────────┐ │
│ │ Host 코드│ │ Device 코드 │ │
│ │ (C/C++) │ │ (CUDA 커널) │ │
│ └────┬────┘ └───────┬───────┘ │
│ ↓ ↓ │
│ gcc/cl.exe PTX/cubin │
└──────────────┬──────────────────────┘
↓
┌─────────────────────────────────────┐
│ 실행 파일 (.exe/.out) │
└─────────────────────────────────────┘
기본 컴파일 명령
bash# 기본 컴파일 nvcc hello.cu -o hello # 최적화 옵션 nvcc -O3 hello.cu -o hello # 아키텍처 지정 nvcc -arch=sm_86 hello.cu -o hello # 디버그 정보 포함 nvcc -g -G hello.cu -o hello
주요 nvcc 옵션
| 옵션 | 설명 | 예시 |
|---|---|---|
-o | 출력 파일명 지정 | -o myapp |
-arch | GPU 아키텍처 지정 | -arch=sm_86 |
-O | 최적화 레벨 | -O3 |
-g | Host 디버그 정보 | -g |
-G | Device 디버그 정보 | -G |
-I | 헤더 파일 경로 | -I/path/to/headers |
-L | 라이브러리 경로 | -L/path/to/libs |
-l | 라이브러리 링크 | -lcudart |
분리 컴파일
bash# 대규모 프로젝트에서 분리 컴파일 nvcc -dc module1.cu -o module1.o nvcc -dc module2.cu -o module2.o nvcc module1.o module2.o -o myapp
설치 확인
방법 1: nvidia-smi
bashnvidia-smi # 정상 출력 예시: # +-----------------------------------------------------------------------------+ # | NVIDIA-SMI 535.104.05 Driver Version: 535.104.05 CUDA Version: 12.2 | # |-------------------------------+----------------------+----------------------+ # | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | # | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | # |===============================+======================+======================| # | 0 NVIDIA GeForce ... Off | 00000000:01:00.0 Off | N/A | # | 0% 45C P8 15W / 350W | 512MiB / 24576MiB | 0% Default | # +-------------------------------+----------------------+----------------------+
방법 2: deviceQuery
bash# CUDA Samples의 deviceQuery 실행 ./deviceQuery # 주요 출력 정보: # - GPU 이름 # - Compute Capability # - CUDA 코어 수 # - 메모리 크기 # - 메모리 대역폭
방법 3: 간단한 테스트 프로그램
cuda// test_cuda.cu #include <stdio.h> __global__ void hello() { printf("Hello from GPU! Thread %d\n", threadIdx.x); } int main() { hello<<<1, 5>>>(); cudaDeviceSynchronize(); return 0; }
bash# 컴파일 및 실행 nvcc test_cuda.cu -o test_cuda ./test_cuda # 출력: # Hello from GPU! Thread 0 # Hello from GPU! Thread 1 # Hello from GPU! Thread 2 # Hello from GPU! Thread 3 # Hello from GPU! Thread 4
Python 환경에서 CUDA
PyTorch CUDA 확인
import torch
# CUDA 사용 가능 여부
print(f"CUDA available: {torch.cuda.is_available()}")
# CUDA 버전
print(f"CUDA version: {torch.version.cuda}")
# GPU 정보
if torch.cuda.is_available():
print(f"GPU: {torch.cuda.get_device_name(0)}")
print(f"GPU count: {torch.cuda.device_count()}")
cuDNN 설치
bash# cuDNN은 딥러닝 연산 최적화 라이브러리 # PyTorch, TensorFlow 성능 향상에 필수 # conda로 설치 conda install cudnn # 또는 NVIDIA 웹사이트에서 직접 다운로드
문제 해결
일반적인 오류와 해결책
| 오류 | 원인 | 해결책 |
|---|---|---|
| nvcc not found | 환경 변수 미설정 | PATH에 CUDA bin 추가 |
| Driver version insufficient | 드라이버 구버전 | 드라이버 업데이트 |
| No CUDA-capable device | GPU 미인식 | 드라이버 재설치 |
| Out of memory | GPU 메모리 부족 | 배치 크기 줄이기 |
드라이버/툴킷 버전 호환성
CUDA Toolkit 12.x → Driver 525.60.13 이상 필요
CUDA Toolkit 11.x → Driver 450.80.02 이상 필요
CUDA Toolkit 10.x → Driver 410.48 이상 필요
정리
| 항목 | 내용 |
|---|---|
| 필수 구성 요소 | NVIDIA 드라이버, CUDA Toolkit, 호환 컴파일러 |
| 버전 확인 | nvidia-smi, nvcc --version |
| 컴파일 명령 | nvcc source.cu -o output |
| 환경 변수 | CUDA_PATH, PATH, LD_LIBRARY_PATH |
| 테스트 도구 | deviceQuery, bandwidthTest |
핵심 포인트: 올바른 드라이버와 툴킷 버전 조합이 안정적인 CUDA 개발의 기초입니다.
레슨 정보
- 레벨
- Level 8: GPU 프로그래밍 (CUDA 기초)
- 예상 소요 시간
- 40분
- 참고 영상
- YouTube 링크
💡실습 환경 안내
이 레벨은 PyTorch/GPU가 필요하여 Google Colab 사용을 권장합니다.
Colab은 무료 GPU를 제공하여 PyTorch, CNN, Transformer 등을 실행할 수 있습니다.