已合并
fix: C流程从内存聚合op_statistic,不再依赖op_counter.db #470
fix: C流程从内存聚合op_statistic,不再依赖op_counter.db #470
已合并
chenqm创建于 11 天前
chenqm成员
11 天前

PR 合入模板

注:经过自检不涉及的可标注“不涉及”或直接打勾,特殊情况请文字备注。不符合规范的 PR 不允许合入,请注意。


1. 修改描述

  • 修改原因:
    全量 C 解析链路不再依赖 op_counter.db,原 OpStatisticProcessorop_report 表读取数据,导致纯 C 流程无法生成 op_statistic.csv

  • 修改内容:

    • OpStatisticProcessor 改为从内存中的任务关联结果聚合生成 op_statistic.csv,不再读取 op_counter.db
    • 新增 TaskAssociationProcessor,使用完整 TaskId 关联 TaskInfoDataAscendTaskData
    • 新增 AssociatedTaskCollection 作为共享关联结果;记录保存源数据指针,并持有源向量以保证生命周期。
    • OpSummaryAssemblerOpStatisticProcessor 统一消费共享关联结果,数据处理拓扑同步调整。
    • 统计结果按 device、opType、taskType 聚合,保留既有 CSV 字段和任务过滤口径。

2. 功能验证


3. 分支合并要求


4. 代码检视


5. 安全自检

Python、C++

C++


6. 变更知会

likedislike
Pull Request已成功合入, 合并人@ascend-robot
(感谢 chenqm 的贡献)
Cchenqm成员
11 天前 创建了 pull request,commit c3974327
atomgit-bot
atomgit-bot
11 天前 评论:

变更摘要

本 PR 修复全量 C 解析流程缺失 op_statistic.csv 交付件的问题:由于全量 C 链路不再落盘 op_counter.db,原 OpStatisticProcessor 从该库 op_report 表读取数据的方式失效,因此将其改为直接从内存中的 TaskInfoDataAscendTaskData 聚合统计,混合流程仍走既有 Task/ComputeTaskInfo 入库存量,整体不再依赖 op_counter.db

主要改动

  • 数据源从数据库切换为内存: OpStatisticProcessor::Process 删除按 device 目录遍历并连接 op_counter.db、执行 SQL 查询 op_report 表的逻辑(含 LoadDataCheckPathAndTableConstructDBRunner 等调用),改为通过 dataInventory.GetPtr 获取 std::vector<TaskInfoData>std::vector<AscendTaskData> 进行内存聚合。
  • 新增基于 TaskId 的聚合逻辑: 重写 FormatData,先以 TaskId{streamId, batchId, taskId, contextId, deviceId} 建立 computeTask 索引,再按 (deviceId, opType, taskType) 聚合 count、totalTime、min、max、avg 与 ratio;ratio 按 device 总时长计算,总时长为 0 时置 0。
  • 过滤规则收敛: 新增 FILTERED_TASK_TYPEWRITE_BACKINVALIDHCCL_AI_CPUCOMMUNICATION)并在 ShouldSkipTaskInfo 中过滤 opType == N/A 的任务;原 SQL 中仅过滤 N/AWRITE_BACK/INVALID
  • 拓扑注册与数据依赖声明变更: data_processor_topology_register.cppOpStatisticProcessorREGISTER_PROCESSOR 改为 REGISTER_PROCESSOR_WITH_DATA,声明依赖 PROCESSOR_NAME_COMPUTE_TASK_INFOPROCESSOR_NAME_TASK 节点并注入 std::vector<TaskInfoData>std::vector<AscendTaskData> 数据。
  • 异常与边界处理: 源数据(TaskInfoData/AscendTaskData)缺失时记录 WARN 并返回 true,且不向 DataInventory 注入空结果;avg 在 count 为 0 时置 0,配套 UT 从基于 sqlite/mockcpp 的用例全面重写为基于内存注入数据的用例,覆盖过滤、聚合、按 device 计算 ratio 等场景。
likedislike
不准确?
atomgit-bot
atomgit-bot
11 天前 评论:

代码审查

✅ 未发现问题

likedislike
不准确?
ascend-robotascend-robot成员
11 天前 添加了label:ascend-cla/yes
此处折叠了105条消息 查看更多
ascend-robotascend-robot成员
4 天前 添加了label:lgtm
panyj1993
panyj1993成员
4 天前 评论:

/approve

likedislike
ascend-robotascend-robot成员
4 天前 添加了label:approved
ascend-robotascend-robot成员
4 天前 合入了pull request
ascend-robot
ascend-robot成员
4 天前 评论:

Pull Request 已合并或已关闭。

If you want to solve this problem, you can click here to do it in the FAQs.

likedislike