본문 바로가기

GPU-KERNEL

중요!!! 트랜스액션 ( 트랜잭션 ) 기준 확인 완료? warp - segment - transaction

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