Misc. bug: SYCL: bad performance on newer oneAPI

该问题通常出现在使用 SYCL 后端、基于较新 oneAPI 工具链构建并运行 llama.cpp(llama-cli / llama-server / llama-bench)的场景中,表现为 PP(prompt processing)性能大幅下降,甚至回退到 PR #25222 优化之前的水准。

快速结论:该问题通常出现在使用 SYCL 后端、基于较新 oneAPI 工具链构建并运行 llama.cpp(llama-cli / llama-server / llama-bench)的场景中,表现为 PP(prompt processing)性能大幅下降,甚至回退到 PR #25222 优化之前的水准。优先排查 oneAPI / IGC / compute-runtime 版本组合,以及 SYCL 后端是否被正确启用。

适用环境:Linux;llama.cpp b10074 (2beefef68),使用 IntelLLVM 2026.1.0 构建;出现于 ONEAPI_VERSION=2026.1.1-devel-ubuntu24.04 与 2026.1.0-devel-ubuntu26.04;Intel GPU,通过 SYCL + Level Zero 运行;容器环境为 podman / docker。Issue 未提供确认可用的 Python、CUDA 或 PyTorch 版本。

最快修复方案:暂无确认的一步修复方案。Issue 中 report 者尝试回滚 compute-runtime 到 26.14.37833.4 后性能仍差;维护者建议回退 IGC 2.36 到 2.32,但报告者未验证成功,因此该方案仅可优先尝试。

注意事项:回退 IGC / compute-runtime 是否能恢复性能尚未被确认;DNNL_VERBOSE=1 在报告者环境中没有产生额外日志,所以不能据此判定 oneDNN 是根因。Issue 标签为 bug-unconfirmed、stale,且已被关闭,说明没有最终确认的修复。较新 oneAPI 构建还被报告出现输出乱码(jibberish),与性能下降可能是不同问题。

问题场景

用户在 Linux 容器(podman / docker)中使用 SYCL 后端构建并运行 llama.cpp。触发场景是升级到较新 oneAPI 工具链构建后,PP(prompt processing)性能大幅下降,即使仓库中已合并了带来性能提升的 PR #25222,也仿佛那项优化不存在。运行方式包括 llama-server 与 llama-bench,模型为 Qwen 系列 GGUF,开启 --n-gpu-layers 99、--flash-attn on 等参数。另一位用户在使用 ONEAPI=2026.1.1-devel-ubuntu26.04 时还遇到 llama-bench 跑不完、chat 输出乱码的问题。

报错原文

Misc. bug: SYCL: bad performance on newer oneAPI

version: 10074 (2beefef68)
built with IntelLLVM 2026.1.0 for Linux x86_64

When upgrading to newer oneAPI (--build-arg=ONEAPI_VERSION=2026.1.1-devel-ubuntu24.04) the PP performance drops by a lot.
https://github.com/ggml-org/llama.cpp/pull/25222 brings a very good performance uplift, but when you use newer oneAPI, that performance is blown as if that Pull Request never existed.

There's a known regression in oneDNN FlashAttention with IGC 2.36. Does reverting IGC to 2.32 or something help?

原因分析

可能原因集中在较新 oneAPI 工具链中 IGC / compute-runtime / oneDNN 组件对 SYCL 后端性能的回归。维护者提到 oneDNN FlashAttention 在 IGC 2.36 上存在已知回归,建议回退到 IGC 2.32 尝试。但报告者回滚 compute-runtime 到 26.14.37833.4 后性能仍然很差,说明问题不一定只在 compute-runtime 单点。此外,DNNL_VERBOSE=1 没有输出额外日志,oneDNN 是否为主要根因也未能确认。综合看,这是较新 oneAPI 组合下的 SYCL 性能回归,具体责任组件尚未被明确锁定。

环境排查

  • 确认 llama.cpp 版本与构建编译器:Issue 中为 b10074 (2beefef68),IntelLLVM 2026.1.0。
  • 确认 oneAPI 版本:出现问题的为 2026.1.1-devel-ubuntu24.04 与 2026.1.0-devel-ubuntu26.04。
  • 确认 IGC 版本,重点排查是否为 2.36(维护者提示此处存在 FlashAttention 回归)。
  • 确认 compute-runtime 版本,Issue 中尝试回滚到 26.14.37833.4。
  • 确认 SYCL 构建参数:-DGGML_SYCL=ON、-DGGML_SYCL_F16=ON、-DGGML_NATIVE=OFF。
  • 确认运行环境变量:GGML_SYCL_USE_LEVEL_ZERO_API、ONEAPI_DEVICE_SELECTOR、UR_L0_ENABLE_RELAXED_ALLOCATION_LIMITS、SYCL_PI_LEVEL_ZERO_USE_IMMEDIATE_COMMANDLISTS、ZES_ENABLE_SYSMAN。
  • 确认容器设备映射与组权限:/dev/dri、render-node GID、group_add。
  • 确认是否与 Vulkan 后端对比:有用户报告 Vulkan 后端正常、Intel llm-scaler 也正常。

解决步骤

  1. 先记录当前基线:在出现性能下降的 oneAPI 版本下运行 llama-bench,记录 PP 与 TG 的 t/s 数值,作为后续对比依据。
  2. 尝试回退 IGC 到 2.32(或 Issue 中提到的旧版本),重新构建 SYCL 后端并再次跑 llama-bench,观察 PP 性能是否恢复。此方案来自维护者建议,未在 Issue 中确认成功。
  3. 如果回退 IGC 无效,尝试回滚 compute-runtime 到 26.14.37833.4。报告者实测无效,可作为对照实验,但不保证解决。
  4. 尝试用旧版 oneAPI 构建同一版本的 llama.cpp,与新版 oneAPI 构建产物在相同参数下对比 llama-bench 结果,以确认是否确实由 oneAPI 升级引入。
  5. 尝试设置 export DNNL_VERBOSE=1 后运行,用于对比 oneDNN OP 耗时。注意报告者环境中该变量未产生额外日志,可能无法作为可靠诊断手段。
  6. 如仍无法解决,改用 Vulkan 后端或 Intel llm-scaler 作为临时替代方案(Issue 中有用户报告这两者正常)。
  7. 如果问题持续,向 oneDNN 或 Intel 相关仓库报告,并附带 llama-bench 对比数据、oneAPI / IGC / compute-runtime 版本及容器配置。

验证方法

使用与问题报告相同的命令和参数运行 llama-bench,对比升级前后或不同组件版本下的 PP t/s。若 PP 性能恢复到 PR #25222 合并后的预期水平,说明回退或版本调整生效。同时建议验证 chat 输出是否正常,排除较新 oneAPI 下出现的乱码问题。

参考来源

ggml-org/llama.cpp #25973

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 27738

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注