segment = 글로벌 메모리를 32B 단위로 잘라놓은 최소 페치 단위
데이터를 가져올 때의 최소 조각
128B 는 그 세그먼트 4개를 묶어서 만든 최대 하나짜리 트랜잭션
warp 는 필요한 세그먼트들을 묶어서 128B 까지 트랜잭션을 만든다.
128B 라는 것은 32B * 4 세그먼트가 연속적일 때만 만들 수 있는 큰 패킷
🔥 결론
단일 128B 트랜잭션이 발생하려면
warp가 접근하는 4개의 32B 세그먼트가
“주소상으로 연속적이고(0→1→2→3)
경계에 정렬되어 있어야” 한다.
단일 트랜잭션으로 묶일 수 있는 경우라도
그 내부에 포함되는 세그먼트들은 반드시 “연속적”이어야 한다.
세그먼트가 하나라도 건너뛰면 → non-coalescing → 여러 트랜잭션 발생.
✔ segment 0,1,2,3 (연속)
→ 128B 트랜잭션 1개 (완전 coalesced)
✔ segment 1,2,3 (연속)
→ 96B worth of sectors → 내부적으로는 1번의 패킷인데 sector 3개 활성
(실제로 Nsight Compute에서는 3개 sector load로 보임)
→ 이건 “부분 coalesced”
❌ segment 0,2,3 (비연속)
→ 최소 2개의 트랜잭션
- segment 0용 하나
- segment 2~3용 하나
→ 완전한 non-coalescing
'GPU-KERNEL' 카테고리의 다른 글
| SHARED MEMORY BANK CONFLICT 퀴즈 (0) | 2025.11.18 |
|---|---|
| Shared memory bank ( warp 와 bank 의 갯수는 하드웨어-레벨에서 설계적으로 32개로 맞춘 것 ) (0) | 2025.11.17 |
| 128B 트랜잭션의 개념 잡기, (0) | 2025.11.17 |
| coalescing / stride 접근 / warp 메모리 패턴 QUIZ (0) | 2025.11.17 |
| Thread / Block / Grid / Warp 개념 퀴즈 (0) | 2025.11.17 |