llama.cpp b11633修复ggml-cpu SET_ROWS多线程缓冲区越界
该版本修复了SET_ROWS在多线程CPU推理图里越界写入F16→F32转换缓冲区的问题,并随版本提供各平台预编译包。
AI解读:按发布说明的描述,SET_ROWS原先按n_tasks = 1 规划,但每个线程都会执行,并各自使用F16→F32转换缓冲区的一行;当图中还存在其他多线程算子时,编号大于 0 的线程会写到工作缓冲区之外。
修复方式是把set_rows移到n_task = n_threads分组,并按所有线程来设置转换缓冲区大小。
该发布说明由ggml-org仓库的github-actions[bot] 发布,属于项目方对修复内容的说明,不是独立第三方的复现验证。
除修复说明外,b11633发布了macOS、iOS、Linux、Android、Windows等平台的预编译产物,其中macOS Apple Silicon的KleidiAI版和openEuler相关构建标注为DISABLED。
llama.cpp发布构建版本b11633,改动集中在ggml-cpu的CPU后端。发布说明称,这版修复了SET_ROWS在多线程执行时的缓冲区越界写入问题。
ggml-cpu改动内容
发布说明指出,SET_ROWS原先按n_tasks = 1 规划,但实际每个线程都会执行它,并各自使用F16→F32转换缓冲区中的一行,因此当计算图里还存在另一个多线程算子时,编号大于 0 的线程会写到工作缓冲区之外。
对应修复有两点:为所有线程设置set_rows转换缓冲区的大小;把set_rows移动到n_task = n_threads分组。
发布形式与平台产物
b11633随版本提供多平台预编译包,覆盖macOS Apple Silicon与Intel、iOS XCFramework,Ubuntu的CPU、Vulkan、CUDA 12、CUDA 13、ROCm 10.0、OpenVINO、SYCL构建,Android arm64,Windows的CPU、CUDA、Vulkan、OpenVINO、SYCL、ROCm构建,以及Linux/Android的Snapdragon版。
发布说明将macOS Apple Silicon的KleidiAI启用版本标注为DISABLED,openEuler的多个构建也标注为DISABLED。此次发布的具体修复条目指向仓库pull request #30454。