GPU 는 계층적 병렬 구조 + 메모리 계층 + 파이프라인 기반 실행 모델로 돌아감
커널 최적화의 모든 의사결정은 이 구조에서 파생
1. Thread / Warp / BLock / Grid
SIMT 의 기본 단위 : Thread & Warp
- GPU 의 연산 기본 단위는 thread, 실제 실행 단위 warp
- 논리적 단위와 물리적 실행 단위라고 보면 됌
- 같은 warp 내부의 thread 들은 동일한 명령을 동시에 실행 SIMT ( Single Instruction, Multiple Threads)
Warp Divergence
- 조건 분기에서 서로 다른 경로를 선택하면 warp 는 분리되어 순차 실행
- 이는 GPU 에서 즉각적인 성능 하락 요인
- 커널 최적화에서 branch-free 또는 warp-uniform branch 를 중요하게 여기는 이유
Block & Grid
- Block : 여러 warp 들의 집합
- Block 단위로 shared memory 를 소유
- Grid : Block 들의 전체 집합
왜 Block 단위가 중요한가
- shared memory 는 block 단위로 제공 - tiling 최적화의 핵심 전제
- warp 스케줄링도 block 수준에서 이뤄짐
Grid
├─ Block (0)
│ ├─ Warp 0 (32 threads)
│ └─ Warp 1 (32 threads)
├─ Block (1)
│ ├─ Warp 0
│ └─ Warp 1
...
GPU 는 warp - block - grid 3단계 구조를 기반으로 병렬성을 조직한다.
2. Memory Hierarchy & Data Movement
GPU 성능의 절반 이상은 계산 속도가 아닌, 데이터를 어디서 어떻게 가져오는냐로 결정,
다음으로 주요 메모리 계층
Global Memory
- 모든 블록에서 접근 가능
- 가장 느림
- 대용량
- 최적화 핵심 : coalescing
- warp 내 threads 가 연속된 주소를 읽을 때 - 한 번의 transaction
- 랜덤 / 스트라이드 패턴 - 다중 transaction - 성능 하락
Shared Memory ( SMEM )
- Block 내부 공유 메모리
- L1 보다 빠르고, register 보단 느림
- 직접 주소 계산 가능
- tiling / double-buffering / cp.async 등의 기
Bank Conflict
- Shared memory 32 개의 bank 로 구성
- warp 내 threads 가 동일 bank 의 서로 다르느 주소를 동시에 읽으면 conflict
- broadcast 만 예외
L1 / L2 Cach2
- L2 : 전체 GPU 공유
- L1 : SM 전용
- CUDA kernel 에서는 명령어 / 옵션으로 L1 bypass, read-onnly cache 활용도 가능
- GEMM 같은 고정 패턴의 경우, L2 hit 유도 + shared memory reuse 가 훨씬 중요
Register
- 가장 빠른 공간
- 가장 제한적
- 블록 크기와 레지스터 수가 occupancy 결정에 직접 영향
3. SM Execution & Scheduling
GPU 의 진짜 성능은 아래의 키워드 이해를 통해 설명
SM ( Streaming Multiprocessor)
각 SM 은 독립적인 연산 엔진
각 SM 내부에는
- warp Schdulers
- load / store units
- FP32 / FP16 / MMA pipelines
- register file
- shared memory
- instruction issue logic
여러 warp 를 interleave 실행하여 latency 를 숨긴다.
GPU 는 느린 메모리 찾는 동안 idel 하는 것이 아닌, 다른 warp 를 즉시 실행
Occupancy
- 한 SM 에 동시에 올라갈 수 있는 active warps 개수
- 레지스터 개수, shared memory 사용량, block 크기에 의해 결정
- 높을수록 좋은 건 아님, compute bound 에선 낮아도 최적의 성능
Issue & Instructino Scheduling
- warp scheduler 는 매 클럭 실행 가능한 warp를 선택
- 메모리 대기 중 warp 는 skip
- 이를 latency hiding 이라 부름
- warp 수가 너무 적거나, 메모리 패턴이 나쁘면 hiding 불가, stall 증가
4. Tensor Cores & MMA Pipeline
최신 GPU 에서 GEMM 중심 compute 는 Tensor Core 기반으로 돌아감
Tensor Core 의 본질
- warp 단위 연산
- 정해진 고정 크기의 연산을 실시간 실행
- mixed precision
MMA Instruction Pipeline
- MMA.sync 는 warp 전개가 하나의 행렬 조각을 매 클럭 누적
- 타일 구조 : 16 x 8, 16 x 16 등
- register file 에 조각들을 분배하여 저장
Tensor Core 핵심 포인트
- 메모리의 tile 단위 공급
- register presure 높음
- cp.async + double-buffering 필수
'GPU-KERNEL' 카테고리의 다른 글
| GPU Hierarchy - Block / Warp / Thread 구조 실험 (0) | 2025.11.29 |
|---|---|
| Warp Divergence - SIMT 분기 실험 (0) | 2025.11.29 |
| Optimization Principles 와 Tensor Core Optimization 의 분리 (0) | 2025.11.28 |
| TensorCore K 방향 타일 루프 + cp.async 2 stage pipeline (0) | 2025.11.28 |
| Shared memory, fragment 의 차이 이해 (0) | 2025.11.27 |