Skip to content

Gpu-kernel

  • Published on
    같은 GPU 커널을 손으로 쓰는 CUDA C++, 파이썬으로 타일 단위로 쓰는 Triton, 템플릿으로 조립하는 CUTLASS와 CuTe로 각각 접근할 때 무엇이 달라지는지 비교합니다. 행 단위 softmax를 CUDA C++와 Triton으로 실제로 짜서 코드량과 성능을 나란히 재고, 그 차이가 어디서 오는지 컴파일 파이프라인 수준에서 설명합니다. Triton이 커스텀 어텐션 커널의 사실상 표준이 된 이유와 함께, Triton이 잘 못하는 영역도 구체적으로 정리합니다. Triton 3.7.1과 CUTLASS 4.6.1 기준으로 확인한 내용입니다.
  • Published on
    GPU 커널을 직접 수정한다는 것이 실제로 무엇을 뜻하는지, 스레드와 워프와 메모리 계층부터 짚습니다. 점유율이 왜 목표가 아니라 증상인지, 그리고 대부분의 커널이 연산이 아니라 메모리 대역폭에 묶여 있다는 사실을 루프라인 관점에서 설명합니다. 행렬 전치 커널 하나를 naive에서 코얼레싱, 셰어드 메모리 타일링, 뱅크 충돌 제거까지 네 단계로 고치면서 각 단계의 유효 대역폭을 직접 재는 하니스를 함께 제공합니다. 마지막으로 Nsight Compute에서 실제로 어떤 섹션을 열어 무엇을 판단하는지 정리합니다.