开源llama.cpp Releases·原文 2026年9月10日本站收录 2026年9月11日

llama.cpp为PowerVR显卡增加shared-memory reduction回退路径

Imagination的Vulkan编译器对要求subgroup size ≥16 的反量化mul_mat_vec shader一律返回VK_ERROR_UNKNOWN,导致k-quants、i-quants、TQ2_0、MXFP4、NVFP4模型在生成第一个token时进程崩溃。新版本在PowerVR上改走shared-memory reduction。

AI解读:这条更新解决的是Vulkan后端在PowerVR显卡上跑不动一类量化模型的问题。Imagination的闭源Vulkan编译器对使用subgroup-only reduction的反量化mul_mat_vec shader直接返回VK_ERROR_UNKNOWN,ggml又把错误抛出去,所以模型刚吐第一个token进程就挂了。

受影响的模型范围不小,k-quants、i-quants、TQ2_0、MXFP4和NVFP4都在内。作者在Pixel 11 Pro上复现,subgroup size取 32、64、128 都失败,去掉full-subgroups标志也没用,说明不是调参数能绕过去的。

新版本改走shared-memory reduction后,q2_K、q3_K、q4_K、q5_K、q6_K的编译结果与CPU reference一致,也就是能正常用了。代价是吞吐:Qwen3.5-2B-Q4_K_M上 5.20 t/s降到 3.78 t/s。拿PowerVR设备跑这类量化模型的人,先弄清楚自己能不能接受这个速度差再升级。

llama.cpp发布b10891版本,为PowerVR GPU上的反量化mul_mat_vec(dmmv)操作增加了回退到shared-memory reduction的路径,对应改动为PR #28341。

Imagination Vulkan编译器返回VK_ERROR_UNKNOWN

根据发布说明,Imagination专有Vulkan编译器会对每一个使用subgroup-only reduction构建的反量化mul_mat_vec shader返回VK_ERROR_UNKNOWN;这类shader要求subgroup size >= 16。涉及k-quants、i-quants、TQ2_0、MXFP4和NVFP4。

由于ggml会重新抛出该错误,任何此类模型在生成第一个token时就会导致进程终止。

该问题在Pixel 11 Pro上复现,设备为PowerVR C-Series CXTP-48-1536 MC1,驱动版本 1.662.3024,subgroup size为 128,min 32,max 128。

发布说明称,失败与subgroup size无关:32、64、128 均失败;去掉full-subgroups标志和required-subgroup-size pNext也同样失败。使用普通subgroup reduction的legacy quants可以正常编译和运行。

shared-memory reduction的效果与代价

发布说明称,shared-memory reduction变体可以编译,并在q2_K、q3_K、q4_K、q5_K和q6_K上与CPU参考结果一致。

混合变体同样可以编译,但吞吐下降 27%:在Qwen3.5-2B-Q4_K_M上为 3.78 t/s,对比 5.20 t/s。

信息来源

llama.cpp Releases原始来源