전통의 첫 커널 — 모든 GPU thread가 자기 좌표 출력
이게 toolchain end-to-end 입증하는 가장 작은 CUDA 프로그램이야. driver가 커널 load, runtime이 thread launch, thread가 device 코드 실행, cudaDeviceSynchronize가 출력을 CPU stdout으로 flush.
source 꼼꼼히 읽어. 모든 줄이 lesson 1의 CUDA 확장 셋 중 하나에 대응:
__global__ void say_hello()— 이게 커널이라고 표시하는 function qualifier.say_hello<<<1, 4>>>()— triple-angle launch: block 1개, thread 4개.blockIdx.x,threadIdx.x— thread마다 정체성 주는 SIMT built-in.
launch 문법 <<<grid, block>>>는 template 문법처럼 보이는 CUDA 구조 중 하나인데 사실 아냐. NVCC가 special launch expression으로 파싱해. NVCC pre-pass 후 일반 C++ 컴파일러가 보는 건 grid/block 차원이 인자로 packed된 runtime API 호출이야.