O lançamento b9857 do llama.cpp introduz uma reestruturação abrangente da implementação do Hexagon Flash Attention, focando em otimizações e melhorias de precisão. Esta atualização inclui mudanças significativas nos módulos hex-mm e hex-fa, como a incorporação de tarefas de quantização nos threads principais de matmul, fusão com operações ADD e otimização do processamento de máscaras.

  • As otimizações do Hexagon Flash Attention (hex-fa) incluem a fatorização de ukernels, o deslocamento do cálculo dos parâmetros do kernel para o host e a adição de suporte para FA_SELECT e Sinks.
  • As melhorias de desempenho envolvem a atualização dos limiares de fallback Hvx para recuperar regressões de throughput, otimizando o cacheamento DMA da máscara e usando carregamentos alinhados e índices uint32_t.
  • As melhorias na precisão numérica incluem manter os acumuladores do softmax em fp32, substituir vec_exp_f32 por vec_exp2_f16 e evitar transbordos de conversão ao não usar -inf para a inicialização da máscara.
  • O lançamento fornece binários para macOS (Apple Silicon e Intel), Linux (CPU, Vulkan, ROCm, OpenVINO, SYCL), Android, Windows (CPU, CUDA 12/13, Vulkan, OpenCL, HIP, OpenVINO, SYCL) e openEuler.

Esta atualização melhora o desempenho de inferência nos DSPs Hexagon e expande o suporte a hardware em várias plataformas e aceleradores para os usuários do llama.cpp.