Pré-version / build continu : il s'agit d'un build expérimental, pas d'une version stable.
metal : correction de mul_mat_id avec des ids en double (#30373) * metal : correction des limites de mul_mat_id et du nom du kernel * metal : correction de mul_mat_id avec des ids en double kernel_mul_mm_id_map0 supposait au plus une correspondance par token et une capacité fixe de ne21 entrées par expert, ce qui produisait des lignes de sortie erronées ou perdues et pouvait déborder sur la tranche de l'expert suivant lorsque les ids contiennent des doublons. construire à la place une liste compacte par expert des entrées (token, slot) : - la passe 1 compte les entrées de chaque expert, le thread 0 calcule les décalages des tranches d'experts (tpe contient désormais [base, count]) - la passe 2 écrit les entrées avec un store inconditionnel par token (les stores conditionnels de lanes divergentes sont très lents), la valeur factice des tokens sans correspondance atterrit sur un slot de padding de la tranche qui n'est jamais lu - les doublons sont gérés par une branche rare - kernel_mul_mm_id lit le base/count de son expert et boucle sur les tuiles d'entrées qui ne tiennent pas dans la grille Le tampon ids est dimensionné comme ne20*ne21 + ne02 (entrées + padding). Les 883/883 tests MUL_MAT_ID de test-backend-ops passent, llama-bench est dans la variance d'exécution à exécution du comportement précédent. Assisted-by : pi:llama.cpp/MiMo-V2.6-Flash-MOPD * metal : faire de mul_mat_id map0 ne02 une constante de fonction utiliser FOR_UNROLL pour les boucles d'ids de kernel_mul_mm_id_map0 et transformer ne02 en constante de fonction FC_mul_mm_id_map0_ne02 (FC_MUL_MM + 7), afin que les décalages de threadgroup de cnt/bas/sids et la borne de prefix-sum se replient à la compilation. le nom du pipeline encode désormais ne02 (même convention que les constantes nc/silu de ssm_conv) et le pipeline map0 est compilé avec la valeur constante fixée. ne02 ne fait plus partie de ggml_metal_kargs_mul_mm_id_map0 - la grille de dispatch provient toujours du ne[2] du tenseur côté hôte. aucun changement de performances mesurable : les 883/883 tests MUL_MAT_ID de test-backend-ops passent, les résultats au niveau des opérations et de llama-bench sont dans la variance d'exécution. Assisted-by : pi:llama.cpp/MiMo-V2.6-Flash-MOPD * cont : nettoyage + TODO * metal : dispatcher les tuiles d'entrées mul_mat_id depuis la prépasse suivre l'approche de l'implémentation vulkan (#29998) : au lieu de lancer une grille sur experts x tuiles d'entrées ne21 en laissant la plupart des threadgroups sortir immédiatement, kernel_mul_mm_id_map0 émet désormais aussi une row map - le nombre total de tuiles plus un descripteur (expert, première entrée, lignes valides) par tuile de 32 entrées ayant du travail. kernel_mul_mm_id est lancé avec une borne supérieure statique sur le nombre de tuiles (tuiles complètes sur toutes les entrées plus au plus une tuile partielle par expert), lit son descripteur et traite une seule tuile - la queue sort immédiatement. Cela supprime la boucle de rounds nécessaire pour couvrir les ids en double au-delà de la grille (pression de registres : th_max 768 -> retour au niveau du mul_mm simple) et les doublons sont désormais gérés implicitement, car ils ne produisent que davantage de descripteurs dans la limite. La grille rétrécit d'environ 8-16x sur des formes typiques (par exemple 128 experts, 8 utilisés, 512 tokens : 128 tuiles au lieu de 2048 tuiles d'entrées, dont 94 % lancées uniquement pour sortir) et ne21 n'est plus nécessaire par les kargs du kernel mm. Les 883/883 tests MUL_MAT_ID de test-backend-ops passent. llama-bench (Qwen3.6-35B-A3B Q8_0) est désormais plus rapide que master sur toutes les tailles pp (pp2048/4096/8192 +2 %, pp512 +0,5 %), tg32 inchangé. Assisted-by : pi:llama.cpp/MiMo-V2.6-Flash-MOPD * cont : ajout d'un assert smemSite web : - https://llama.app
Attestations : - https://github.com/ggml-org/llama.cpp/attestations/55057952
macOS/iOS : - macOS Apple Silicon (arm64) - macOS Apple Silicon (arm64, KleidiAI activé) DÉSACTIVÉ - macOS Intel (x64) - XCFramework iOS
Linux : - Ubuntu x64 (CPU) - Ubuntu arm64 (CPU) - Ubuntu s390x (CPU) - Ubuntu x64 (Vulkan) - Ubuntu arm64 (Vulkan) - Ubuntu x64 (CUDA 12) - Bibliothèques CUDA 12.8 - Ubuntu x64 (CUDA 13) - Bibliothèques CUDA 13.4 - Ubuntu arm64 (CUDA 13) - Bibliothèques CUDA 13.4 - Ubuntu x64 (ROCm 10.0) - Ubuntu x64 (OpenVINO) - Ubuntu x64 (SYCL FP32) - Ubuntu x64 (SYCL FP16) - Linux arm64 (Snapdragon : CPU, GPU Adreno, NPU Hexagon) - guide d'installation
Android : - Android arm64 (CPU) - Android arm64 (Snapdragon : CPU, GPU Adreno, NPU Hexagon) - guide d'installation
Windows : - Windows x64 (CPU) - Windows arm64 (CPU) - Windows arm64 (OpenCL Adreno) - Windows x64 (CUDA 12) - DLLs CUDA 12.4 - Windows x64 (CUDA 13) - DLLs CUDA 13.4 - Windows arm64 (CUDA 13) - DLLs CUDA 13.4 - Windows x64 (Vulkan) - Windows arm64 (Vulkan) - Windows x64 (OpenVINO) - Windows x64 (SYCL) - Windows x64 (ROCm 10.0)
openEuler : - DÉSACTIVÉ - openEuler x86 (310p) - openEuler x86 (910b, ACL Graph) - openEuler aarch64 (310p) - openEuler aarch64 (910b, ACL Graph)
IU : - IU