GPU 시스템 00 - 이 시리즈를 보기 전에 필요한 것들
GPU 시스템 시리즈를 제대로 따라가기 전에 어떤 배경지식이 필요한지 정리하기
GPU 아키텍처, CUDA 커널, Triton, 그리고 실제 커널 최적화까지 이어지는 흐름
GPU가 실제로 어떻게 계산을 수행하는지 이해하고, 나중에는 직접 커널을 작성하고 최적화하고 싶은 엔지니어.
파이썬 사용 경험, 기본적인 선형대수, 그리고 저수준 성능 주제를 읽을 수 있을 정도의 시스템 감각.
GPU 시스템 시리즈를 제대로 따라가기 전에 어떤 배경지식이 필요한지 정리하기
GPU 아키텍처부터 CUDA, Triton, 커널 최적화까지 어떤 순서로 공부하면 되는지
GPU의 thread, warp, block, grid가 실제 실행에서 어떤 의미를 가지는지
GPU 성능을 좌우하는 메모리 계층과 bandwidth 병목을 어떻게 봐야 하는지
CUDA kernel을 직접 작성할 때 indexing과 launch configuration을 어떤 기준으로 잡아야 하는지
CUDA kernel 최적화에서 가장 자주 마주치는 memory coalescing과 reduction 패턴
Triton과 실제 커널 최적화를 연결해서 GPU kernel engineer 관점의 감각을 잡기
occupancy를 숫자로만 외우지 않고 latency hiding과 연결해서 이해하기
Nsight와 roofline 관점으로 커널 병목을 읽는 기본 프레임
naive matrix multiply를 통해 GPU 메모리 병목과 재사용 문제를 읽는 법
tiled matmul에서 shared memory와 block 협업이 왜 큰 성능 차이를 만드는지
shared memory가 빠르다고 끝이 아닌 이유와 bank conflict를 피하는 기본 원리
warp 내부 데이터 교환을 shared memory 없이 처리하는 warp-level primitive의 의미
reduction kernel을 통해 shared memory, warp primitive, synchronization을 한 번에 이해하기
softmax kernel 안에 reduction, memory traffic, numerical stability가 어떻게 함께 들어가는지
layernorm과 RMSNorm을 통해 normalization kernel이 왜 memory-bound가 되기 쉬운지 이해하기
vectorized memory access와 alignment가 bandwidth 활용에 어떤 차이를 만드는지
register를 많이 쓰는 최적화가 왜 오히려 전체 성능을 떨어뜨릴 수 있는지
tensor core가 어떤 종류의 연산에서 큰 성능 차이를 만들고 mixed precision과 어떻게 연결되는지
memory load와 compute를 더 겹치게 만드는 asynchronous copy와 double buffering의 감각
GPU 시스템 시리즈를 마무리하며 profiling, Triton, FlashAttention 관점까지 연결하기