Skip to content

Fix: 补齐 HBG kernel-mode 泳道初始化及多 callable 采集 - #2493

Open
nalinaly wants to merge 1 commit into
hw-native-sys:feat/kernel-mode-integration-testfrom
nalinaly:fix/hbg-kernel-dfx-replay-20260930
Open

nalinaly wants to merge 1 commit into
hw-native-sys:feat/kernel-mode-integration-testfrom
nalinaly:fix/hbg-kernel-dfx-replay-20260930

Conversation

@nalinaly

Copy link
Copy Markdown
Contributor

问题与修改

HBG kernel-mode 的 HostArgs 入口绕过 program-mode 的 KernelArgs 初始化。打开泳道采集后,AICore 已开始记录,但 AICPU 没有获得记录区、rotation table 和当前窗口开关;在 A3 单卡 CSA→HCA 联合采集里,CSA 第二次调用出现 AIV 507015。关闭 DFX 的相同路径能够运行。

本 PR 补齐 HBG 的采集链路:

  • callable registration 更新为 version 2,携带 context 持有的 persistent KernelArgs 地址;leader 每次 replay 读取当前 DFX 窗口标志及地址,窗口关闭也能生效。
  • A2/A3 与 A5 的 HBG scheduler 初始化时记录 launch boundary,区分多次 replay 中重复使用的 task ID。
  • Host 建图时按 callable 输出 deps_callable_<id>.json;多 root 的 trace 可以分别匹配 CSA/HCA 依赖图。启用 Host dep_gen 时,A2/A3 不再分配无产出的 Device dep_gen 缓冲。
  • 更新 HBG 接口文档,说明注册结构及依赖图文件的生命周期。

不修改 CSA/HCA 算术、调度策略或 graph packet 校验。本 PR 是采集正确性修复,不将它计作性能优化。

验证

  • A2/A3 onboard HBG Host/AICPU 编译通过。
  • 相关 graph packet / slot / restore CPU 用例:55 项通过。
  • A3、CANN 9.2.0-beta.2,单卡 TP1、B4、history=131072、出 5 验 6,正式权重下第 2 层 CSA 输出直接接第 3 层 HCA 输入。固定 metadata 和合成历史,每次 replay 在计时外恢复相同初态。
  • 修复后完成 3 个 profiling step:同一个 NPUGraph 每 step 包含 CSA→HCA,共 6 次 launch;每次 CSA 712 条、HCA 414 条 AIC/AIV task 记录,逐 task / core 类型记录数与依赖图的 block_num 一致,无丢失 launch boundary。
  • graph / eager 的 12 项输出、Top-K、cache/state 零容差比较通过,浮点 max_abs=0、整数 mismatches=0,保护区检查通过。
  • A5 的共用入口及 launch boundary 代码已同步,未做 A5 真机验证。未做整模型 token、DSpark 或 16 卡测试。

PyTorch/CANN 解析器仍报告 ACL→NPU flow 关联失败;NPU span、三个 step 和泳道 task 记录完整,本 PR 不声称修复该连线问题。

兼容性

HbgCallableRegistration 从 88 字节增加到 96 字节,版本从 1 更新到 2,Host 与 Device 必须使用配套构建。调用方如固定 Simpler revision / ABI pin,需同步更新后使用。

此 PR 只包含采集修复一个提交,以 feat/kernel-mode-integration-test 为基线;不包含已合入的 PTO-ISA pin 更新。

提交前检查:改动 C++ 文件通过 clang-format 21.1.0;headers、English-only、retired names、kernel wire isolation 及 git diff --check 通过。

HBG HostArgs 入口绕过 program-mode 的 KernelArgs 初始化,原来只让
AICore 看到 DFX 开关,AICPU 没有设置记录区和 rotation table,开启
CSA 采集时因此触发 AIV 507015。通过 callable 注册传递 context 持有的
KernelArgs 地址,由 leader 在每次 replay 前读取当前窗口开关并发布
AICPU 采集配置,同时覆盖窗口关闭后的禁用状态。

注册版本更新为 2,保持 Host 与 Device 对地址及生命周期的约定一致。
不改 CSA/HCA 计算、调度算法和 graph packet 校验逻辑。

验证:a2a3 onboard 的 HBG Host/AICPU 编译通过;旧版本单卡联合
采集已复现 AIV 507015。修复后在 A3、CANN 9.2、128K/B4 上完成
CSA→HCA 三步联合采集,共六次 launch;每次 CSA 712 条、HCA 414 条
核内记录与依赖图一致,launch boundary 完整。graph/eager 的 12 项
输出及 cache/state 零容差比较通过,浮点 max_abs=0、整数差异为 0。
A5 真机、整模型 token/DSpark 和 16 卡不在本次验证范围。

同时补齐多次 replay 的 launch boundary,防止 CSA/HCA 重复 task ID
被泳道转换器混在一起。HBG 在 Host 建图时按 callable 输出依赖图,
不再分配不会产出记录的 Device dep_gen 缓冲;测试脚本分别保存两种
root 的依赖映射。相关 graph packet/slot/restore 的 55 项 CPU 用例通过。

Signed-off-by: nalinaly <nalinaly@163.com>
@coderabbitai

coderabbitai Bot commented Sep 30, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 6c580608-5ae9-4c63-affd-eeb0a528be3c

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Autopilot is currently an internal CodeRabbit preview.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant