Le projet llama.cpp a publié la version b11184, introduisant de nouveaux noyaux Fast Walsh-Hadamard Transform (FWHT) pour le backend Metal qui prennent en charge des largeurs de bloc supérieures à 512. Auparavant, l'implémentation FWHT de Metal était limitée aux largeurs comprises entre 64 et 512.
- Le nouveau noyau gère les largeurs de 1024 à 8192 en exécutant une ligne par threadgroup avec 256 threads, permettant aux blocs plus larges d'utiliser la mémoire du threadgroup au lieu de ne dépendre que des registres.
- Les largeurs de 64 à 512 continuent d'utiliser le noyau simdgroup existant, tandis que les nouveaux noyaux larges prennent en charge les types source F32 et F16.
- L'implémentation inclut des vérifications de taille par rapport aux limites du périphérique pour éviter les aborts sur les appareils disposant d'une mémoire threadgroup insuffisante, allouant une mémoire float[N] qui atteint 32 Ko à la largeur 8192.
- Les tests de fonctionnement du backend sur un appareil M5 Pro ont passé toutes les vérifications pour MUL_MAT_HADAMARD et MUL_MAT.
Cette mise à jour permet à llama.cpp d'effectuer des opérations de produit de Hadamard sur des tailles de bloc plus grandes dans le backend Metal, étendant la plage des dimensions de tenseur prises en charge pour le matériel Apple Silicon.