开源llama.cpp Releases·原文 2026年10月1日

llama.cpp发布b11302:修复glm5-next稀疏索引器多线程写冲突

该补丁让每个失效索引槽写入独立行n_kv + slot,避免填充池、缺失序列和尾部单元格争用同一sentinel行导致ThreadSanitizer报出的数据竞争。

AI解读:llama.cpp发布构建b11302,核心改动是给glm5-next的稀疏索引器掩码中每个失效槽分配独立scatter行,修复sanitize CI中ThreadSanitizer报出的数据竞争。

问题出在多个失效来源——填充池、缺失序列、缺失尾部单元格——都指向同一个n_kv sentinel行,被top_k选中的不可见池又与token尾部单元格重叠,导致多个CPU线程写同一元素。

改动同时为两条选择路径分配槽掩码,活跃槽仍指向互不重叠的单元,因此一个token的scatter索引保持唯一。

该版本照例附带macOS、Linux、Windows、Android等多平台预编译二进制,包括CUDA 12/13、Vulkan、ROCm 10.0、OpenVINO、SYCL等后端;KleidiAI的macOS Apple Silicon构建与openEuler构建仍为DISABLED状态。

依据是GitHub Releases页面的发布说明与摘要,未包含该修复在实际推理性能或正确性上的基准数据。

llama.cpp发布b11302构建,附带一项针对glm5-next的修复:为稀疏索引器掩码中的每个失效槽分配唯一的scatter行,提交标题为 “glm5-next: give dead indexer slots unique scatter rows (#29745)”。

发布说明指出,该稀疏索引器掩码通过set_rows scatter构建。此前填充池、缺失序列和缺失尾部单元格都指向同一个n_kv sentinel行;被top_k选中填充选择的不可见池会与token的尾部单元格重叠,导致多个CPU线程写入同一元素,在sanitize CI中触发ThreadSanitizer数据竞争报告。

修复方式是为两条选择路径都分配槽掩码,并把每个失效槽路由到自己的dump行n_kv + slot。活跃槽指向互不重叠的单元,因此一个token的scatter索引保持唯一。

该版本提供的构建产物

发布页列出各平台预编译包。macOS/iOS提供Apple Silicon arm64、Intel x64和iOS XCFramework;其中启用KleidiAI的macOS Apple Silicon构建标记为DISABLED,链接指向PR 23780。

  • Linux:Ubuntu x64/arm64/s390x CPU,Vulkan x64/arm64,CUDA 12.8与CUDA 13.4(x64/arm64),ROCm 10.0 x64,OpenVINO 2026.4 x64,SYCL FP32/FP16 x64,以及Snapdragon(CPU、Adreno GPU、Hexagon NPU)arm64构建。
  • Android:arm64 CPU与Snapdragon(CPU、Adreno GPU、Hexagon NPU)arm64构建,附设置指南链接。
  • Windows:x64/arm64 CPU、arm64 OpenCL Adreno、CUDA 12.4/13.4(x64/arm64)、Vulkan x64、OpenVINO 2026.4 x64、SYCL x64、ROCm 10.0 x64。
  • openEuler:x86 310p、x86 910b ACL Graph、aarch64 310p、aarch64 910b ACL Graph均标记为DISABLED,链接指向PR 23705。
  • UI包:llama-b11302-ui.tar.gz。

已知限制与说明

发布内容只陈述了索引器scatter的数据竞争修复与二进制清单,未提供该改动对推理速度或输出正确性的实测数据。macOS Apple Silicon的KleidiAI构建和openEuler全部构建处于禁用状态,相关链接分别对应PR 23780与PR 23705。

信息来源

llama.cpp Releases原始来源