Prhub

#47467 [CPU][Build] Enable oneDNN ITT task collection by default for CPU primitive-level profiling

原始 PR 作者 eparshut 合并时间 2026-07-03 12:00 文件变更 1 提交数 2 评论 1 代码增减 +1 / -1

执行摘要

默认开启 oneDNN ITT 任务采集以支持 CPU 性能分析

当前 oneDNN 在 vLLM CPU 后端中静态编译时,ONEDNN_ENABLE_ITT_TASKS 被显式设为 OFF,导致 oneDNN 原语在 VTune 等 ITT 追踪工具中不可见,合并为匿名的 JIT 代码热点,极大地增加了 CPU 推理性能分析的难度。启用该选项后,oneDNN 原语执行时可被标记为具名 ITT 任务,便于精确定位性能瓶颈。

建议合入。变更简单、风险低,对 CPU 性能分析有显著价值。值得维护者了解 oneDNN 构建选项及 ITT 接口的使用方式,便于后续类似的可观测性改进。

讨论亮点

无实质性讨论;审核者 bigPYJ1151 已批准,bot 评论为自动化提示。

实现拆解

  1. 修改 cmake/cpu_extension.cmake 文件中的 CMake 变量设置,将 ONEDNN_ENABLE_ITT_TASKS 从 "OFF" 改为 "ON"。
  2. 该行位于 oneDNN 配置块内,其余设置(如原语类型、JIT 分析等)保持不变。
  3. 仅影响编译时的 oneDNN 库构建,不修改任何运行时逻辑或源代码。
  4. 无需额外测试配置或部署配套,因为 ITT 任务采集在无追踪器附加时是空操作,且可通过环境变量 ONEDNN_ITT_TASK_LEVEL=0 在运行时完全关闭。
文件 模块 状态 重要度
cmake/cpu_extension.cmake 构建脚本 modified 2.94

关键源码片段

cmake/cpu_extension.cmake core-logic

核心变更文件:唯一被修改的文件,将 oneDNN ITT 任务采集选项从 OFF 改为 ON,直接控制 oneDNN 原语的可观测性。

# 在 CPU 扩展构建中配置 oneDNN
if (ENABLE_X86_ISA OR (ASIMD_FOUND AND NOT APPLE_SILICON_FOUND) OR POWER9_FOUND)
  # ...
  set(ONEDNN_ENABLE_PRIMITIVE "MATMUL;REORDER")
  set(ONEDNN_BUILD_GRAPH "OFF")
  set(ONEDNN_ENABLE_JIT_PROFILING "ON")
  # 启用 oneDNN 的 ITT 任务采集,用于 VTune 等分析工具
  set(ONEDNN_ENABLE_ITT_TASKS "ON") # 之前为 OFF
  set(ONEDNN_ENABLE_MAX_CPU_ISA "ON")
  set(ONEDNN_ENABLE_CPU_ISA_HINTS "ON")
  set(ONEDNN_VERBOSE "ON")
  # ...
endif()

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

风险极低。这是一个构建选项切换,仅影响 CPU 后端 oneDNN 库的编译。运行时若无 ITT 收集器附加,标记操作为空操作,无性能开销。可通过环境变量 ONEDNN_ITT_TASK_LEVEL=0 在运行时完全关闭。不会影响其他平台(如 GPU、XPU)或非 CPU 后端。

影响范围限于 vLLM CPU 后端编译产物的可观测性。对于需要进行 CPU 推理性能分析的开发者和用户,VTune 等工具能显示 oneDNN 原语的详细硬件事件数据。对于生产环境用户,无影响,因为 ITT 任务默认仅在有追踪器时激活。

仅限 CPU 构建 对生产无影响

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论