CUDA 학습을 위한 로드맵과 실습 예제 모음입니다.
- 2025-03-08 ~ ing
섹션 번호 | 섹션 제목 | 완료 날짜 | 상태 |
---|---|---|---|
1 | Introduction | 2025-03-08 | ✅ |
2 | Programming Model | 2025-03-11 | ✅ |
3 | Programming Interface | 🚧 | |
4 | Hardware Implementation | 2025-03-18 | ✅ |
5 | Performance Guidelines | 2025-03-27 | ✅ |
6 | CUDA-Enabled GPUs | 2025-03-15 | ✅ |
7 | C++ Language Extensions | 🚧 | |
8 | Cooperative Groups | ❌ | |
9 | CUDA Dynamic Parallelism | ❌ | |
10 | Virtual Memory Management | ❌ | |
11 | Stream Ordered Memory Allocator | ❌ | |
12 | Graph Memory Nodes | ❌ | |
13 | Mathematical Functions | ❌ | |
14 | C++ Language Support | ❌ | |
15 | Texture Fetching | ❌ | |
16 | Compute Capabilities | ❌ | |
17 | Driver API | ❌ | |
18 | CUDA Environment Variables | ❌ | |
19 | Unified Memory Programming | ❌ | |
20 | Lazy Loading | ❌ | |
21 | Extended GPU Memory | ❌ | |
22 | Notices | ❌ |
- CUDA 아키텍처 이해
- GPU 하드웨어 구조
- CUDA 프로그래밍 모델
- 기본 개념
- 스레드/블록/그리드
- 커널 함수
- 기본 메모리 모델
- 메모리 계층구조
- 글로벌 메모리
- 공유 메모리
- 레지스터
- 상수 메모리
- 동기화
- 스레드 동기화
- 블록 동기화
- 스트림과 이벤트
- 비동기 실행
- 이벤트 기반 동기화
- 메모리 최적화
- 메모리 접근 패턴
- 메모리 정렬
- 뱅크 충돌 방지
- 병렬 패턴
- 리덕션
- 스캔
- 히스토그램
- 성능 분석
- Nsight 프로파일링
- 메모리 대역폭 최적화
- 점유율 최적화
- Multi-GPU 프로그래밍
- 동적 병렬처리
- CUDA 라이브러리 활용
- cuBLAS
- cuDNN
- Thrust
- 간단한 CUDA 커널 실행 예제
kernel.cu
: "cuda kernel called!" 메시지를 출력하는 기본 커널 구현- 10개의 스레드로 커널 실행
- GPU 메모리 정보를 측정하고 출력하는 도구
- 주요 기능:
- 전체 GPU 메모리 용량 확인
- 사용 가능한 메모리 용량 확인
- 메모리 사용량 레벨별(High/Medium/Low) 계산
- 비동기 메모리 관리를 위한
AsyncMemManager
클래스 구현 - CUDA 스트림을 사용한 비동기 메모리 할당/해제
- 메모리 작업 동기화 기능
- 시스템 메모리 계산을 위한 유틸리티 함수
- TensorFlow에서 포팅된 메모리 관리 헬퍼 함수 포함
프로젝트는 Bazel을 사용하여 빌드됩니다. 각 디렉토리의 BUILD.bazel
파일에서 빌드 설정을 확인할 수 있습니다.
- CUDA Toolkit
- Bazel
- C++ 컴파일러
bazel build //...
utils 모듈의 일부 코드는 Apache License 2.0 하에 배포된 TensorFlow 프로젝트에서 가져왔습니다.