Occupancy와 Block Size
block size를 크게 잡는다고 항상 빨라지는 것은 아니다.
occupancy란
occupancy는 SM에서 동시에 active 상태로 올라갈 수 있는 warp의 비율을 말한다. occupancy가 너무 낮으면 memory latency를 숨기기 어렵다.
하지만 occupancy가 높다고 항상 빠른 것도 아니다. register를 많이 쓰거나 shared memory를 많이 쓰는 kernel은 block을 많이 올리지 못할 수 있다.
실전 감각
blockDim = 128, 256, 512
이런 후보를 놓고 실제 benchmark로 고른다. warp 단위가 32이므로 block size는 보통 32의 배수로 잡는다.
확인
- block size는 parallelism, memory pattern, resource pressure를 동시에 바꾼다.
- occupancy는 성능의 필요조건일 수 있지만 충분조건은 아니다.
- 최종 선택은 측정으로 해야 한다.