본문 바로가기

GPU-KERNEL

Thread / Block / Grid / Warp 개념 퀴즈

퀴즈 1 — grid / block / thread 관계

N = 1000, blockDim.x = 64 로 커널을 런치한다.

int grid_size = (N + block_size - 1) / block_size;
<<<grid_size, block_size>>>

❓ Q1-1. 실제 블록 개수(grid_size)는 몇 개인가?

 

퀴즈 2 — global thread id 계산

다음과 같이 런치했다고 하자:

<<< gridDim.x = 4, blockDim.x = 32 >>>

즉:

  • block 4개
  • block당 thread 32개

❓ Q2-1. blockIdx.x = 2, threadIdx.x = 5 라면 global_id(gid)는?

 

퀴즈 3 — warp grouping

blockDim.x = 96 인 블록을 띄웠다.

❓ Q3-1. 이 블록 안에 warp은 몇 개 생기는가?

❓ Q3-2. threadIdx.x = 68 은 몇 번째 warp인가?

(warp 크기 = 32)

 

퀴즈 4 — 마지막 블록에서 thread drop

N=100 이고 blockDim.x=32일 때,
grid_size = (100 + 32 - 1) / 32 = 4 → block 4개

각 block이 담당하는 global id 범위는?

❓ Q4-1. block 0: global id 범위

❓ Q4-2. block 1: global id 범위

❓ Q4-3. block 2: global id 범위

❓ Q4-4. block 3: global id 범위

 

퀴즈 5 — 잘못된 이해 잡아내기

다음 중 틀린 설명은?

  1. blockDim.x 는 “블록 내부 스레드 총 개수”다.
  2. warp 은 32개 스레드를 묶은 실행 단위다.
  3. blockDim.x 가 32보다 작으면 warp 이 여러 개 생긴다.
  4. global_id = blockIdx.x * blockDim.x + threadIdx.x 이다.