llama.cpp发布b11889:CUDA后端改用std::string处理archName
该版本唯一合并的改动来自PR #30463,把CUDA代码中用于存放架构名称的C风格变长数组换成std::string,以消除Clang的 -Wvla-cxx-extension警告。发布页同时提供macOS、Linux、Windows、Android等平台的预编译包。
AI解读:llama.cpp发布构建b11889,变更说明中列出的合并项只有一条:PR #30463,标题为“cuda : use std::string instead of VLA for archName”。
改动前的代码在ggml/src/ggml-cuda/ggml-cuda.cu第 180 行使用char archName[archLen + 1],其中archLen由第 179 行的strlen(devName) 得到;Clang会对C++中的变长数组扩展发出 -Wvla-cxx-extension警告,并提示不能在常量表达式中读取非const变量archLen。
提交者Adrien Gallouët在提交说明中把这次修改描述为“现代化这段旧C风格代码”并修复上述警告,随后又追加了一条关于archName的注释;改动仅涉及CUDA后端的命名处理,未提及性能或功能变化。
发布页按平台列出预编译产物,包括macOS Apple Silicon与Intel、iOS XCFramework、Ubuntu(CPU、Vulkan、CUDA 12.8、CUDA 13.4、ROCm 10.0、OpenVINO、SYCL)、Windows(CPU、CUDA、Vulkan、OpenVINO、SYCL、ROCm)、Android与Snapdragon等;macOS的KleidiAI构建和openEuler构建标注为DISABLED。
llama.cpp发布构建b11889。发布说明中唯一的代码变更是PR #30463:CUDA后端把用于存放GPU架构名称的变长数组改为std::string。
b11889中的CUDA代码改动
PR #30463 的标题为“cuda : use std::string instead of VLA for archName”。提交说明显示,原代码在ggml/src/ggml-cuda/ggml-cuda.cu第 180 行声明char archName[archLen + 1],其中archLen在第 179 行由strlen(devName) 计算得到。
Clang对此给出 -Wvla-cxx-extension警告,指出C++中的变长数组属于扩展用法,并提示不能在常量表达式中读取非const变量archLen。提交者Adrien Gallouët称改用std::string是为现代化这段旧C风格代码并修复上述警告,之后又为该变量补充了一条注释。
发布说明未提到这一改动带来性能、精度或功能层面的变化,适用范围是CUDA后端的架构名称处理。
- 变更文件:ggml/src/ggml-cuda/ggml-cuda.cu,涉及第 179–180 行附近
- 原写法:char archName[archLen + 1],archLen = strlen(devName)
- 新写法:std::string
- 警告类型:-Wvla-cxx-extension(Clang对C++变长数组扩展的提示)
- 提交者:Adrien Gallouët
同批发布的预编译包
发布页按平台列出b11889的预编译产物。Linux侧包括Ubuntu x64与arm64的CPU包、s390x CPU包、Vulkan包,以及CUDA 12.8、CUDA 13.4的x64与arm64包和对应的CUDA运行库压缩包,另有ROCm 10.0、OpenVINO 2026.4.1、SYCL FP32/FP16的x64包。
Windows侧覆盖x64与arm64的CPU包、CUDA 12.4与CUDA 13.4包及DLL、Vulkan、OpenVINO、SYCL、ROCm 10.0,以及arm64的OpenCL Adreno包。其他平台包括macOS Apple Silicon与Intel、iOS XCFramework、Android arm64及Snapdragon版本,发布页还附有Snapdragon在Linux与Android上的安装指南链接。
- 标注DISABLED:macOS Apple Silicon的KleidiAI构建(关联PR #23780),以及openEuler的x86/aarch64包(关联PR #23705)
- 发布页另提供UI包
- 发布者为GitHub Actions机器人账号github-actions[bot]