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

llama.cpp b11933修复Vulkan后端MUL_MAT三维广播限制

该项目称,此前Vulkan的supports_op会拒绝源张量在ne3维度不等的所有MUL_MAT,导致矩阵乘法回退到CPU并复制权重;b11933把严格检查限定到MUL_MAT_ID,并补充了针对MLA输出投影形状的测试。

AI解读:llama.cpp发布b11933,核心改动在Vulkan后端:允许MUL_MAT在第三维上做广播。

按提交说明,Vulkan的supports_op以前会拒绝src0与src1在ne3上不一致的每一个MUL_MAT,而mul_mm、mul_mmq和mul_mat_vec已经通过broadcast3对src0做第三维广播。

被拒绝的矩阵乘法此前会转到CPU上执行,并复制权重;提交说明称,拆分布局随ubatch中stream数量变化。

新版本只对MUL_MAT_ID保留严格检查,并让广播情形绕开唯一要求ne3相等的mul_mat_vec_nc路径。

测试方面,提交称用第三维权重广播、对每流激活做置换的用例加固了MUL_MAT覆盖,对应非统一KV cache下MLA输出投影的形状,覆盖单token、多头和每流多token三种情形。

发布页同时列出macOS、iOS、Linux、Android、Windows等平台的构建产物下载,并标注部分构建已禁用,例如macOS启用KleidiAI的arm64版本和openEuler构建。

llama.cpp发布b11933版本。该版本发布说明显示,改动集中在Vulkan后端对MUL_MAT第三维广播的处理,目的是修复CI中的llvmpipe相关问题(提交 #31239)。

提交说明称,此前Vulkan的supports_op会拒绝所有src0与src1在ne3上不同的MUL_MAT,尽管mul_mm、mul_mmq和mul_mat_vec已经通过broadcast3把src0沿第三维广播。这类矩阵乘法因此改在CPU上运行,并伴随一次权重复制;拆分布局也会随ubatch中stream数量变化。

严格检查只保留给MUL_MAT_ID

b11933把ne3相等的严格检查限定在MUL_MAT_ID上,其他广播情形则绕开mul_mat_vec_nc——提交说明称这是唯一要求ne3相等的路径。

提交说明同时描述了被拒绝后发生的回退:矩阵乘法转到CPU执行,并复制权重。

测试覆盖MLA输出投影形状

提交中的测试改动用“第三维权重广播 + 每流激活置换”的用例加固MUL_MAT覆盖,描述为对应非统一KV cache下MLA输出投影的形状,覆盖单个token、多个head以及每流多个token。

发布页还列出各平台构建产物,包括macOS Apple Silicon与Intel、iOS XCFramework、Ubuntu的CPU/Vulkan/CUDA/ROCm/OpenVINO/SYCL构建、Windows的CPU/CUDA/Vulkan/OpenVINO/SYCL/ROCm构建、Android arm64以及Snapdragon的CPU、Adreno GPU和Hexagon NPU构建。部分构建标注为禁用,包括启用KleidiAI的macOS arm64版本和openEuler构建。

信息来源

llama.cpp Releases原始来源