Выпуск llama.cpp b11405 обновляет бэкенд CUDA, тайля световой индексатор по ключам и токенам для 4 голов, решая проблемы производительности при малом количестве голов.

  • Ядро кэширует запросы и веса для всех голов одновременно, расширяя каждый элемент ключа половинной точности один раз, чтобы питать все головы без обратного преобразования в float.
  • Запросы остаются в формате float внутри разделяемой памяти, чтобы предотвратить переполнение от произведений half2, когда q * k превышает диапазон f16.
  • Каждый поток теперь оценивает два ключа для одного токена, уменьшая чтение из разделяемой памяти и сохраняя gfx908 на уровне 63 VGPR без выгрузки регистров.
  • Эта оптимизация ускоряет ядро в 36 раз на R9700 и немного быстрее на оборудовании CUDA.

Выпуск предоставляет бинарные файлы для macOS, Linux, Windows, Android и openEuler для бэкендов CPU, GPU (CUDA, ROCm, Vulkan, OpenCL) и NPU.