# Ask HN: CUDA를 전문가 레벨로 배우려면 어떻게 해야하나요?

> Clean Markdown view of GeekNews topic #21364. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=21364](https://news.hada.io/topic?id=21364)
- GeekNews Markdown: [https://news.hada.io/topic/21364.md](https://news.hada.io/topic/21364.md)
- Type: GN+
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2025-06-10T09:30:25+09:00
- Updated: 2025-06-10T09:30:25+09:00
- Original source: [news.ycombinator.com](https://news.ycombinator.com/item?id=44216123)
- Points: 31
- Comments: 2

## Summary

CUDA 프로그래밍을 배우기 위해 어떤 책/과정/프로젝트를 수강해야 할지 묻는 질문에 대한 답변들을 정리했습니다. 초반 학습자료부터, 하드웨어 환경, 학습 방법론, 실무와 커리어까지 다양한 부분의 답변들을 볼 수 있습니다.

## Topic Body

- CUDA 프로그래밍을 배우기 위해 어떤 책/과정/프로젝트를 수강해야 할지 궁금 (일하고자 하는 많은 회사들이 CUDA경험을 요구하기 때문)  
### HN의 답변들 정리   
- **학습 자료와 첫걸음**  
  - **NVIDIA 공식 CUDA Programming Guide**와 [NVIDIA의 아카이브 도서](https://developer.nvidia.com/cuda-books-archive) 추천  
  - **작은 예제 프로그램부터 시작**해 점차 병렬화 연습, 기존 C/C++ 지식이 매우 중요  
  - 오픈소스 코드(GitHub 등)와 LLM(예: ChatGPT) 활용하여 코드 구조를 해석하고 실습  
  - 약 6~8주 계획으로 실습 위주로 접근 권장  
  
- **필요 하드웨어 및 환경**  
  - 최근 10년 이내 NVIDIA GPU(특히 Turing/RTX 20xx, Ampere/RTX 30xx 이상)라면 충분, 구형(Maxwell 이전)은 지원 및 성능 측면에서 한계  
  - CUDA Toolkit 최신 버전 사용, GPU의 Compute Capability 확인 필수([지원 표](https://developer.nvidia.com/cuda-gpus) 참고)  
  - Windows, Linux 모두 가능하며, 환경에 따라 Docker 및 VPS도 활용 가능  
  - GPU가 없는 경우 [leetgpu.com](https://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](https://discord.com/invite/gpumode), [GPU Puzzles](https://github.com/srush/GPU-Puzzles) 등 활발한 커뮤니티에서 실전 코드 리뷰와 토론  
  
- **주의 및 현실적인 조언**  
  - 시작은 쉽지만, 하드웨어별(아키텍처/명령어셋) 최적화와 호환성 확보는 매우 어렵고, 진입장벽이 높음  
  - 실제로는 직업 경험과 네트워크가 중요하며, **자기 주도 학습만으로는 현업 경력으로 대체될 수 없음**  
  - CUDA는 하드웨어/병렬컴퓨팅/알고리즘/최적화가 모두 맞물린 분야이므로 **한 분야에 집중**해서 깊이 파고드는 전략 추천

## Comments



### Comment 39990

- Author: ahwjdekf
- Created: 2025-06-12T08:22:00+09:00
- Points: 1

글쎄요.  cuda를 직접 사용할 경우가 있긴 할련지. 특히 한국에서요

### Comment 39893

- Author: neo
- Created: 2025-06-10T09:30:27+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=44216123) 
- 2008년 NVidia cudacontest 참가자로서, 인도에서 제출한 몇 안 되는 사람 중 한 명으로 BlackEdition Card 참가상도 받은 경험을 바탕으로 내가 따라온 방법 공유함  
  - NVidia CUDA Programming Guide 참고  
  - NVidia에서 배포한 CUDA Programming 관련 도서 활용([developer.nvidia.com/cuda-books-archive](https://developer.nvidia.com/cuda-books-archive) 참조)  
  - 기존 구현 기반으로 작은 프로그램부터 작성(강력한 C 언어 구현력 필수이므로 필요하다면 복습 권장)  
  - 필요한 Toolchain, 컴파일러 설치 및 작업용 하드웨어 확보 가정  
  - Github의 CUDA 프로젝트 코드 분석 및 최신에는 LLM 활용해서 코드 설명 요청 가능  
  - 작지만 병렬처리 기반 프로그램부터 점차 확대  
  - 1~2개월 차분히 진행하면 충분히 CUDA 프로그래밍 시작 가능  
  - 요즘은 2007/08년보다 자료와 리소스가 풍부한 환경  
  - 6~8주 학습 계획 수립 후 실행 추천  
  - 언제든 질문 남기면 도울 수 있는 부분 최대한 안내 가능  
    - 필요한 하드웨어 관련해서 구체적으로 궁금함. 5년 전쯤 나오 nvidia 그래픽카드만 있으면 충분한지, 아니면 더 특별한 사양이 필요한지 질문  
    - 어떤 개발 환경을 사용하는지 궁금함. 아직도 Windows가 CUDA 주 개발 환경인지 확인 원함

- Leela Chess Zero의 CUDA 코드 직접 살펴보니 이해할 만한 수준이었음  
  - 당시 Leela는 transformer 대신 DCNN 구조를 사용했는데, fast.ai 영상 통해 DCNN 기초 쉽게 배움  
  - Transformer는 더 복잡해 아직 학습 시작을 못함  
  - CUDA 언어 자체는 C++ 기반이므로 C++ 경험 있으면 어렵지 않게 접근 가능  
  - 다만 CUDA 개발자가 되고 싶다면 AI 프로그래밍 수준까지 도달 필요성 큼—AI는 CUDA보다 훨씬 깊고 방대한 영역이라 많은 시간과 실전 경험 필요  
  - 그래도 실력 갖추게 되면 시장 수요 매우 높음  
  - fast.ai 영상 강력 추천  
  - 게임 분야라면 3D 그래픽스까지 얘기가 이어지는데, 최근은 훨씬 더 복잡해진 상황이라 입문 경로를 모르겠음  
    - CUDA 개발자로 구직하는 게 현재 다른 소프트웨어 엔지니어 분야에 비해 부담이 적은지 질문. 현재 Java 미들웨어 개발자로서 CUDA와 AI 쪽이 커리어 전환에 좋을 것 같다는 의견  
    - 이 코드가 [여기](https://github.com/leela-zero/leela-zero) 맞는지 확인 요청 및 두 가지 초보 질문  
      - 왜 C++/CUDA를 직접 썼는지, 단순히 pytorch나 tensorflow로는 Leela 학습 속도가 부족한 건지  
      - 그리고 tensorflow 코드도 있는데 그 이유에 대한 궁금증

- 돈이 동기라면 HPC 및 수학적인 영역은 패스 추천  
  - 해당 분야는 박사급이 아니면 실력이 아무리 좋아도 관심 받기 어려움  
  - 진짜 돈이 되는 역량은 PTX, nvcc, cuobjdump, Nsight Systems, Nsight Compute 등 툴 마스터, 그리고 CUTLASS 같은 오픈소스 코드베이스 분석  
  - [관련 실전 노트](https://christianjmills.com/series/notes/cuda-mode-notes.html) 참고 추천  
  - 무엇보다 HN에만 머물지 말고 진짜 개발자 모여 있는 discord [gpu mode](https://discord.com/invite/gpumode) 커뮤니티 참여 권장  
    - 멋지고 실제적이지만 매우 틈새 분야로 보임  
    - 진입 자체가 어려우며 게임 산업, 드라이버 등 한정된 분야에서만 쓰임  
    - 처음부터 바로 그 단계까지 가려면 상당한 재능 필요성 언급

- [gpumode.com](https://www.gpumode.com/) 리소스 및 디스코드 커뮤니티 수개월 동안 공부 거리를 충분히 제공  
  - Programming massively parallel processors 책  
  - nvidia cuda 공식 문서는 매우 포괄적  
  - [GPU-Puzzles](https://github.com/srush/GPU-Puzzles)도 도전 추천  
    - [ThunderKittens flashattention-2 예시 코드](https://github.com/HazyResearch/ThunderKittens#:~:text=here%E2%80%99s%20an%20example%20of%20what%20a%20simple%20flashattention-2%20kernel%20for%20an%20rtx%204090%20looks%20like%20written%20in%20thunderkittens) 보며 말로 설명하기 어려운 코드 복잡성 느낌  
    - 이런 퍼즐은 '승자 독식' 구조라 실질적인 성취 차이는 1% 이내이며, 실습 자체가 큰 의미 없다는 생각

- 학습 범위 쪼개서 접근성 높이기 추천  
  - 1. CUDA 자체(프레임워크/라이브러리/추상화 레이어) 학습  
  - 2. 고성능 컴퓨팅 기본(이것은 GPU, Nvlink 개념 넘어서 HPC 아키텍처 전반에 통용)  
  - 3. 응용 분야 특화(Transformer면 Torch, Tensorflow 등 최신 고수준 추상화에서 출발)  
  - 실제 CUDA 마스터 원한다면, 대규모 병렬처리 프로그래밍 원리 체험과 이해가 핵심이며 상당 부분 이식 가능한 스킬  
    - 전직 GPU 개발자로서 나 역시 같은 조언, 특히 2번과 3번 강조  
    - 취업 목표에 따라 달라지겠지만, 정말 필요한 것은 CUDA 라이브러리(cuDNN, cuBLAS, cuFFT 등) 경험일 수도 있음  
    - 병렬 프로그래밍 원리 이해가 무엇보다 우선  
    - 이 접근법이 정답이며, 2번 없이 1번부터 바로 배우면 더 큰 혼란만 초래  
    - [추천 도서](https://news.ycombinator.com/item?id=44216478) 안내

- 개인적인 CUDA 학습 과정 경험 공유  
  - 체계적이진 않으나 학계 및 연구에 도움된 방식  
  - 박사 프로젝트 때문에 CUDA 직접 학습 필요  
  - 연구실 내에 경험자 전무하여 NVIDIA 기본 과정([Getting Started with Accelerated Computing with CUDA C/C++](https://www.nvidia.com/en-us/training/courses/) 및 python 버전)으로 개념 기초 익힘  
  - 공식 튜토리얼 외 실제로는 시행착오 중심 학습 많았음  
  - 온라인 튜토리얼, 책 활용했으나 함수나 API가 금방 바뀌어 구버전/신버전 혼동 많고, 내 GPU와 실 환경의 호환성 이슈까지 신경 써야 했음  
  - 가장 어려웠던 점은 대부분 시간을 디버깅(생각보다 느린 원인 추적) 및 도구(예: "compute-sanitizer", Nsight) 사용에 쏟았던 부분  
  - 조급해하지 말고, CPU에서 동작하는 간단한 프로젝트를 CUDA로 포팅 후 benchmark하면서 최적화 경험 쌓기 추천  
  - 최적화는 맨 마지막에, 일단 올바른 동작 구현을 우선시  
  - 동작은 느려도 메모리 손상 없는 커널이 최적화된 커널보다 더 가치 있음  
    - 비슷한 박사과정 경험 공유—[flashrnn 실습 결과물](https://github.com/NX-AI/flashrnn)  
    - 기본 원리와 GPU 구조 이해했다면 추천하는 워크플로우  
      1. 커널 테스트 가능한 환경 세팅, 상위 레벨 언어로 된 Baseline과 비교  
      2. 급한 프로젝트 없으면 기존 유명 문제(MatMul 등) 복습 또는 재구현—모든 케이스 다 하려 하지 말고 기능별로 집중  
      3. 점진적으로 복잡도 높이기—루프, 그리드 병렬화, 전역/공유/레지스터 메모리 차례로 사용, 단순 행렬곱에서 TensorCore(MMA)까지 확장  
      4. [CUDA C Programming Guide](https://docs.nvidia.com/cuda/c-programming-guide/index.html) 반복 탐독—실습하면서만 제대로 체득  
      5. CUTLASS, ThunderKitten 등 상위 추상화도 케이스 따라 추천, JAX/Torch 환경이면 triton 우선 활용  
    - PTX까지 마스터하려면 시간은 더 오래 걸리지만 실전에서 몸으로 익히는 과정 강조  
    - CUDA 성능 디버깅 고통에 깊이 공감

- 고등학생에게 CUDA 가르칠 때 활용한 자료 소개—혼자 전체 마스터엔 부족하지만 첫 시작에 도움이 되는 강좌  
  - [입문 강의(YouTube)](https://youtu.be/86FAWCzIe_4?si=buqdqREWASNPbMQy)

- 아직 써보진 않았지만 꽤 괜찮아 보여서 추천하고 싶은 [leetgpu.com](https://leetgpu.com/) 플랫폼

- CUDA 엔지니어 채용하는 직무, 포지션, 기업군에 대한 현업 의견 요청  
  - 현재는 많은 회사가 PyTorch처럼 CUDA 기반 라이브러리를 이용하지만, Native CUDA 개발 자체가 많은 회사에 필요한지 모르겠음  
  - 직접 CUDA 중심으로 일하는 조직이나 역할 발굴을 기대  
    - 우리 팀의 경우, 지리정보(geospatial) 데이터 분석에 CUDA 직접 활용  
    - slippy map 타일을 래스터화하고 GPU로 래스터 요약 처리  
    - 대부분 픽셀 단위 독립적 처리라 GPU에 적합  
    - 행 단위로 요약 병렬처리 후 마지막에 모아서 처리  
    - 다만 GPU로 데이터 복사 부분이 현재 병목

- 시대 변화에 맞춰, Claude 등 LLM에 질문해서 결과 코드와 설명 한꺼번에 받는 방법 활용  
    - 2025년엔 이렇게 해도 통할 수 있지만, 2026년은 한 단계 더 요구할 것이라는 의견
