1 poin oleh GN⁺ 2025-11-16 | Belum ada komentar. | Bagikan ke WhatsApp
  • HipKittens adalah kumpulan primitif pemrograman yang dirancang untuk mengeluarkan potensi performa GPU AMD, dengan mengoptimalkan akses memori, penjadwalan, dan penggunaan ulang cache
  • GPU AMD MI355X memiliki struktur 256 compute unit dan 8 chiplet (XCD), serta menyediakan register file besar dan instruksi matrix core yang halus
  • Tidak seperti NVIDIA, AMD tidak memiliki reallocasi register, instruksi matriks asinkron, dan mbarrier, sehingga penjadwalan 8-wave ping-pong dan 4-wave interleave lebih efektif dibanding wave specialization
  • HipKittens meningkatkan lokalitas cache L2 dan LLC melalui penjadwalan grid yang sadar chiplet, dan mencapai peningkatan bandwidth maksimum serta TFLOPS pada operasi GEMM dan Attention
  • Pendekatan ini melengkapi kurangnya kematangan perangkat lunak di ekosistem GPU AMD dan menyediakan fondasi untuk meningkatkan skalabilitas komputasi AI berbasis beragam perangkat keras

Arsitektur dan karakteristik performa GPU AMD CDNA

  • GPU AMD MI355X mencakup 256 compute unit (CU), dan tiap CU terdiri dari 4 SIMD
    • Satu SIMD mengeksekusi wave yang terdiri dari 64 thread, berbeda dengan warp 32-thread milik NVIDIA
  • MI355X memiliki SRAM setara 70% dari B200 (165KB), dan tidak memiliki fitur instruksi perkalian matriks asinkron, reallocasi register, akselerasi tensor memory, serta mbarrier
  • Sebaliknya, ia menyediakan register file 2 kali lebih besar dan jumlah prosesor 60% lebih banyak (256 CU vs 160 SM)
    • Mendukung instruksi matrix core kecil dan terperinci, serta memiliki kemampuan load langsung global→shared memory (mirip TMA)
  • AMD mengadopsi arsitektur chiplet yang terdiri dari 8 chiplet (XCD); setiap XCD memiliki cache L2 independen, dengan cache LLC di tingkat atas
  • Menurut tabel, MI355X memiliki performa komputasi BF16 2.5 PFLOPs, MXFP8 5.0 PFLOPs, MXFP6 10.1 PFLOPs, serta kapasitas memori 288GB dan bandwidth 8TB/s

Tantangan desain kernel untuk AMD

  • Optimasi akses memori: karena kendala kompiler HIPCC dan perilaku I/O yang tidak dipublikasikan, desain pola tata letak data dan swizzle menjadi penting
  • Penjadwalan intra-prosesor: AMD perlu memanfaatkan register file dan instruksi matriks kecil, bukan shared memory
  • Penjadwalan antar-prosesor: karena struktur berbasis chiplet, distribusi kerja perlu mempertimbangkan efek NUMA pada level cache

Pola akses memori HipKittens

  • HipKittens(HK) menggunakan tile sebagai unit data dasar, dan menyediakan fungsi operasi mirip PyTorch
    • Tile didefinisikan oleh tipe data, ukuran, dan layout, serta menangani beragam input melalui metaprogramming template C++
  • Penjadwalan register: HIPCC tidak dapat menggunakan register tertentu sebagai input MFMA, sehingga HK menyediakan fitur pinning register eksplisit
    • Pengembang bisa menetapkan register secara langsung untuk menulis kernel dengan performa maksimum
  • Layout register: di AMD, layout berbeda menurut tipe data dan bentuk matriks, sehingga satu pola swizzle tunggal tidak memungkinkan
    • Sebagai contoh, tile bf16 16×16 dan tile bf16 16×32 memerlukan pola swizzle yang berbeda
  • Struktur fase instruksi: instruksi shared memory AMD memiliki grup fase yang tidak berurutan, dengan dokumentasi internal yang minim
    • HK menyediakan solver hasil reverse engineering untuk ini
  • Pembuatan alamat: AMD mendukung load HBM→shared memory secara asinkron, dan melakukan optimasi dengan swizzle alamat HBM

Penjadwalan intra-prosesor: pola wave

  • Wave specialization efektif di NVIDIA, tetapi pada AMD performanya menurun karena tidak adanya reallocasi register
    • Wave producer menempati register yang tidak diperlukan, sementara wave consumer mengalami spill karena kekurangan register
  • Hasil eksperimen HK menunjukkan bahwa wave specialization di AMD menyebabkan penurunan intensitas aritmetika dan bottleneck memori
    • Contoh: pada GEMM, konfigurasi HK 0/8 mencapai 1605 TFLOPs, sedangkan CUTLASS 1570 TFLOPs
  • Pola penjadwalan alternatif
    • 8-wave ping-pong: dua wave secara bergantian menjalankan klaster memori/komputasi
    • 4-wave interleave: satu wave menjalankan interleaving halus antara memori dan komputasi
    • 8-wave memiliki kode yang ringkas, sedangkan 4-wave lebih terperinci tetapi kodenya lebih panjang
    • Pada GEMM dan Attention Forward, 8-wave mencapai performa setara SoTA

Penjadwalan antar-prosesor: pendekatan sadar chiplet

  • AMD MI355X memiliki 8 chiplet XCD, dan tiap chiplet memiliki cache L2 independen
    • Thread block dialokasikan ke chiplet dengan cara round-robin, sehingga urutan grid langsung memengaruhi efisiensi penggunaan ulang cache
  • Tata letak row-major yang sederhana menghasilkan tingkat penggunaan ulang cache L2 yang rendah dan menyebabkan kehilangan bandwidth
    • Contoh: L2 55%, LLC 95%, 15.1 TB/s, 1113 TFLOPs
  • HK memperkenalkan penjadwalan grid yang sadar chiplet, memanfaatkan sekaligus lokalitas cache L2 dan LLC
    • Thread block dikelompokkan berdasarkan area berdekatan pada matriks output untuk memaksimalkan penggunaan ulang data input

Contoh kernel nyata

  • Hot loop pada kernel Attention Forward dan BF16 GEMM menggunakan skema 8-wave ping-pong dari HK
    • Tiap loop secara bergantian mengeksekusi klaster Compute–Memory dan disinkronkan dengan schedule barrier
    • Dalam contoh kode, operasi HK seperti mma_AtB, load, exp2, col_sum digunakan berulang kali

Kesimpulan: AMD di era AI multi-silicon

  • HipKittens mencapai performa yang kompetitif pada AMD CDNA3 dan CDNA4
    • Tiga inti utamanya: akses memori teroptimasi, penjadwalan wave berfokus AMD, dan penjadwalan grid sadar chiplet
  • Kernel HK mencapai performa tertinggi menurut standar AMD dan juga kompetitif dengan kernel NVIDIA Blackwell
  • Demi keberagaman komputasi AI, perlu ada perluasan aksesibilitas GPU AMD, dan HipKittens menyediakan fondasi perangkat lunak inti untuk itu
  • Peningkatan penjadwalan register HIPCC dari AMD disebut sebagai area pengembangan penting ke depan

Belum ada komentar.

Belum ada komentar.