- CUDA 프로그래밍을 배우기 위해 어떤 책/과정/프로젝트를 수강해야 할지 궁금 (일하고자 하는 많은 회사들이 CUDA경험을 요구하기 때문)
HN의 답변들 정리
-
학습 자료와 첫걸음
-
NVIDIA 공식 CUDA Programming Guide와 NVIDIA의 아카이브 도서 추천
-
작은 예제 프로그램부터 시작해 점차 병렬화 연습, 기존 C/C++ 지식이 매우 중요
- 오픈소스 코드(GitHub 등)와 LLM(예: ChatGPT) 활용하여 코드 구조를 해석하고 실습
- 약 6~8주 계획으로 실습 위주로 접근 권장
-
필요 하드웨어 및 환경
- 최근 10년 이내 NVIDIA GPU(특히 Turing/RTX 20xx, Ampere/RTX 30xx 이상)라면 충분, 구형(Maxwell 이전)은 지원 및 성능 측면에서 한계
- CUDA Toolkit 최신 버전 사용, GPU의 Compute Capability 확인 필수(지원 표 참고)
- Windows, Linux 모두 가능하며, 환경에 따라 Docker 및 VPS도 활용 가능
- GPU가 없는 경우 leetgpu.com과 같은 온라인 에뮬레이터로 체험 가능
-
병렬 프로그래밍 기본기
- CUDA 문법 자체보다 병렬 알고리즘, 하드웨어 아키텍처 이해가 더 중요
- 대표 서적:
-
Programming Massively Parallel Processors (PMPP)
-
Foundations of Multithreaded, Parallel, and Distributed Programming
-
Scientific Parallel Computing
-
The Art of High Performance Computing (Victor Eijkhout, 무료)
- CUDA의 실제 현업 요구는 cuBLAS, cuDNN 등 CUDA 기반 라이브러리 활용 및 병렬 성능 극대화에 집중
-
학습 방법론
- 단순 문법 학습보다 작은 CPU 코드를 CUDA로 포팅 → 성능 벤치마크 → 점진적 최적화 방식 권장
- 처음에는 정확성 중심, 이후 성능 최적화(메모리 관리, shared memory, register 활용 등) 단계적 적용
- 실습 예제: prefix scan, GEMM, n-body simulation 등 고전 병렬 알고리즘 추천
- CUDA Thrust, CUTLASS, cub 등 고수준 추상화 라이브러리 우선 학습, 직접 구현은 나중에 도전
-
실무와 커리어
- CUDA 경험 요구는 대부분 딥러닝, 데이터 엔지니어링, HPC(과학계산), 게임 그래픽스 등에서 발생
- 단순히 PyTorch/Tensorflow가 아닌, 핵심 CUDA 커널/라이브러리 최적화 경험을 요구하는 자리도 있음
- 실무적 전문성을 쌓으려면 PTX, nvcc, cuobjdump, Nsight Systems/Compute 등 로우레벨 툴 활용 능력도 중요
- 커뮤니티 참여: gpumode Discord, GPU Puzzles 등 활발한 커뮤니티에서 실전 코드 리뷰와 토론
-
주의 및 현실적인 조언
- 시작은 쉽지만, 하드웨어별(아키텍처/명령어셋) 최적화와 호환성 확보는 매우 어렵고, 진입장벽이 높음
- 실제로는 직업 경험과 네트워크가 중요하며, 자기 주도 학습만으로는 현업 경력으로 대체될 수 없음
- CUDA는 하드웨어/병렬컴퓨팅/알고리즘/최적화가 모두 맞물린 분야이므로 한 분야에 집중해서 깊이 파고드는 전략 추천