Fused Operations: Mengeliminasi Pembacaan Memori Berulang
I1 — GPU Kernels: Dari CUDA ke Triton & FlashAttention
Fused Kernel: Kunci Kecepatan Inferensi Modern
Dalam implementasi standar naive (misal di PyTorch murni), setiap operasi matematika memicu pemanggilan kernel terpisah:
# Naive execution (3 kernel terpisah, 3x bolak-balik VRAM)
x = input + bias # Kernel 1: Baca input & bias dari VRAM, tulis x ke VRAM
y = torch.relu(x) # Kernel 2: Baca x dari VRAM, tulis y ke VRAM
z = layer_norm(y) # Kernel 3: Baca y dari VRAM, tulis z ke VRAM
Mengapa Pola Naive Sangat Lambat?
Setiap kali satu kernel selesai, hasilnya harus ditulis ke VRAM (HBM) yang lambat, lalu kernel berikutnya membacanya kembali. Waktu terbuang sia-sia hanya untuk memindahkan data antarmemori!
Solusi: Kernel Fusion
Fused Kernel menggabungkan ketiga operasi tersebut ke dalam satu potongan kode C++/CUDA/Triton:
[Input Data di VRAM]
↓ (1x Baca)
[SRAM GPU: Bias Add + ReLU + LayerNorm dieksekusi bersamaan di Register]
↓ (1x Tulis)
[Output Final di VRAM]
Dengan Kernel Fusion, GPU hanya melakukan 1 kali baca dan 1 kali tulis ke VRAM, memangkas memory traffic hingga 70% dan melipatgandakan kecepatan eksekusi!
I1