| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
bugfix: 补充部分头文件缺少的stdint头文件引用 Co-authored-by: Seanesmhxocism<617225691@qq.com> # message auto-generated for no-merge-commit merge: !191 merge local into master bugfix: 补充部分头文件缺少的stdint头文件引用 Created-by: Seanesmhxocism Commit-by: Seanesmhxocism Merged-by: ascend-robot Description: # PR 合入模板 **注:经过自检不涉及的可标注“不涉及”或直接打勾,特殊情况请文字备注。不符合规范的 PR 不允许合入,请(后备)commit 注意。** ---- ## 1. 修改描述 - **修改原因:** 在ubuntu 24.04环境上编译失败,报错json_constant.h文件缺少stdint文件引用 - **修改内容:** 检查相关constant文件,补充对应头文件 ---- ## 2. 功能验证 - [ ] **功能自验** - [ ] **本地自验用例截图** - [ ] **冒烟是否通过** (填入群链接的自验证报告中,如未通过,请说明原因:____________________ ,功能代码请主动申报添加冒烟) ---- ## 3. 分支合并要求 - [ ] **代码合并**(请确保将 master 分支的最新代码同步合并至 poc 分支及 pre-research 分支,同时保证 poc 分支的代码也已正确合并到 pre-research 分支。) ---- ## 3. 代码检视 - **要求:** - 合入代码超过 200 行,需三人以上会议检视。 - 检视密度≥1个/100行。 - 检视缺陷密度未达要求需提供说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [ ] **是否经过代码检视** - [ ] **是否具备 UT 测试用例看护** (如不符合,请说明原因:____________________) - **检视意见数:____ 条** (请填写本次检视的意见总数,用于commit合入前审视) ---- ## 4. 安全自检 ### Python、C++ - [ ] **对外接口新增/删除/变更后,资料要同步新增/删除/变更,新增接口入参校验参考外部输入表格** - [ ] **不允许私有的文件操作,需要使用公共模块的安全函数** - [ ] **任务结束后需要删除临时文件,同时需要考虑任务失败后,临时文件没有残留** - [ ] **数组访问需要校验越界场景,对除法需要做除零校验** - [ ] **需要对递归方法做递归深度校验,正则表达式必须做 ReDoS 校验** - [ ] **需要充分进行接口输入和返回值异常情况的校验** - [ ] **日志打印不要出现拼写或语法错误,不要暴露代码细节和敏感信息** ### C++ - [ ] **指针使用前需要判空** - [ ] **数值计算校验溢出和反转** - [ ] **不可存在内存泄漏(异常场景需要释放内存)** - [ ] **类型转换不能出现数据截断** - [ ] **拷贝字符串时,目的缓冲区至少比源缓冲区大 1** - [ ] **拷贝内存时,目的缓冲区不小于源缓冲区** - [ ] **内存释放后指针赋值为 nullptr** ---- ## 5. 变更知会 - [ ] **资料修改** - [ ] **变更通知(消息知会 + 邮件知会)** ---- See merge request: Ascend/msprof!191 | 4 个月前 | |
支持C化各模块前向无环图注册机制 Co-authored-by: WangangYu<2392205247@qq.com> # message auto-generated for no-merge-commit merge: !395 merge processor into master 支持C化各模块前向无环图注册机制 Created-by: MrYudd Commit-by: WangangYu Merged-by: ascend-robot Description: # PR 合入模板 **注:经过自检不涉及的可标注“不涉及”或直接打勾,特殊情况请文字备注。不符合规范的 PR 不允许合入,请(后备)commit 注意。** ---- ## 1. 修改描述 - **修改原因:** 在万卡TB级参数量、300B MoE的情况下,单卡level0数据能达到10GB,全量数据解析耗时久效率低下,而往往只需要部分交付件,op summary、step trace 难以快速支持用户分析 - **修改内容:** 本次将原先分散的 Processor、Summary、DB、Timeline 装配流程统一为注册式 DAG。 ExportManager 按导出配置选择根节点,TopoGraphBuilder 递归展开依赖、校验缺失/环、去重并生成 ProcessCollection;ProcessControl 按拓扑层级并发执行,并依据后续节点的 paramTypes 释放无用数据。DB/Timeline 增加前后置控制节点,UT 覆盖建图、依赖、执行及数据释放场景。 约定:A → B 表示 B 依赖 A,A 先执行。数据类型注册不属于控制依赖,未在图中展开。 mermaid flowchart LR R["静态注册<br/>Processor / Summary / DB / Timeline"] --> G["TopoNodeRegistry"] C["report 配置"] --> S["导出根节点选择"] G --> B["TopoGraphBuilder<br/>展开、去重、环检测"] S --> B B --> P["ProcessCollection"] P --> E["ProcessControl<br/>按 DAG 层级并发执行"] E --> D["DataInventory<br/>按后续 paramTypes 回收数据"] Processor DAG(其余 Processor 均为无前置依赖叶子节点): mermaid flowchart LR HASH["HASH"] --> COMM["COMMUNICATION"] HASH --> CTI["COMPUTE_TASK_INFO"] HASH --> KCOMM["KFC_COMM"] HASH --> NPUOP["NPU_OP_MEM"] TASK["TASK"] --> OVERLAP["OVERLAP_ANALYSIS"] CTI --> OVERLAP COMM --> OVERLAP KCOMM --> OVERLAP MC2["MC2_COMM_INFO"] --> OVERLAP Summary DAG: mermaid flowchart LR CTI["COMPUTE_TASK_INFO"] --> OPS["OP_SUMMARY"] TASK["TASK"] --> OPS COMM["COMMUNICATION"] --> OPS PMU["PMU"] --> OPS FUSION["FUSION_OP"] --> FS["FUSION_OP Summary"] MODEL["MODEL_NAME"] --> FS HASH["HASH"] --> FS CTI --> TTS["TASK_TIME_SUMMARY"] HOST["HOST_TASK"] --> TTS TASK --> TTS SIMPLE["COMM_STATISTIC / OP_STATISTIC / NPU_MEM / NPU_MODULE_MEM / API / STEP_TRACE / PAGE_FAULT"] SIMPLE --> SAME["对应同名 Summary 节点"] DB DAG: mermaid flowchart LR SAME["同名 Processor"] --> DBS["对应 DB Saver"] COMM["COMMUNICATION"] --> DCOMM["DB:COMMUNICATION"] KCOMM["KFC_COMM"] --> DCOMM FREQ["AICORE_FREQ"] --> DFREQ["DB:AICORE_FREQ"] LOW["LOW_POWER"] --> DFREQ TASK["TASK"] --> DTASK["DB:TASK"] TX["DEVICE_TX"] --> DTASK CTI["COMPUTE_TASK_INFO"] --> DCTI["DB:COMPUTE_TASK_INFO"] MC2["MC2_COMM_INFO"] --> DCTI UPMU["UNIFIED_PMU"] --> DPMU["TASK_PMU / SAMPLE_PMU_*"] DBS --> IDS["DB:STRING_IDS"] DCOMM --> IDS DFREQ --> IDS DTASK --> IDS DCTI --> IDS DPMU --> IDS ENUM、HOST_INFO、META_DATA、NPU_INFO、SESSION_TIME_INFO 无 Processor 依赖;其余 DB Saver 均为同名 Processor 一对一依赖。 Timeline DAG: mermaid flowchart LR PRE["TIMELINE:PRE_DUMP"] --> TL["所有选中的 Timeline 节点"] TASK["TASK"] --> TLTASK["Task Scheduler"] KFC_TASK["KFC_TASK"] --> TLTASK CTI["COMPUTE_TASK_INFO"] --> TLTASK API["API"] --> TLTASK MEMCPY["MEMCPY_INFO"] --> TLTASK API --> TLAPI["API Timeline"] TASK --> TLAPI CHIP["CHIP_TRAINS"] --> TRANS["STARS_CHIP_TRANS"] PCIE["PCIE"] --> TRANS COMM["COMMUNICATION"] --> HCCL["HCCL Timeline"] KFC_TASK --> HCCL KCOMM["KFC_COMM"] --> HCCL FREQ["AICORE_FREQ"] --> LOW["LOW_POWER Timeline"] LP["LOW_POWER"] --> LOW TX["DEVICE_TX"] --> TXTL["DEVICE_TX Timeline"] MSTX["MSTX"] --> TXTL BLOCK["BLOCK_DETAIL"] --> BTL["BLOCK_DETAIL Timeline"] CTI --> BTL TASK --> BTL TL --> POST["TIMELINE:POST_DUMP"] 除上图多依赖节点外,ACC_PMU、DDR、HBM、HCCS、OSRT_API、各类 Usage、NPU_MEM、PCIE、SOC、LLC、NIC、ROCE、QOS、BIU、UB、DPU、FUSION_TASK、STEP_TRACE、CCU 等均为 PRE_DUMP + 对应单个 Processor → Timeline 节点。 ## 2. 功能验证 - [ ] **功能自验** - [ ] **本地自验用例截图** - [ ] **冒烟是否通过** (填入群链接的自验证报告中,如未通过,请说明原因:____________________ ,功能代码请主动申报添加冒烟) ---- ## 3. 分支合并要求 - [ ] **代码合并**(请确保将 master 分支的最新代码同步合并至 poc 分支及 pre-research 分支,同时保证 poc 分支的代码也已正确合并到 pre-research 分支。) ---- ## 3. 代码检视 - **要求:** - 合入代码超过 200 行,需三人以上会议检视。 - 检视密度≥1个/100行。 - 检视缺陷密度未达要求需提供说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [ ] **是否经过代码检视** - [ ] **是否具备 UT 测试用例看护** (如不符合,请说明原因:____________________) - **检视意见数:____ 条** (请填写本次检视的意见总数,用于commit合入前审视) ---- ## 4. 安全自检 ### Python、C++ - [ ] **对外接口新增/删除/变更后,资料要同步新增/删除/变更,新增接口入参校验参考外部输入表格** - [ ] **不允许私有的文件操作,需要使用公共模块的安全函数** - [ ] **任务结束后需要删除临时文件,同时需要考虑任务失败后,临时文件没有残留** - [ ] **数组访问需要校验越界场景,对除法需要做除零校验** - [ ] **需要对递归方法做递归深度校验,正则表达式必须做 ReDoS 校验** - [ ] **需要充分进行接口输入和返回值异常情况的校验** - [ ] **日志打印不要出现拼写或语法错误,不要暴露代码细节和敏感信息** ### C++ - [ ] **指针使用前需要判空** - [ ] **数值计算校验溢出和反转** - [ ] **不可存在内存泄漏(异常场景需要释放内存)** - [ ] **类型转换不能出现数据截断** - [ ] **拷贝字符串时,目的缓冲区至少比源缓冲区大 1** - [ ] **拷贝内存时,目的缓冲区不小于源缓冲区** - [ ] **内存释放后指针赋值为 nullptr** ---- ## 5. 变更知会 - [ ] **资料修改** - [ ] **变更通知(消息知会 + 邮件知会)** ---- See merge request: Ascend/msprof!395 | 2 天前 | |
hccl calculator 和 kfc calculator解析逻辑重构 Co-authored-by: Seanesmhxocism<wangzixuan54@huawei.com> # message auto-generated for no-merge-commit merge: !411 merge linux into master hccl calculator 和 kfc calculator解析逻辑重构 Created-by: Seanesmhxocism Commit-by: Seanesmhxocism Merged-by: ascend-robot Description: # PR 合入模板 **注:经过自检不涉及的可标注“不涉及”或直接打勾,特殊情况请文字备注。不符合规范的 PR 不允许合入,请(后备)commit 注意。** ---- 业务整体是修改了hcclCalculator和kfcCalculator的主体流程,涉及业务内部的数据传递结构体。牵扯到上下游模块较多,相关重构必须统一完成。pr无法拆分。 ## 1. 修改描述 - **修改原因:** - msprof项目工程 主体流程全面C化,依赖kfc_calculator相关模块。同时识别到hccl相关业务逻辑已非常复杂,可读性差,维护性差。基于整体重构目标,优先对业务模块做结构删减,减少后续重构的业务理解难度,提高整体可维护性。 - **修改内容:** 1、对hccl_calculator和kfc_calculator涉及的三个主体文件(两份python,一份c++)做流程删减。将通信op大算子数据时间数据处理,通过connectionId和通信task小算子进行关联,并依托id标志位,计算静态图场景下的iterId,确保前后逻辑的相关编码逻辑和结果保持不变。 2、在建树方面,针对后续hccl相关代码演进,kfc流程依托多aicpu下发场景,提供kfc_connection_ids字段,收集node层级下的所有node的connectionId,定义为kfc_connection_ids。方便后续device侧的数据收集和处理。 3、针对kfc_calculator逻辑,简化原本的数据处理思路。将业务流程重新划分为hccl侧和mc2侧。抛弃deviceOpInfo数据处理,减少数据耦合。 对于hccl数据,通过mainStreamTask划分算子开始结束范围;通过kfcInfo描述aicpu展开的task内容;通过mc2Info 展开流信息锚定展开算子的流信息;通过host op数据,获取小算子和大算子的关联凭据。 对于mc2数据,仅通过mc2Info确认展开流信息;通过对应的aicpu算子的首尾时间,框选范围下的所有小算子。并生成deviceOp数据。 对于两类数据,均将时间范围的小算子划分为master 4、hcclAssembler和hccl_export_data,overlap模块导出流程基于已生成的op的开始结束时间,简化大算子生成逻辑。 5、对于通信矩阵相关逻辑,由于删除opName字段,增加opId找opName逻辑,确保逻辑前后一致。同时修改原本的master主流的查找规则,改为以is_master为准 6、对于统一db导出,变更opId计算规则,当前可直接通过connectionId和iterId进行锚定大小算子关系。 7、优化删减对应的hccl相关数据结构体及其冗余字段。 ---- ## 2. 功能验证 - [ ] **功能自验** - [ ] **本地自验用例截图** - [ ] **冒烟是否通过** (填入群链接的自验证报告中,如未通过,请说明原因:____________________ ,功能代码请主动申报添加冒烟) ---- ## 3. 分支合并要求 - [ ] **代码合并**(请确保将 master 分支的最新代码同步合并至 poc 分支及 pre-research 分支,同时保证 poc 分支的代码也已正确合并到 pre-research 分支。) ---- ## 3. 代码检视 - **要求:** - 合入代码超过 200 行,需三人以上会议检视。 - 检视密度≥1个/100行。 - 检视缺陷密度未达要求需提供说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [ ] **是否经过代码检视** - [ ] **是否具备 UT 测试用例看护** (如不符合,请说明原因:____________________) - **检视意见数:____ 条** (请填写本次检视的意见总数,用于commit合入前审视) ---- ## 4. 安全自检 ### Python、C++ - [ ] **对外接口新增/删除/变更后,资料要同步新增/删除/变更,新增接口入参校验参考外部输入表格** - [ ] **不允许私有的文件操作,需要使用公共模块的安全函数** - [ ] **任务结束后需要删除临时文件,同时需要考虑任务失败后,临时文件没有残留** - [ ] **数组访问需要校验越界场景,对除法需要做除零校验** - [ ] **需要对递归方法做递归深度校验,正则表达式必须做 ReDoS 校验** - [ ] **需要充分进行接口输入和返回值异常情况的校验** - [ ] **日志打印不要出现拼写或语法错误,不要暴露代码细节和敏感信息** ### C++ - [ ] **指针使用前需要判空** - [ ] **数值计算校验溢出和反转** - [ ] **不可存在内存泄漏(异常场景需要释放内存)** - [ ] **类型转换不能出现数据截断** - [ ] **拷贝字符串时,目的缓冲区至少比源缓冲区大 1** - [ ] **拷贝内存时,目的缓冲区不小于源缓冲区** - [ ] **内存释放后指针赋值为 nullptr** ---- ## 5. 变更知会 - [ ] **资料修改** - [ ] **变更通知(消息知会 + 邮件知会)** ---- See merge request: Ascend/msprof!411 | 4 天前 | |
c化代码 常量类抽取,规范各模块常量使用 Co-authored-by: Seanesmhxocism<617225691@qq.com> # message auto-generated for no-merge-commit merge: !317 merge linux into master c化代码 常量类抽取,规范各模块常量使用 Created-by: Seanesmhxocism Commit-by: Seanesmhxocism Merged-by: ascend-robot Description: # PR 合入模板 **注:经过自检不涉及的可标注“不涉及”或直接打勾,特殊情况请文字备注。不符合规范的 PR 不允许合入,请(后备)commit 注意。** ---- ## 1. 修改描述 - **修改原因:** 当前c化代码中有大量的常量使用,但都局限于某个文件的匿名空间。导致各文件中有相同常量,各自重复定义。 - **修改内容:** **不涉及业务逻辑修改!!不涉及业务逻辑修改!!全部内容均为下述的代码迁移和调整。** 1、抽取各cpp,h文件中的常量内容,将存在重复部分统一抽取到analysis/csrc/infrastructure/utils/common_constant.h中 2、针对当前的定义情况,将跨作用域的常量统一放在Analysis::Common下,其他的常量内容暂时在common_constant中设置相同作用域以保证使用的同步更替。后续如有必要再做各作用域拆分合并至Common中。 3、抽取原本分散的constant类,包括default_value_constant.h,time_unit_constant.h,合并到common_constant中。 4、unified_db_constant.h合并在db_constant,保留原本json_constant和summary_constant。 5、json_constant和summary_constant中涉及的assembler状态位抽取到error_code中。 6、将step_trace_constant.h内容合并到state.h头文件中。 7、将msprof_db相关文件,从原本viewer目录下,迁移到application/database目录下,保持DDD建模的整体性。修复过去的设计问题。 ---- ## 2. 功能验证 - [ ] **功能自验** - [ ] **本地自验用例截图** - [ ] **冒烟是否通过** (填入群链接的自验证报告中,如未通过,请说明原因:____________________ ,功能代码请主动申报添加冒烟) ---- ## 3. 分支合并要求 - [ ] **代码合并**(请确保将 master 分支的最新代码同步合并至 poc 分支及 pre-research 分支,同时保证 poc 分支的代码也已正确合并到 pre-research 分支。) ---- ## 3. 代码检视 - **要求:** - 合入代码超过 200 行,需三人以上会议检视。 - 检视密度≥1个/100行。 - 检视缺陷密度未达要求需提供说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [ ] **是否经过代码检视** - [ ] **是否具备 UT 测试用例看护** (如不符合,请说明原因:____________________) - **检视意见数:____ 条** (请填写本次检视的意见总数,用于commit合入前审视) ---- ## 4. 安全自检 ### Python、C++ - [ ] **对外接口新增/删除/变更后,资料要同步新增/删除/变更,新增接口入参校验参考外部输入表格** - [ ] **不允许私有的文件操作,需要使用公共模块的安全函数** - [ ] **任务结束后需要删除临时文件,同时需要考虑任务失败后,临时文件没有残留** - [ ] **数组访问需要校验越界场景,对除法需要做除零校验** - [ ] **需要对递归方法做递归深度校验,正则表达式必须做 ReDoS 校验** - [ ] **需要充分进行接口输入和返回值异常情况的校验** - [ ] **日志打印不要出现拼写或语法错误,不要暴露代码细节和敏感信息** ### C++ - [ ] **指针使用前需要判空** - [ ] **数值计算校验溢出和反转** - [ ] **不可存在内存泄漏(异常场景需要释放内存)** - [ ] **类型转换不能出现数据截断** - [ ] **拷贝字符串时,目的缓冲区至少比源缓冲区大 1** - [ ] **拷贝内存时,目的缓冲区不小于源缓冲区** - [ ] **内存释放后指针赋值为 nullptr** ---- ## 5. 变更知会 - [ ] **资料修改** - [ ] **变更通知(消息知会 + 邮件知会)** ---- See merge request: Ascend/msprof!317 | 1 个月前 | |
bugfix: 补充部分头文件缺少的stdint头文件引用 Co-authored-by: Seanesmhxocism<617225691@qq.com> # message auto-generated for no-merge-commit merge: !191 merge local into master bugfix: 补充部分头文件缺少的stdint头文件引用 Created-by: Seanesmhxocism Commit-by: Seanesmhxocism Merged-by: ascend-robot Description: # PR 合入模板 **注:经过自检不涉及的可标注“不涉及”或直接打勾,特殊情况请文字备注。不符合规范的 PR 不允许合入,请(后备)commit 注意。** ---- ## 1. 修改描述 - **修改原因:** 在ubuntu 24.04环境上编译失败,报错json_constant.h文件缺少stdint文件引用 - **修改内容:** 检查相关constant文件,补充对应头文件 ---- ## 2. 功能验证 - [ ] **功能自验** - [ ] **本地自验用例截图** - [ ] **冒烟是否通过** (填入群链接的自验证报告中,如未通过,请说明原因:____________________ ,功能代码请主动申报添加冒烟) ---- ## 3. 分支合并要求 - [ ] **代码合并**(请确保将 master 分支的最新代码同步合并至 poc 分支及 pre-research 分支,同时保证 poc 分支的代码也已正确合并到 pre-research 分支。) ---- ## 3. 代码检视 - **要求:** - 合入代码超过 200 行,需三人以上会议检视。 - 检视密度≥1个/100行。 - 检视缺陷密度未达要求需提供说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [ ] **是否经过代码检视** - [ ] **是否具备 UT 测试用例看护** (如不符合,请说明原因:____________________) - **检视意见数:____ 条** (请填写本次检视的意见总数,用于commit合入前审视) ---- ## 4. 安全自检 ### Python、C++ - [ ] **对外接口新增/删除/变更后,资料要同步新增/删除/变更,新增接口入参校验参考外部输入表格** - [ ] **不允许私有的文件操作,需要使用公共模块的安全函数** - [ ] **任务结束后需要删除临时文件,同时需要考虑任务失败后,临时文件没有残留** - [ ] **数组访问需要校验越界场景,对除法需要做除零校验** - [ ] **需要对递归方法做递归深度校验,正则表达式必须做 ReDoS 校验** - [ ] **需要充分进行接口输入和返回值异常情况的校验** - [ ] **日志打印不要出现拼写或语法错误,不要暴露代码细节和敏感信息** ### C++ - [ ] **指针使用前需要判空** - [ ] **数值计算校验溢出和反转** - [ ] **不可存在内存泄漏(异常场景需要释放内存)** - [ ] **类型转换不能出现数据截断** - [ ] **拷贝字符串时,目的缓冲区至少比源缓冲区大 1** - [ ] **拷贝内存时,目的缓冲区不小于源缓冲区** - [ ] **内存释放后指针赋值为 nullptr** ---- ## 5. 变更知会 - [ ] **资料修改** - [ ] **变更通知(消息知会 + 邮件知会)** ---- See merge request: Ascend/msprof!191 | 4 个月前 | |
支持C化各模块前向无环图注册机制 Co-authored-by: WangangYu<2392205247@qq.com> # message auto-generated for no-merge-commit merge: !395 merge processor into master 支持C化各模块前向无环图注册机制 Created-by: MrYudd Commit-by: WangangYu Merged-by: ascend-robot Description: # PR 合入模板 **注:经过自检不涉及的可标注“不涉及”或直接打勾,特殊情况请文字备注。不符合规范的 PR 不允许合入,请(后备)commit 注意。** ---- ## 1. 修改描述 - **修改原因:** 在万卡TB级参数量、300B MoE的情况下,单卡level0数据能达到10GB,全量数据解析耗时久效率低下,而往往只需要部分交付件,op summary、step trace 难以快速支持用户分析 - **修改内容:** 本次将原先分散的 Processor、Summary、DB、Timeline 装配流程统一为注册式 DAG。 ExportManager 按导出配置选择根节点,TopoGraphBuilder 递归展开依赖、校验缺失/环、去重并生成 ProcessCollection;ProcessControl 按拓扑层级并发执行,并依据后续节点的 paramTypes 释放无用数据。DB/Timeline 增加前后置控制节点,UT 覆盖建图、依赖、执行及数据释放场景。 约定:A → B 表示 B 依赖 A,A 先执行。数据类型注册不属于控制依赖,未在图中展开。 mermaid flowchart LR R["静态注册<br/>Processor / Summary / DB / Timeline"] --> G["TopoNodeRegistry"] C["report 配置"] --> S["导出根节点选择"] G --> B["TopoGraphBuilder<br/>展开、去重、环检测"] S --> B B --> P["ProcessCollection"] P --> E["ProcessControl<br/>按 DAG 层级并发执行"] E --> D["DataInventory<br/>按后续 paramTypes 回收数据"] Processor DAG(其余 Processor 均为无前置依赖叶子节点): mermaid flowchart LR HASH["HASH"] --> COMM["COMMUNICATION"] HASH --> CTI["COMPUTE_TASK_INFO"] HASH --> KCOMM["KFC_COMM"] HASH --> NPUOP["NPU_OP_MEM"] TASK["TASK"] --> OVERLAP["OVERLAP_ANALYSIS"] CTI --> OVERLAP COMM --> OVERLAP KCOMM --> OVERLAP MC2["MC2_COMM_INFO"] --> OVERLAP Summary DAG: mermaid flowchart LR CTI["COMPUTE_TASK_INFO"] --> OPS["OP_SUMMARY"] TASK["TASK"] --> OPS COMM["COMMUNICATION"] --> OPS PMU["PMU"] --> OPS FUSION["FUSION_OP"] --> FS["FUSION_OP Summary"] MODEL["MODEL_NAME"] --> FS HASH["HASH"] --> FS CTI --> TTS["TASK_TIME_SUMMARY"] HOST["HOST_TASK"] --> TTS TASK --> TTS SIMPLE["COMM_STATISTIC / OP_STATISTIC / NPU_MEM / NPU_MODULE_MEM / API / STEP_TRACE / PAGE_FAULT"] SIMPLE --> SAME["对应同名 Summary 节点"] DB DAG: mermaid flowchart LR SAME["同名 Processor"] --> DBS["对应 DB Saver"] COMM["COMMUNICATION"] --> DCOMM["DB:COMMUNICATION"] KCOMM["KFC_COMM"] --> DCOMM FREQ["AICORE_FREQ"] --> DFREQ["DB:AICORE_FREQ"] LOW["LOW_POWER"] --> DFREQ TASK["TASK"] --> DTASK["DB:TASK"] TX["DEVICE_TX"] --> DTASK CTI["COMPUTE_TASK_INFO"] --> DCTI["DB:COMPUTE_TASK_INFO"] MC2["MC2_COMM_INFO"] --> DCTI UPMU["UNIFIED_PMU"] --> DPMU["TASK_PMU / SAMPLE_PMU_*"] DBS --> IDS["DB:STRING_IDS"] DCOMM --> IDS DFREQ --> IDS DTASK --> IDS DCTI --> IDS DPMU --> IDS ENUM、HOST_INFO、META_DATA、NPU_INFO、SESSION_TIME_INFO 无 Processor 依赖;其余 DB Saver 均为同名 Processor 一对一依赖。 Timeline DAG: mermaid flowchart LR PRE["TIMELINE:PRE_DUMP"] --> TL["所有选中的 Timeline 节点"] TASK["TASK"] --> TLTASK["Task Scheduler"] KFC_TASK["KFC_TASK"] --> TLTASK CTI["COMPUTE_TASK_INFO"] --> TLTASK API["API"] --> TLTASK MEMCPY["MEMCPY_INFO"] --> TLTASK API --> TLAPI["API Timeline"] TASK --> TLAPI CHIP["CHIP_TRAINS"] --> TRANS["STARS_CHIP_TRANS"] PCIE["PCIE"] --> TRANS COMM["COMMUNICATION"] --> HCCL["HCCL Timeline"] KFC_TASK --> HCCL KCOMM["KFC_COMM"] --> HCCL FREQ["AICORE_FREQ"] --> LOW["LOW_POWER Timeline"] LP["LOW_POWER"] --> LOW TX["DEVICE_TX"] --> TXTL["DEVICE_TX Timeline"] MSTX["MSTX"] --> TXTL BLOCK["BLOCK_DETAIL"] --> BTL["BLOCK_DETAIL Timeline"] CTI --> BTL TASK --> BTL TL --> POST["TIMELINE:POST_DUMP"] 除上图多依赖节点外,ACC_PMU、DDR、HBM、HCCS、OSRT_API、各类 Usage、NPU_MEM、PCIE、SOC、LLC、NIC、ROCE、QOS、BIU、UB、DPU、FUSION_TASK、STEP_TRACE、CCU 等均为 PRE_DUMP + 对应单个 Processor → Timeline 节点。 ## 2. 功能验证 - [ ] **功能自验** - [ ] **本地自验用例截图** - [ ] **冒烟是否通过** (填入群链接的自验证报告中,如未通过,请说明原因:____________________ ,功能代码请主动申报添加冒烟) ---- ## 3. 分支合并要求 - [ ] **代码合并**(请确保将 master 分支的最新代码同步合并至 poc 分支及 pre-research 分支,同时保证 poc 分支的代码也已正确合并到 pre-research 分支。) ---- ## 3. 代码检视 - **要求:** - 合入代码超过 200 行,需三人以上会议检视。 - 检视密度≥1个/100行。 - 检视缺陷密度未达要求需提供说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [ ] **是否经过代码检视** - [ ] **是否具备 UT 测试用例看护** (如不符合,请说明原因:____________________) - **检视意见数:____ 条** (请填写本次检视的意见总数,用于commit合入前审视) ---- ## 4. 安全自检 ### Python、C++ - [ ] **对外接口新增/删除/变更后,资料要同步新增/删除/变更,新增接口入参校验参考外部输入表格** - [ ] **不允许私有的文件操作,需要使用公共模块的安全函数** - [ ] **任务结束后需要删除临时文件,同时需要考虑任务失败后,临时文件没有残留** - [ ] **数组访问需要校验越界场景,对除法需要做除零校验** - [ ] **需要对递归方法做递归深度校验,正则表达式必须做 ReDoS 校验** - [ ] **需要充分进行接口输入和返回值异常情况的校验** - [ ] **日志打印不要出现拼写或语法错误,不要暴露代码细节和敏感信息** ### C++ - [ ] **指针使用前需要判空** - [ ] **数值计算校验溢出和反转** - [ ] **不可存在内存泄漏(异常场景需要释放内存)** - [ ] **类型转换不能出现数据截断** - [ ] **拷贝字符串时,目的缓冲区至少比源缓冲区大 1** - [ ] **拷贝内存时,目的缓冲区不小于源缓冲区** - [ ] **内存释放后指针赋值为 nullptr** ---- ## 5. 变更知会 - [ ] **资料修改** - [ ] **变更通知(消息知会 + 邮件知会)** ---- See merge request: Ascend/msprof!395 | 2 天前 | |
补充aicpu additional parser c化模块 Co-authored-by: Seanesmhxocism<617225691@qq.com> # message auto-generated for no-merge-commit merge: !387 merge cDev into master 补充aicpu additional parser c化模块 Created-by: Seanesmhxocism Commit-by: Seanesmhxocism Merged-by: ascend-robot Description: # PR 合入模板 **注:经过自检不涉及的可标注“不涉及”或直接打勾,特殊情况请文字备注。不符合规范的 PR 不允许合入,请(后备)commit 注意。** ---- ## 1. 修改描述 - **修改原因:** 适配解析框架整体c化。支持aicpu 数据解析c化能力。 - **修改内容:** 1、适配V6场景 streamInfo获取方式,增加相关数据在数据中心中存储。 2、适配streamInfo数据处理,区分HostStreamInfo和DeviceStreamInfo。 3、适配aicoreFreq数据导出流程对于SteamInfo模块依赖 4、增加aicpu parser及其parserItem类设计,增加二进制文件解析流程 5、增加AicpuPersistence aicpu数据持久类,分类aicpu原始数据并落盘于对应的数据db。 ---- ## 2. 功能验证 - [ ] **功能自验** 单timeline数据导出,整体收益在15%左右。 | aicpu大小 | python解析 | c化解析 | 收益 | |--|--|--|--| | 13MB | 8.676s | 7.515s | 15.4% | | 60MB | 40.494s | 35.240s | 14.9% | 已知问题:kfcInfo数据导出的role字段,目前没有转换为DST/SRC/RESERVED/INVALID_TYPE,由于目前role没有使用,暂时先不处理。后续重构删除role数据落盘 - [ ] **本地自验用例截图** - [ ] **冒烟是否通过** (填入群链接的自验证报告中,如未通过,请说明原因:____________________ ,功能代码请主动申报添加冒烟) ---- ## 3. 分支合并要求 - [ ] **代码合并**(请确保将 master 分支的最新代码同步合并至 poc 分支及 pre-research 分支,同时保证 poc 分支的代码也已正确合并到 pre-research 分支。) ---- ## 3. 代码检视 - **要求:** - 合入代码超过 200 行,需三人以上会议检视。 - 检视密度≥1个/100行。 - 检视缺陷密度未达要求需提供说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [ ] **是否经过代码检视** - [ ] **是否具备 UT 测试用例看护** (如不符合,请说明原因:____________________) - **检视意见数:____ 条** (请填写本次检视的意见总数,用于commit合入前审视) ---- ## 4. 安全自检 ### Python、C++ - [ ] **对外接口新增/删除/变更后,资料要同步新增/删除/变更,新增接口入参校验参考外部输入表格** - [ ] **不允许私有的文件操作,需要使用公共模块的安全函数** - [ ] **任务结束后需要删除临时文件,同时需要考虑任务失败后,临时文件没有残留** - [ ] **数组访问需要校验越界场景,对除法需要做除零校验** - [ ] **需要对递归方法做递归深度校验,正则表达式必须做 ReDoS 校验** - [ ] **需要充分进行接口输入和返回值异常情况的校验** - [ ] **日志打印不要出现拼写或语法错误,不要暴露代码细节和敏感信息** ### C++ - [ ] **指针使用前需要判空** - [ ] **数值计算校验溢出和反转** - [ ] **不可存在内存泄漏(异常场景需要释放内存)** - [ ] **类型转换不能出现数据截断** - [ ] **拷贝字符串时,目的缓冲区至少比源缓冲区大 1** - [ ] **拷贝内存时,目的缓冲区不小于源缓冲区** - [ ] **内存释放后指针赋值为 nullptr** ---- ## 5. 变更知会 - [ ] **资料修改** - [ ] **变更通知(消息知会 + 邮件知会)** ---- See merge request: Ascend/msprof!387 | 27 天前 | |
采集和解析结构体解耦 Co-authored-by: panzhaohu<panzhaohu1@h-partners.com> # message auto-generated for no-merge-commit merge: !420 merge struct into master 采集和解析结构体解耦 Created-by: panzhaohu Commit-by: panzhaohu Merged-by: ascend-robot Description: # PR 合入模板 **注:经过自检不涉及的可标注“不涉及”或直接打勾,特殊情况请文字备注。不符合规范的 PR 不允许合入,请(后备)commit 注意。** ---- ## 1. 修改描述 - **修改原因:** 采集和解析使用同一套结构体,上游组件对采集结构体做出改变,解析内部需要进行大量的改动,不利于代码的可维护性,于是采集侧上报的 Msprof* 结构体不再被解析层及上层业务直接复用,而是通过新增的解析层独立结构体 Parser* 与映射器完成数据拷贝转换 - **修改内容:** 1.新增解析层独立结构体 parser_struct.h文件: 新增以 Parser 为前缀的 ParserApi、ParserEvent、ParserCompactInfo、ParserAdditionalInfo、ParserRuntimeTrack、ParserConcatTensorInfo、ParserProfFusionOpInfo 等结构体,替换原 Msprof* 结构在解析及上层业务中的使用,并引入 CompactInfoFormat、AdditionalInfoFormat、RuntimeTrackFormat、CaptureStreamFormat 枚举区分不同数据格式。 2.新增结构体映射器 parser_struct_adapter.h/.cpp文件: 新增 ParserCompactInfoMapper::MapCompactInfo/MapRuntimeTrack、ParserApiMapper::MapApi、ParserAdditionalInfoMapper::MapAdditionalInfo、ParserAicpuMapper::MapNode/MapDp/MapModel/MapKfcInfos 等静态方法,将采集侧原始 Msprof* 数据逐字段拷贝到解析结构体。 3.解析器由「复用原始内存」改为「拷贝映射」: AdditionInfoParser、ApiEventParser、CompactInfoParser 的 ProduceData接口不再直接持有 ReinterpretConvert 得到的原始采集结构体结构指针,而是通过make_shared<Parser*> 生成解析结构体并通过mapper接口将采集侧原始 Msprof* 数据逐字段拷贝到解析结构体Parser*。 4.上层业务全面迁移到 Parser* 类型: Event 构造函数、OpDesc/HcclBigOpDesc/GeFusionOpInfo 等实体、TreeAnalyzer/TreeBuilder、CANNTraceDBDumper/ModelNameDBDumper/MemcpyInfoDumper 等模块都使用解析结构体Parser* 而不是之前的采集结构体msprof*。 ---- ## 2. 功能验证 - [ ] **功能自验** 100M数据解析,解析时间增加1.6s左右:  1G数据解析,时间增加18.05s  - [ ] **本地自验用例截图** - [ ] **冒烟是否通过** (填入群链接的自验证报告中,如未通过,请说明原因:____________________ ,功能代码请主动申报添加冒烟)  ---- ## 3. 分支合并要求 - [ ] **代码合并**(请确保将 master 分支的最新代码同步合并至 poc 分支及 pre-research 分支,同时保证 poc 分支的代码也已正确合并到 pre-research 分支。) ---- ## 3. 代码检视 - **要求:** - 合入代码超过 200 行,需三人以上会议检视。 - 检视密度≥1个/100行。 - 检视缺陷密度未达要求需提供说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [ ] **是否经过代码检视** - [ ] **是否具备 UT 测试用例看护** (如不符合,请说明原因:____________________) - **检视意见数:____ 条** (请填写本次检视的意见总数,用于commit合入前审视) ---- ## 4. 安全自检 ### Python、C++ - [ ] **对外接口新增/删除/变更后,资料要同步新增/删除/变更,新增接口入参校验参考外部输入表格** - [ ] **不允许私有的文件操作,需要使用公共模块的安全函数** - [ ] **任务结束后需要删除临时文件,同时需要考虑任务失败后,临时文件没有残留** - [ ] **数组访问需要校验越界场景,对除法需要做除零校验** - [ ] **需要对递归方法做递归深度校验,正则表达式必须做 ReDoS 校验** - [ ] **需要充分进行接口输入和返回值异常情况的校验** - [ ] **日志打印不要出现拼写或语法错误,不要暴露代码细节和敏感信息** ### C++ - [ ] **指针使用前需要判空** - [ ] **数值计算校验溢出和反转** - [ ] **不可存在内存泄漏(异常场景需要释放内存)** - [ ] **类型转换不能出现数据截断** - [ ] **拷贝字符串时,目的缓冲区至少比源缓冲区大 1** - [ ] **拷贝内存时,目的缓冲区不小于源缓冲区** - [ ] **内存释放后指针赋值为 nullptr** ---- ## 5. 变更知会 - [ ] **资料修改** - [ ] **变更通知(消息知会 + 邮件知会)** ---- See merge request: Ascend/msprof!420 | 13 小时前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 4 个月前 | ||
| 2 天前 | ||
| 4 天前 | ||
| 1 个月前 | ||
| 4 个月前 | ||
| 2 天前 | ||
| 27 天前 | ||
| 13 小时前 |