Релиз llama.cpp b10306 вносит оптимизации производительности для бэкенда SYCL, конкретно направленные на операции Gated Linear Unit (GLU). Обновление добавляет непрерывный быстрый путь для объединённых операций GLU и объединяет ранее различные ядра для использования общего загрузчика.

  • Добавлены тестовые случаи производительности SWIGLU, охватывающие 17408 столбцов с 512 и 2048 токенами в форматах f16 и f32.
  • Объединены ядра fused-GLU путём передачи операции в качестве аргумента, удалены неиспользуемые константы SYCL_GELU_BLOCK_SIZE и SYCL_SILU_BLOCK_SIZE.
  • Реализован плоский вызов ядра для непрерывных операндов, где математика индексов деинтерливинга сводится к тождеству.
  • Достигнуто улучшение производительности на +14% в f16 и +4% в f32 для разделённого GLU на Arc Pro B70, при этом объединённые операции остались без изменений.

Эти изменения повышают эффективность бэкенда SYCL за счёт уменьшения дублирования кода и оптимизации шаблонов доступа к памяти для определённых конфигураций тензоров.