Proyek llama.cpp merilis build b11184, memperkenalkan kernel Transformasi Walsh-Hadamard Cepat (FWHT) baru untuk backend Metal yang mendukung lebar blok lebih besar dari 512. Sebelumnya, implementasi FWHT Metal dibatasi pada lebar antara 64 dan 512.

  • Kernel baru menangani lebar dari 1024 hingga 8192 dengan menjalankan satu baris per threadgroup berisi 256 utas, memungkinkan blok yang lebih lebar memanfaatkan memori threadgroup alih-alih hanya mengandalkan register.
  • Lebar 64 hingga 512 tetap menggunakan kernel simdgroup yang ada, sementara kernel lebar baru mendukung tipe sumber F32 dan F16.
  • Implementasi ini mencakup pemeriksaan ukuran terhadap batas perangkat untuk mencegah abort pada perangkat dengan memori threadgroup yang tidak memadai, mengalokasikan float[N] memori yang mencapai 32 KB pada lebar 8192.
  • Uji operasi backend pada perangkat M5 Pro lulus semua pemeriksaan untuk MUL_MAT_HADAMARD dan MUL_MAT.

Pembaruan ini memungkinkan llama.cpp melakukan operasi produk Hadamard pada ukuran blok yang lebih besar di dalam backend Metal, memperluas rentang dimensi tensor yang didukung untuk perangkat keras Apple Silicon.