llama.cpp发布b11905:Vulkan后端RMS Norm改用子组归约优化
llama.cpp在版本b11905中合入PR #29882,为Vulkan后端的RMS Norm计算加入基于子组归约的优化路径,并新增AMD厂商适配与 128/256/512 三档块大小的非子组回退路径;发布页未给出性能数据。
AI解读:这次改动只涉及llama.cpp的Vulkan后端RMS Norm算子实现,不改变模型文件格式或其他后端的计算逻辑。
提交说明列出了多项具体调整:加入子组归约优化、放宽第二段subgroupAdd的快路径、加入AMD厂商判断、保留 128/256/512 块大小的非子组路径,以及处理构建错误和语法问题。
发布说明没有给出优化前后的耗时、吞吐或与CUDA、CPU后端的对比数据,因此目前无法判断实际加速幅度,也无法推断在不同显卡上的效果差异。
b11905同时提供macOS、Linux、Windows、Android等多平台预编译包,其中Vulkan构建覆盖Ubuntu x64/arm64和Windows x64/arm64;AMD适配仅说明在Vulkan子组归约路径中识别AMD厂商。
llama.cpp发布版本b11905,合入PR #29882,主题为“vulkan: rms norm optimization using subgroup reductions”,即用子组归约优化Vulkan后端中的RMS Norm计算。提交信息作者为github-actions[bot],来源为llama.cpp Releases页面。
提交说明列出该PR的多项改动:实现RMS Norm的子组归约优化;修复构建错误;进一步改进优化;统一使用BLOCK_SIZE;增加跳过第二次subgroupAdd的快路径;在子组归约优化中加入AMD厂商;补充说明rms_dict与merge_maps行为的注释;加入循环展开;变基;修复语法问题;为非子组路径加入 128、256、512 三种块大小;移除行尾空白。
发布页同时列出b11905的多平台构建产物,包括macOS Apple Silicon与Intel、iOS XCFramework、Ubuntu(CPU、Vulkan、CUDA 12/13、ROCm 10.0、OpenVINO、SYCL)、Windows(CPU、CUDA、Vulkan、OpenVINO、SYCL、ROCm)、Android以及Snapdragon相关构建。发布页未提供该优化的性能测试数据或基准结果。
改动范围与适用后端
PR #29882 的改动集中在Vulkan后端的RMS Norm算子。提交说明显示,优化依赖子组归约(subgroup reductions),并增加了非子组路径作为回退,后者支持 128、256、512 三种块大小。提交说明还提到“Add AMD Vendor to subgroup reduction opt”,即在子组归约优化中加入AMD厂商分支。
这些信息来自提交说明与发布页,属于代码变更描述,不代表已公开验证的性能结论。
- PR编号:#29882
- 变更主题:Vulkan后端RMS Norm使用子组归约优化
- 新增非子组路径块大小:128、256、512
- 涉及厂商适配:AMD
- 提交说明包含构建修复、语法修复、循环展开和注释补充
发布产物与未给出的信息
b11905发布页按平台列出预编译包,涵盖macOS、iOS、Linux、Android、Windows和openEuler条目,其中openEuler相关构建标注为DISABLED。macOS Apple Silicon的KleidiAI启用版本同样标注DISABLED。
发布页没有给出RMS Norm优化的基准数字、适用GPU型号清单或与旧版本的性能对比。因此,这项改动是否带来可测量的加速、加速幅度多大,尚无法从来源中确认。
- Vulkan预编译包覆盖Ubuntu x64/arm64与Windows x64/arm64
- CUDA构建提供 12.8、13.4 等版本
- ROCm构建标注为ROCm 10.0
- openEuler构建与macOS KleidiAI启用版本标注DISABLED
- 未提供优化性能数据