본문 바로가기

GPU-KERNEL

작성된 gemm_tiled_kernel<float, TILE><<<grid, block>>> 의 의미

1. gemm_tiled_kernel 이 무엇이냐

template<typename T, int TILE>
__global__ void gemm_tiled_kernel(...) { ... }

이 코드 한 덩어리는 : 스레드가 실행할 함수의 설계도

스레드가 가지 역할을 어떻게 할 지를 정의, 이 커널을 실행하는 모든 스레드는, 이 코드를 그대로 실행한다.

 

2. 커널을 launch 하면 실제로 무슨 일이 생기는지

dim3 block(32, 32);  // TILE = 32
dim3 grid(128, 128);

gemm_tiled_kernel<float, 32><<<grid, block>>>(...);

이 한 줄에서 실제로는

스레드 블록 128 * 128 개 생성

각 블록 안에 32 * 32 개 스레드

총 스레드 수 1.6 억 개 스레드가 똑같은 커널 함수를 각자 자기 blockIdx, threadIdx 로 실행한다. 

 

 

3. 그럼 bank 는 어디?

bank 는 각 SM 안에 있는 shared memory 하드웨어를 32 개 lane 으로 쪼갠 것

스레드가 As, Bs 를 읽을 때, 그 주소에 따라 어느 bank 에서 값이 나오는지 결정