llama.cpp发布b11095:为Hexagon加入HMX优化的GATED_DELTA_NET
提交记录显示,新版本为GDN增加HMX支持并重写VTCM布局、引入流水线与HVX线程化,其中一项改动让token生成期间DDR读取减少 20%–30%。
AI解读:提交记录里最实在的数字是:优化HVX kernel的DMA流水线后,token生成期间DDR读取减少 20%–30%。这属于内存搬运层面的节省,不直接等同于端到端推理速度提升,实际收益要看模型和硬件配置。
过程并不顺:HMX支持最初能跑但未流水线化、速度慢,随后才逐步加入VTCM布局重写、HMX与DMA流水线、多数流水线阶段的HVX线程化、expf向量化,以及把exp() 放到f16计算以提高HVX利用率。
对直接跑llama.cpp Hexagon后端的人来说,这是可以试的版本;对其他人,它主要是移动端推理持续下沉到DSP的一个进展信号,无需立即行动。
llama.cpp发布b11095,主要变化是为Hexagon后端加入HMX优化的GATED_DELTA_NET(GDN),对应PR #29199。
提交记录同时提到,优化HVX kernel的DMA流水线后,token生成期间的DDR读取减少 20%–30%。
GDN的HMX支持从能跑到流水线化
提交日志显示,Hexagon GDN的HMX支持是分步搭起来的:先做出可运行的HMX版本,但当时未流水线化、速度慢;随后重写VTCM布局处理并为流水线做准备,接着开始对HMX和DMA做流水线化。
后续步骤包括为大多数流水线阶段加入HVX线程化、加入详细的trace事件、向量化expfs并改用对齐的HVX读写、把剩余的expf向量化,以及优化尾部处理(对不完整块做填充)。
- hex-gdn:搭建HMX支持,最初可用但未流水线化且慢
- hex-gdn:重写VTCM布局处理,为流水线做准备
- hex-gdn:开始流水线化HMX与DMA
- hex-gdn:为大多数流水线阶段加入HVX线程化
- hex-gdb:加入详细trace事件
精度与调度层面的调整
在计算精度与调度上,提交记录列出若干改动:在热循环中避免float向上/向下转换;用f16执行exp() 以提高HVX利用率;优化tiler;把hmx-queue提升到 128,并一次性派发所有GDN gemm。
GDN prep阶段与GDN_SOLVE任务及流水线经过多轮调整,记录中还提到进一步提升精度并继续优化gdn-prep。
- hex-gdn:在热循环中避免float向上/向下转换
- hex-fa:从内层循环移除float向上/向下转换
- hex-gdn:用f16执行exp() 以提升HVX利用率
- hex-gdn:优化tiler
- hex-hmx:将hmx-queue提升到 128,并一次性派发所有GDN gemm
DDR读取减少与其它清理
性能相关的一条明确数字是:对HVX kernel的DMA流水线做小幅改进后,token生成期间DDR读取减少 20%–30%。记录还称改进了内联softmax(使用寄存器内VKQ32累加),并为HVX VTCM spad做正确对齐。
其它改动包括:撤回max_bufsize的强制限制,仅保留max_vmem限制;改进inspect脚本,避免寄存器溢出检测器误报;修复rebase冲突。
- hex-fa:改进内联softmax,使用寄存器内VKQ32累加
- hex-fa:token生成期间DDR读取减少 20%–30%
- hex-gdn:为HVX VTCM spad做正确对齐
- hex-bufs:撤回max_bufsize强制限制,仅强制max_vmem
- hex-scripts:改进inspect脚本,避免寄存器溢出检测器误报
发布产物覆盖的平台
b11095的发布产物覆盖macOS/iOS、Linux、Android、Windows和openEuler等平台。Linux侧包含Ubuntu x64/arm64/s390x CPU、Vulkan、CUDA 12.8、CUDA 13.4、ROCm 10.0、OpenVINO 2026.4、SYCL FP32/FP16等构建;Windows侧包含CPU、OpenCL Adreno、CUDA、Vulkan、OpenVINO、SYCL、ROCm等构建。
记录显示,macOS Apple Silicon的KleidiAI启用版本与openEuler构建目前处于DISABLED状态。
- macOS/iOS:Apple Silicon arm64、Intel x64、iOS XCFramework;KleidiAI启用版本DISABLED
- Linux:Ubuntu x64/arm64/s390x CPU,以及Vulkan、CUDA 12.8、CUDA 13.4、ROCm 10.0、OpenVINO 2026.4、SYCL FP32/FP16
- Android:arm64 CPU
- Windows:x64/arm64 CPU、OpenCL Adreno、CUDA 12.4、CUDA 13.4、Vulkan、OpenVINO 2026.4、SYCL、ROCm 10.0
- openEuler:x86 310p、x86 910b ACL Graph、aarch64 310p、aarch64 910b ACL Graph,均为DISABLED