-
HipKittens는 AMD GPU의 잠재 성능을 끌어내기 위해 설계된 프로그래밍 프리미티브 모음으로, 메모리 접근·스케줄링·캐시 재사용을 최적화함
- AMD MI355X GPU는 256개의 컴퓨트 유닛과 8개의 칩렛(XCD) 구조를 가지며, 대형 레지스터 파일과 세밀한 매트릭스 코어 명령어를 제공
- NVIDIA와 달리 AMD는 레지스터 재할당·비동기 행렬 명령어·mbarrier가 없어, wave specialization 대신 8-wave ping-pong과 4-wave interleave 스케줄링이 효과적임
-
HipKittens는 칩렛 인식(grid) 스케줄링을 통해 L2 및 LLC 캐시 지역성을 개선, GEMM과 Attention 연산에서 최대 대역폭 및 TFLOPS 향상을 달성
- 이 접근은 AMD GPU 생태계의 소프트웨어 성숙도 부족을 보완하며, 다양한 하드웨어 기반의 AI 컴퓨팅 확장성을 높이는 기반 제공
AMD CDNA GPU 구조와 성능 특성
- AMD MI355X GPU는 256개의 컴퓨트 유닛(CU) 을 포함하며, 각 CU는 4개의 SIMD로 구성
- 한 SIMD는 64스레드로 구성된 wave를 실행하며, 이는 NVIDIA의 32스레드 warp와 대비됨
- MI355X는 B200 대비 70% 수준의 SRAM(165KB) 을 가지며, 비동기 행렬 곱 명령어, 레지스터 재할당, 텐서 메모리 가속, mbarrier 기능이 없음
- 반면, 2배 큰 레지스터 파일과 60% 더 많은 프로세서 수(256 CU 대 160 SM) 를 제공
-
작고 세밀한 매트릭스 코어 명령어를 지원하며, 직접 글로벌→공유 메모리 로드(TMA 유사) 기능 존재
- AMD는 8개의 칩렛(XCD) 로 구성된 칩렛 아키텍처를 채택, 각 XCD는 독립 L2 캐시를 가지며, 상위에 LLC 캐시가 존재
- 표에 따르면 MI355X는 BF16 2.5 PFLOPs, MXFP8 5.0 PFLOPs, MXFP6 10.1 PFLOPs의 연산 성능과 288GB 메모리 용량, 8TB/s 대역폭을 가짐
AMD용 커널 설계 과제
-
메모리 접근 최적화: HIPCC 컴파일러 제약과 비공개 I/O 동작으로 인해 데이터 배치와 스위즐(swizzle) 패턴 설계가 중요
-
프로세서 내 스케줄링: AMD는 공유 메모리 대신 레지스터 파일과 소형 매트릭스 명령어를 활용해야 함
-
프로세서 간 스케줄링: 칩렛 기반 구조로 인해 캐시 수준의 NUMA 효과를 고려한 작업 분배 필요
HipKittens의 메모리 접근 패턴
- HipKittens(HK)는 타일(tile) 을 기본 데이터 단위로 사용하며, PyTorch 유사 연산 함수를 제공
- 타일은 데이터 타입, 크기, 레이아웃으로 정의되며, C++ 템플릿 메타프로그래밍으로 다양한 입력에 대응
-
레지스터 스케줄링: HIPCC는 특정 레지스터를 MFMA 입력으로 사용할 수 없어, HK는 명시적 레지스터 고정 기능을 제공
- 개발자가 직접 레지스터를 지정해 최대 성능 커널 작성 가능
-
레지스터 레이아웃: AMD는 데이터 타입·행렬 형태에 따라 레이아웃이 달라 단일 스위즐 패턴 불가
- 예시로 16×16 bf16 타일과 16×32 bf16 타일은 서로 다른 스위즐 패턴 필요
-
명령어 페이즈 구조: AMD의 공유 메모리 명령어는 비연속적 페이즈 그룹을 가지며, 내부 문서화 부족
-
주소 생성: AMD는 비동기 HBM→공유 메모리 로드를 지원하며, HBM 주소 스위즐로 최적화 수행
프로세서 내 스케줄링: Wave 패턴
-
Wave specialization은 NVIDIA에서 효과적이지만, AMD는 레지스터 재할당 부재로 인해 성능 저하
- Producer wave가 불필요한 레지스터를 점유하고, Consumer wave는 부족한 레지스터로 인해 스필(spill) 발생
- HK의 실험 결과, wave specialization은 AMD에서 산술 강도 감소 및 메모리 병목을 초래
- 예시: GEMM에서 HK 0/8 구성은 1605 TFLOPs, CUTLASS는 1570 TFLOPs
-
대안 스케줄링 패턴
-
8-wave ping-pong: 두 wave가 번갈아 메모리/연산 클러스터를 실행
-
4-wave interleave: 한 wave가 세밀하게 메모리와 연산을 교차 실행
- 8-wave는 코드가 간결하고, 4-wave는 세밀하지만 코드가 길어짐
- GEMM과 Attention Forward에서 8-wave가 SoTA 수준 성능 달성
프로세서 간 스케줄링: 칩렛 인식 접근
- AMD MI355X는 8개의 XCD 칩렛을 가지며, 각 칩렛은 독립 L2 캐시를 보유
- 스레드 블록이 라운드로빈 방식으로 칩렛에 배정되어, 그리드 순서가 캐시 재사용 효율에 직접 영향
- 단순 row-major 배치는 L2 캐시 재사용률이 낮아 대역폭 손실 발생
- 예: L2 55%, LLC 95%, 15.1 TB/s, 1113 TFLOPs
- HK는 칩렛 인식(grid) 스케줄링을 도입, L2·LLC 캐시 지역성을 동시에 활용
- 스레드 블록을 출력 행렬의 인접 영역 단위로 그룹화하여 입력 데이터 재사용 극대화
실제 커널 예시
- Attention Forward 및 BF16 GEMM 커널의 핫 루프(hot loop) 는 HK의 8-wave ping-pong 스케줄을 사용
- 각 루프는 Compute–Memory 클러스터를 번갈아 실행하며, 스케줄 배리어로 동기화
- 코드 예시에서 mma_AtB, load, exp2, col_sum 등 HK 연산이 반복적으로 사용됨
결론: Multi-silicon AI 시대의 AMD
- HipKittens는 AMD CDNA3·CDNA4에서 경쟁력 있는 성능을 달성
- 세 가지 핵심: 최적화된 메모리 접근, AMD 중심 wave 스케줄링, 칩렛 인식 그리드 스케줄링
- HK 커널은 AMD 기준 최고 성능을 달성하며, NVIDIA Blackwell 커널과도 경쟁 수준
- AI 컴퓨팅의 다양성을 위해 AMD GPU 접근성 확대가 필요하며, HipKittens는 이를 위한 핵심 소프트웨어 기반 제공
- AMD의 HIPCC 레지스터 스케줄링 개선이 향후 중요한 발전 영역으로 지목됨