coalescing / shared memory bank conflict / warp divergence
이 세 가지는 GPU에서 “스레드 단위 병렬 성능을 결정하는 3대 개념”이라고 봐도 될 정도로 서로 독립된 병목 요인
세 개념의 관계 정리
Global Memory Coalescing
- warp 의 스레드들이 global memory 를 어떤 패턴으로 읽는가
- 주소가 연속적이면 빠름 ( 1 트랜스 액션 )
- stride / random 패턴이면 느림 ( 많은 트랜스 액션 )
즉, 전역 메모리 대역폭 효율 문제
Shared Memory Bank Conflict
- warp 의 스레드들이 shared memory 의 32 개 bank 중 어디를 치는가
- bank 충돌 없으면 빠름
- 여러 스레드가 같은 bank 처리하면 순차 처리 - 느림
즉, 로컬 메모리 내부 구조 효율 문제
Warp Divergence
- warp 내스레드들이 같은 실행 경로로 가는가
- warp 내부 스레드가 같은 if branch - 정상 속도
- warp 내부 스레드가 서로 다른 branch 순차 실행 느림
즉, 실행흘므 효율 문제
완전히 다른 개념이라 독립적으로 존재, 실제 고성능 CUDA 커널에서 이 세 가지를 모두 동시에 피하는 구조를 만들어야 한다.
'GPU-KERNEL' 카테고리의 다른 글
| Occupancy / Register Pressure (0) | 2025.11.18 |
|---|---|
| Warp Divergence QUIZ - 추가로 조건이 스레드 단위가 아닌 블록 단위면 괜찮은 이유에 대해 (0) | 2025.11.18 |
| SHARED MEMORY BANK CONFLICT 퀴즈 (0) | 2025.11.18 |
| Shared memory bank ( warp 와 bank 의 갯수는 하드웨어-레벨에서 설계적으로 32개로 맞춘 것 ) (0) | 2025.11.17 |
| 중요!!! 트랜스액션 ( 트랜잭션 ) 기준 확인 완료? warp - segment - transaction (0) | 2025.11.17 |