llama.cpp b11207为Hexagon NPU支持分块Q4_0与Q8_0的GET_ROWS
该版本通过六边形分块HVX反量化、改进DMA流水线并重新启用向量化,让高通Hexagon NPU后端能处理分块Q4_0、Q8_0权重的行提取操作。
AI解读:llama.cpp发布b11207版本,核心改动是让Hexagon后端支持分块(tiled)Q4_0和Q8_0的GET_ROWS操作,提交号为 #29511。
这意味着在高通骁龙设备的Hexagon NPU上运行量化模型时,取出行数据的环节不再因这两种分块量化格式而受限,但具体加速幅度官方未给出数据。
改动依赖分块HVX反量化和改进的DMA流水线,并重新启用了此前在采样器更新中意外回退的向量化编译选项。
普通用户无需立即行动;关注高通平台本地推理的开发者可以从release页面下载Android与Linux arm64 Snapdragon构建进行验证,包括官方提供的设置指南。
llama.cpp发布b11207,提交 #29511 为Hexagon后端增加对分块(tiled)Q4_0和Q8_0量化格式GET_ROWS操作的支持。
该改动由Max Krasnyansky等人协作完成,提交说明中的步骤包括:修复宏、使用分块HVX反量化(Assisted-by: OpenCode)、修复寄存器溢出并清理对不支持操作的检查、改进DMA流水线、改进并简化内核选择逻辑。
同一提交还重新启用了向量化构建,作者称此前在采样器更新中未注意到该回退。
改动的具体组成
提交 #29511 的标题是“hexagon: support tiled Q4_0 and Q8_0 GET_ROWS”。其变更列表按提交信息描述,依次为:支持分块Q4_0与Q8_0的GET_ROWS、修复宏、使用分块HVX反量化、修复寄存器溢出并清理不支持操作的检查、改进DMA流水线、改进并简化内核选择逻辑。
提交还注明重新启用向量化(hex-build: reenable vectorizer),原因是作者在采样器更新时没有注意到该回归。提交中有“Assisted-by: OpenCode”的标注。
- 支持对象:Hexagon后端的分块Q4_0与Q8_0的GET_ROWS操作
- 实现手段:分块HVX反量化、改进DMA流水线、简化内核选择
- 附带修复:寄存器溢出、不支持操作的检查清理、重新启用向量化
发布产物与获取方式
b11207的release页面列出了各平台预编译包下载,包括macOS Apple Silicon(arm64)、macOS Intel(x64)、iOS XCFramework、Ubuntu(x64/arm64/s390x,含Vulkan、CUDA 12、CUDA 13、ROCm 10.0、OpenVINO 2026.4、SYCL FP32/FP16)、Android arm64、Windows(x64/arm64,含CUDA 12、CUDA 13、Vulkan、OpenVINO 2026.4、SYCL、ROCm 10.0)以及UI包。
与本次改动直接相关的是高通骁龙平台构建:Linux arm64(Snapdragon:CPU、Adreno GPU、Hexagon NPU)和Android arm64(Snapdragon:CPU、Adreno GPU、Hexagon NPU),页面分别提供了Linux与Android的设置指南链接。
页面同时标注macOS Apple Silicon(arm64, KleidiAI enabled)为DISABLED,openEuler构建也为DISABLED。b11207页面未附性能数据或基准测试,因此该改动带来的实际加速幅度尚不清楚。
- Snapdragon相关包:Linux arm64、Android arm64(均含CPU、Adreno GPU、Hexagon NPU)
- 使用前提:需按官方snapdragon设置指南配置Hexagon后端
- 未提供信息:本版本未公布性能或基准数据