llama.cpp发布b12319:SYCL后端改用线程本地缓存的设备ID
该版本将ggml_sycl_set_main_device() 提前返回检查中的dpct::get_current_device_id() 调用改为读取线程本地缓存的设备ID,避免每次图计算开始时锁定设备管理器互斥锁。
AI解读:提交说明标注Assisted-by: Claude Code,共同作者为zhaoyshine。
发布页同时列出macOS/iOS、Linux、Android、Windows等多平台预编译包,其中macOS Apple Silicon的KleidiAI启用版与openEuler相关构建标注为DISABLED。
来源未给出该改动带来的性能提升数据,因此无法据此判断实际加速幅度。
该改动仅涉及SYCL后端的主设备设置路径,其他后端是否受影响,来源未作说明。
llama.cpp发布构建版本b12319,发布说明中列出的主要代码变更为SYCL后端一项优化,对应PR #32013,标题为“sycl : use cached device-id in set_main_device”。
发布说明称,ggml_sycl_set_main_device() 在每次图计算开始时运行,其提前返回检查原先调用dpct::get_current_device_id(),该函数会锁定设备管理器互斥锁并查找线程到设备的映射表;改动后改用后端其他部分已在使用的线程本地缓存ID。
SYCL主设备设置路径的改动
发布说明描述的执行路径是:ggml_sycl_set_main_device() 位于每次图计算的起点,提前返回判断需要先确认当前设备ID。原实现对dpct::get_current_device_id() 的调用带有互斥锁与映射表查找开销。
新实现读取线程本地缓存ID,与SYCL后端其余部分的做法保持一致。发布说明未说明该检查被触发的频率或单次开销的具体数值。
- PR编号:#32013
- 涉及函数:ggml_sycl_set_main_device()
- 原调用:dpct::get_current_device_id(),需锁定设备管理器互斥锁并查线程到设备映射
- 新做法:使用线程本地缓存ID
署名与发布包
提交说明标注Assisted-by: Claude Code,Co-authored-by: zhaoyshine。发布页同时提供多平台预编译包下载,包括macOS Apple Silicon(arm64)、macOS Intel(x64)、iOS XCFramework,以及Ubuntu、Windows、Android等构建。
发布页中,macOS Apple Silicon的KleidiAI启用版与openEuler相关构建标注为DISABLED。
- Assisted-by: Claude Code
- Co-authored-by: zhaoyshine
- macOS Apple Silicon(arm64、KleidiAI enabled)标注DISABLED
- openEuler构建标注DISABLED