快速结论:这个报错通常出现在 Linux 上使用 llama.cpp 的 SYCL 后端搭配 Intel Arc A770 启动 llama-server / llama-cli 时,启动阶段在获取设备显存大小失败后触发 ggml_abort 并 core dump。优先排查 SYCL 构建是否缺少 Intel OneAPI Level Zero 开发包,以及是否运行在包含修复的版本上。
适用环境:llama.cpp 0.3.0-dev(build 10717,commit a32af33de),IntelLLVM 2026.1.1 for Linux x86_64;Linux;SYCL 后端;Intel Arc A770 16GB;模型 unsloth/gemma-4-12b-it-GGUF:UD-Q4_K_XL;硬件为 NUC 12 Extreme Kit(i9-12900 + Arc A770)。
最快修复方案:Issue 中用户实际验证有效的做法是安装 Intel OneAPI Level Zero 开发包(RHEL/Fedora/Rocky 上为 dnf install oneapi-level-zero-devel)后重新编译 SYCL 后端。此外,上游已通过 PR #28227 修复:当 Level Zero API 不可用时切换到 SYCL API 获取显存大小。升级到包含该 PR 的版本亦可解决。
注意事项:维护者说明 Level Zero 开发包并非强制依赖,但对 Arc A770 而言使用它才能拿到真实的空闲显存大小;如果不安装,需依赖包含 PR #28227 的版本来自动回退。设置 GGML_SYCL_GET_MEM_API=0 或 =1 在用户环境下均无法规避崩溃,不要依赖该环境变量作为修复手段。
问题场景
用户在 Linux 上运行 llama.cpp 的 llama-server(systemd 服务形式)或 llama-cli,使用 SYCL 后端加载 unsloth/gemma-4-12b-it-GGUF:UD-Q4_K_XL 模型。硬件为 Intel Arc A770 16GB。此前 SYCL 后端一直正常,更新到 build 10717(commit a32af33de)后,启动阶段直接 core dump。
报错原文
/root/llama.cpp/ggml/src/ggml-sycl/ggml-sycl.cpp:6054: [ggml_backend_sycl_device_get_memory] failed to get device memory size
/lib64/libc.so.6(__libc_start_main+0x88) [0x7fc245c0a798]
/usr/local/bin/llama-server() [0x4006f5]
llama-server.service: Main process exited, code=dumped, status=6/ABRT
llama-server.service: Failed with result 'core-dump'.
原因分析
首次出现问题的提交为 a32af33de(build 10717),对应 PR #27968 合并,该 PR 改变了 SYCL 检查显存的方式。最可能的原因是新的显存查询路径依赖 Intel OneAPI Level Zero,而当时用户的编译环境中 LEVEL_ZERO_INCLUDE_DIR:PATH 在 CMake cache 中为 NOTFOUND,即缺少 Level Zero 开发包,导致 ggml_backend_sycl_device_get_memory 无法获取设备显存大小并触发 abort。上游随后通过 PR #28227 修复,在 Level Zero API 不可用时回退到 SYCL API。
环境排查
- 确认 llama.cpp 版本与 commit,例如
llama-cli --version输出的 build 号与 commit 是否落在 a32af33de 之后。 - 确认编译器为 IntelLLVM 2026.1.1 for Linux x86_64,操作系统为 Linux。
- 确认 GPU 为 Intel Arc A770,且 SYCL 后端已正确编译并可用。
- 检查 CMake cache 中
LEVEL_ZERO_INCLUDE_DIR:PATH是否被标记为 NOTFOUND,以判断是否缺少 Level Zero 开发包。 - 确认是否已包含 PR #28227 对应的修复提交。
解决步骤
- 先确认当前构建确实失败:启动 llama-server 或 llama-cli,观察是否出现
failed to get device memory size并伴随 core dump。 - 检查 CMake 配置输出或 CMakeCache.txt,查看
LEVEL_ZERO_INCLUDE_DIR:PATH是否为 NOTFOUND。 - 可优先尝试安装 Intel OneAPI Level Zero 开发包。在 RHEL/Fedora/Rocky 上执行:
dnf install oneapi-level-zero-devel;其他发行版请安装各自仓库中对应的 oneAPI Level Zero 开发包。 - 安装后重新编译 SYCL 后端,并重新部署生成的库文件。
- 如果不想安装 Level Zero 开发包,则升级到包含 PR #28227 的版本;该 PR 会在 Level Zero API 不可用时切换到 SYCL API 获取显存大小。
验证方法
重新编译并部署后启动 llama-server / llama-cli,确认不再出现 [ggml_backend_sycl_device_get_memory] failed to get device memory size,进程不再以 status=6/ABRT core dump 退出,且 systemd 服务保持运行。若使用带 PR #28227 的版本,可在无 Level Zero 开发包的环境下验证是否自动回退到 SYCL API 并正常启动。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


