세 가지 패턴 별 접근
- broadcast
- Nsight Compute 상에서 shared load 관련 warning 없음
- hardward broadcast 로 처리 - conflict free
- stride - 1 ( 완전 conflict-free)
- shared memory 를 고루 배치
- 가장 이상적 패턴
- stride - 32 ( 의도적 conflict)
- uncoalesced shared accesses 로 분류
실전 GEMM / Conv에서의 의미
- shared tiling 설계 시:
- thread → smem index 매핑이 bank conflict를 만들지 않도록
- laneId, warpId 기반으로 index를 재배치해야 한다.
- warp-level tiling / Tensor Core mma를 쓸 때도
- shared layout을 잘못 잡으면
- cp.async / ld.shared 가 bank conflict 때문에 병목이 된다.
- Nsight Compute는
- Memory Workload Analysis Tables
- L1 Wavefronts Shared Excessive
- Source Counters (uncoalesced shared accesses)
- 에서 이런 문제를 정확히 잡아주므로, bank conflict 튜닝 때 필수 도구가 된다
'GPU-KERNEL' 카테고리의 다른 글
| Register Pressure test (0) | 2025.11.29 |
|---|---|
| L1 / L2 Cache and Access Locality test (0) | 2025.11.29 |
| Global Memory Coalescing ( 연속 접근 vs Stride 접근) test (0) | 2025.11.29 |
| Warp Schedulig - clock64 기반 스케줄링 관찰 실험 (0) | 2025.11.29 |
| GPU Hierarchy - Block / Warp / Thread 구조 실험 (0) | 2025.11.29 |