Le projet llama.cpp a fusionné les opérations RMS_NORM et SCALE en un seul noyau CUDA afin de réduire la surcharge hôte/driver. Auparavant, des nœuds SCALE séparés ajoutaient des lancements de noyaux supplémentaires qui étaient négligeables dans le traitement par lots classique mais augmentaient significativement la latence lors du décodage spéculatif draft-mtp.
- La fusion ajoute un drapeau do_scale à rms_norm_f32, permettant au chemin fusionné de partager le noyau, la réduction et le lanceur tout en maintenant une équivalence numérique bit à bit.
- Sur une configuration 2x GTX 1080 Ti avec Qwen3.8-27B, le débit de préremplissage à froid s'est amélioré de 4,2 % pour 8000 tokens et de 4,8 % pour 20000 tokens dans des conditions draft-mtp.
- Le nombre de lancements par ubatch est passé de 1032,9 + 841,7 à 978,9 + 799,7, correspondant aux comptes de référence précédents sans modifier les sommes d'opérations GPU.
- Tous les tests backend pour RMS_NORM_SCALE, NORM_SCALE et les opérations associées passent sur les deux GPUs, la perplexité restant identique à celle de la version non fusionnée.
Cette optimisation améliore la vitesse d'inférence spécifiquement dans les scénarios de décodage spéculatif en réduisant le coût cumulatif des lancements de noyaux.