llama.cpp发布b10850版本:修复L2_NORM测试在GCC 12下的编译告警
新版本仅包含一项测试代码修复,将L2_NORM批次数绑定到局部变量并为数组初始化,解决aarch64 Release构建在GCC 12下因“可能未初始化”告警导致的编译失败。
AI解读:llama.cpp的b10850版本是一次针对测试代码的小型修复,核心是解决在特定编译器下编译失败的问题:在aarch64架构的Release构建中,GCC 12会因循环填充数组后读取元素时无法证明数组已完全初始化而报告“可能未初始化”的告警,而该项目将告警视为致命错误,导致编译中断。修复方式是将类成员中的批次数读取到局部变量,并为L2_NORM批次数组添加初始化器,让编译器能够确认读取是安全的。对普通用户而言,这次更新不涉及新功能或性能变化,功能上等同于之前的版本;真正受影响的是一小部分开发者——他们如果在GCC 12下构建aarch64版本时曾遇到编译失败,升级到b10850即可解决。macOS Apple Silicon的KleidiAI版本和openEuler的多个构建仍然处于禁用状态,有相关需求的用户需要注意,无需立即升级,除非遇到上述编译问题。
llama.cpp项目于近日发布b10850版本,唯一变更是一项测试代码修复:为L2_NORM批次数组添加初始化,并批次数绑定到局部变量,解决GCC 12在aarch64 Release构建中报告的“可能未初始化”告警。该告警在该构建配置中被视为致命错误,导致编译失败。
修复来源与构建平台支持
根据发布说明(由github-actions[bot]以llama.cpp项目名义发布),修复来自提交#28553。主要内容包括:将L2_NORM的批次数读取到局部变量(因GCC无法证明当循环边界为类成员时,数组已填充到读取的索引);为L2_NORM批次数组添加初始化器(该数组在填充循环后的读取仅在数组带有初始化器时才可证明是已定义的,而GCC 12在aarch64 Release构建中需要这一步)。
- 预编译包覆盖macOS(Apple Silicon arm64、Intel x64)、iOS XCFramework、Ubuntu(x64/arm64/s390x CPU,x64/arm64 Vulkan,x64 ROCm 10.0/OpenVINO/SYCL FP32与FP16)、Android arm64、Windows(x64/arm64 CPU,arm64 OpenCL Adreno,x64 CUDA 12.4/13.3,arm64 CUDA 13.4预览等),以及独立UI包。
- macOS Apple Silicon(arm64)的KleidiAI版本被禁用(见PR #23780),openEuler平台的全部构建(含310p和910b ACE Graph)也被禁用(见PR #23705)。