llama.cpp 项目发布了构建版本 b11184,为 Metal 后端引入了支持大于 512 块宽度的新快速沃尔什-哈达玛变换 (FWHT) 内核。此前,Metal FWHT 实现仅限于 64 到 512 之间的宽度。

  • 新内核通过每个线程组使用 256 个线程运行一行来处理从 1024 到 8192 的宽度,使更宽的块能够利用线程组内存,而不是仅依赖寄存器。
  • 宽度 64 到 512 继续使用现有的 simdgroup 内核,而新的宽内核支持 F32 和 F16 源类型。
  • 该实现包含针对设备限制的大小检查,以防止在缺乏足够线程组内存的设备上中止,分配 float[N] 的内存,在宽度为 8192 时达到 32 KB。
  • 在 M5 Pro 设备上对后端的运行测试通过了 MUL_MAT_HADAMARD 和 MUL_MAT 的所有检查。

此更新使 llama.cpp 能够在 Metal 后端中对更大的块大小执行哈达玛积运算,扩展了 Apple Silicon 硬件支持的张量维度范围。