已合并
fix: C流程从内存聚合op_statistic,不再依赖op_counter.db #470
chenqm创建于 11 天前
fix: C流程从内存聚合op_statistic,不再依赖op_counter.db #470
已合并
Pull Request已成功合入, 合并人@ascend-robot
(感谢 chenqm 的贡献)atomgit-bot
11 天前 评论:
11 天前 评论:
变更摘要
本 PR 修复全量 C 解析流程缺失 op_statistic.csv 交付件的问题:由于全量 C 链路不再落盘 op_counter.db,原 OpStatisticProcessor 从该库 op_report 表读取数据的方式失效,因此将其改为直接从内存中的 TaskInfoData 与 AscendTaskData 聚合统计,混合流程仍走既有 Task/ComputeTaskInfo 入库存量,整体不再依赖 op_counter.db。
主要改动
- 数据源从数据库切换为内存:
OpStatisticProcessor::Process删除按 device 目录遍历并连接op_counter.db、执行 SQL 查询op_report表的逻辑(含LoadData、CheckPathAndTable、ConstructDBRunner等调用),改为通过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_TYPE(WRITE_BACK、INVALID、HCCL_AI_CPU、COMMUNICATION)并在ShouldSkipTaskInfo中过滤opType == N/A的任务;原 SQL 中仅过滤N/A与WRITE_BACK/INVALID。 - 拓扑注册与数据依赖声明变更:
data_processor_topology_register.cpp中OpStatisticProcessor由REGISTER_PROCESSOR改为REGISTER_PROCESSOR_WITH_DATA,声明依赖PROCESSOR_NAME_COMPUTE_TASK_INFO与PROCESSOR_NAME_TASK节点并注入std::vector<TaskInfoData>、std::vector<AscendTaskData>数据。 - 异常与边界处理: 源数据(
TaskInfoData/AscendTaskData)缺失时记录 WARN 并返回 true,且不向DataInventory注入空结果;avg在 count 为 0 时置 0,配套 UT 从基于 sqlite/mockcpp的用例全面重写为基于内存注入数据的用例,覆盖过滤、聚合、按 device 计算 ratio 等场景。


不准确?
AtlasAccount
11 天前 评论:
11 天前 评论:
atomgit-bot
11 天前 评论:
11 天前 评论:
11 天前 添加了label:ascend-cla/yes
此处折叠了105条消息 查看更多
4 天前 添加了label:lgtm
panyj1993
4 天前 评论:
4 天前 评论:
/approve


4 天前 添加了label:approved
4 天前 合入了pull request
ascend-robot
4 天前 评论:
4 天前 评论:
Pull Request 已合并或已关闭。
If you want to solve this problem, you can click here to do it in the FAQs.


PR 合入模板
注:经过自检不涉及的可标注“不涉及”或直接打勾,特殊情况请文字备注。不符合规范的 PR 不允许合入,请注意。
1. 修改描述
修改原因:
全量 C 解析链路不再依赖
op_counter.db,原OpStatisticProcessor从op_report表读取数据,导致纯 C 流程无法生成op_statistic.csv。修改内容:
OpStatisticProcessor改为从内存中的任务关联结果聚合生成op_statistic.csv,不再读取op_counter.db。TaskAssociationProcessor,使用完整TaskId关联TaskInfoData和AscendTaskData。AssociatedTaskCollection作为共享关联结果;记录保存源数据指针,并持有源向量以保证生命周期。OpSummaryAssembler与OpStatisticProcessor统一消费共享关联结果,数据处理拓扑同步调整。2. 功能验证
3. 分支合并要求
4. 代码检视
5. 安全自检
Python、C++
C++
6. 变更知会