La version b10858 de llama.cpp introduit la fusion de noyaux Vulkan pour les activations UNARY adjacentes (GELU, SIGMOID, SILU, SOFTPLUS) et les opérations MUL. Cette optimisation compense une régression de 10 à 18 % dans la vitesse de traitement des prompts en éliminant les accès mémoire redondants et les branchements au moment de l'exécution.
- Les pipelines fusionnés traitent GELU, SIGMOID, SILU et SOFTPLUS avec MUL, en utilisant des shaders SPIR-V spécialisés pour f32 et f16.
- L'optimiseur de graphe planifie désormais les paires fusionnées même lorsqu'elles sont séparées par des nœuds sans calcul comme VIEW ou RESHAPE, étendant la prise en charge aux motifs trouvés dans des modèles tels que Gemma4.
- La prise en charge de la fusion OP-on-B permet les activations sur l'opérande MUL le plus petit, permettant un contrôle efficace dans les architectures à experts partagés.
- Les tests backend couvrent de nouvelles dispositions incluant 'gate' et 'view_mid' pour valider l'exactitude sur diverses formes de tenseurs.
Cette modification améliore significativement la latence d'inférence pour les modèles qui dépendent fortement des mécanismes de contrôle d'activation en réduisant la surcharge computationnelle dans le backend Vulkan.