已关闭
[Requirement|需求建议]: 将Context设备级功能调试接口迁入device debug领域 #935
贾绍扬创建于  21 天前关闭于  18 天前
贾绍扬成员
21 天前 创建

Backgroud(背景信息)

Context 当前承载设备级调试任务收发、dump mode 设置、stalled core 查询和 Stars AI Core 内存读取等业务,设备调试协议与线程当前 Context 管理职责耦合。David 的 AI Core 读取入口还位于 coredump 模块,和 Stars 使用不同的末端入口,不便于明确领域归属和维护平台差异。

本需求将四个设备级功能调试接口归入 device debug 领域,在保持公开 API、Context 获取语义、错误顺序和各平台读取协议不变的前提下,完成调用链归一和平台实现物理隔离。

Origin(信息来源)

来源于 Runtime Context 职责拆分工作中的《Context 7.2接口重构实现方案》及两批迁移记录。对应代码已在 jia_shaoyang/runtime_openSource:context_device 分支完成,并合并为单条提交:

e38a4dc1e: refactor: 将设备级功能调试接口迁出Context。目标分支为 cann/runtime:master。

Benefit / Necessity (价值/作用)

  1. 将设备调试业务从 Context 成员中迁出,明确 Context 校验与 Device/Driver 调试职责的边界。
  2. 通用实现只维护一份,显式传入 Device,避免不必要的当前 Context 查询或设备切换。
  3. 使用同名同签名的读取入口,并以独立平台文件保留 Stars 和 David 的地址、边界及 release 协议差异。
  4. 同步生产与 UT 的 CMake 归属,以定向回归覆盖错误透传、状态更新、内存释放和平台协议,降低后续维护风险。

本需求为结构性重构,不宣称新增硬件支持、改变公开 ABI 或带来已量化的性能收益。

Design(设计方案)

统一调用链为 C API -> ApiImpl/ApiImplDavid -> device debug 自由函数 -> Device/Driver。

接口 实现归属 关键约束
SendAndRecvDebugTask device_debug_common.cc 显式传入 Device;保留先 SQ 后 CQ、失败立即返回和 Driver 错误透传
DebugSetDumpMode device_debug_common.cc wrapper 保留 Context 获取/校验;保留 capability、分配、report 校验和最后启用 coredump 的顺序
DebugGetStalledCore device_debug_common.cc Stars/David 共用;report 错误时保持调用者输出不变
DebugReadAICore device_debug_stars.cc / device_debug_starsv2.cc 统一声明,由平台 CMake 选择唯一实现,保留 David override

统一声明位于 src/runtime/core/inc_c/device_debug_c.hpp。读取入口为 DebugReadAICore(const rtDebugMemoryParam_t*, Device* = nullptr);Stars wrapper 传入原 Context 的 Device,David 忽略并集 Device 参数,保留原内部 Context 获取顺序。

Stars 保持 1 MiB L1 边界、物理地址转换和无 release 命令;David 保持 512 KiB L1 边界、device VA、REGISTER_DIRECT 和 RELEASE_COREDUMP_MEMORY。不新增防御检查、资源回滚或协议修改;GetStackBufferInfo 留在原 coredump 模块,不纳入本需求。

生产构建覆盖 v100、v200/v201、tiny 动态/静态、arch5162 和 cmodel/camodel 源集合,UT 同步选择正确平台实现。

验收关注公开包装层行为、唯一实现归属、旧 Context 入口清理、错误与状态边界,以及 Stars/David 各自的分片读取和临时内存释放行为。

现有验证记录:默认 Release 及补充产品目标构建通过,定向 LLT 13/13 通过;910B3 HLT 对清单全部 37 项先执行基线验证,当前包仅运行基线 PASS 的 31 项,结果 31/31 框架 PASS。其中 4 项跳过平台主体、1 项仅覆盖不支持分支。成功 AI Core 读取、David/950 真机及其他平台专项仍未完成硬件验证,不能据此宣称全路径覆盖。

likedislike
贾贾绍扬成员
21 天前 添加了label:requirement
贾绍扬成员
21 天前 评论:

/assign

likedislike
贾贾绍扬成员
21 天前 关联了pull request:refactor: 将设备级功能调试接口迁出Context(#935)
贾贾绍扬成员
21 天前 修改了issue 的描述
CANN-robotCANN-robot成员
18 天前 关闭了 issue
CANN-robotCANN-robot成员
18 天前 添加了label:resolved