La version b10956 de llama.cpp introduit un algorithme de sélection radix pour le backend SYCL afin de gérer les grandes valeurs de k dans l'opération TOP_K, qui précédemment recourait au CPU pour k > 32. Ce changement permet le traitement des grandes valeurs de k directement sur le GPU en utilisant des passes basées sur des histogrammes, ce qui maintient l'emprise mémoire locale partagée indépendante de k.
- La nouvelle implémentation prend en charge les valeurs de k jusqu'à 2048 et au-delà, éliminant les allers-retours entre backends pour des opérations comme l'indexeur d'attention sparse de qwen4exp.
- Les améliorations de performances incluent un gain de vitesse de 4,98x avec ne=[131072,1] et k=2048, ainsi qu'une exécution jusqu'à 118 fois plus rapide dans certaines configurations de lot par rapport au recours au CPU.
- Les tests de bout en bout sur 3x Arc Pro B60 avec Qwen3.8-Flash-Next montrent une augmentation du débit de 5,91 à 6,05 t/s pour d=131072, la perplexité restant inchangée.
- La version inclut des binaires pour macOS, Linux, Windows, Android et openEuler sur les backends CPU, CUDA, ROCm, Vulkan, OpenVINO et SYCL.
Cette mise à jour permet des opérations top_k efficaces avec de grandes valeurs de k sur les dispositifs SYCL, évitant les goulots d'étranglement de performance dans les modèles nécessitant de grandes valeurs de k pour la sélection de tokens.