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 에서 값이 나오는지 결정
'GPU-KERNEL' 카테고리의 다른 글
| 타일링 방식을 통한 GEMM 의 실제 연산 방식 이해 (0) | 2025.11.19 |
|---|---|
| kernel_hierarchy_test (0) | 2025.11.19 |
| GEMM: Naive vs Shared-Memory Tiled 성능 비교 (간단 정리) (0) | 2025.11.18 |
| GEMM 커널 테스트 코드 작성 및 최적화 (1024^3 크기 실험) (0) | 2025.11.18 |
| ILP ( Instruction - Level Parallelism ) (0) | 2025.11.18 |