
msprof采集与分析【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills使用各 CANN 自带的msprof多组--aic-metrics sample-basedaicore.db得到可分析的op_summary_*、per_core_cycles.csv与summary.txt。适用场景目标环境以msprof为采集手段或团队约定采用本工具链。Step 1构建算子如果有指定的调用方式这一步可跳过直调算子cd ops/{operator_name} mkdir -p build cd build cmake .. make -jaclnn 算子bash build.sh --pkg --socascend910b --ops{operator_name} --vendor_namecustom -j16 ./build_out/*.run --install-path$CANN bash build.sh --run_example {operator_name} eager cust --vendor_namecustomStep 2采集原生msprof每次运行只支持一个--aic-metrics组且op_summary_*.csv是 per-op 聚合值而非逐核。流程在正式采集前 warm-up N 次规避 DVFS按顺序分别采集 7 组--aic-metricsPipeUtilization、ArithmeticUtilization、Memory、MemoryL0、MemoryUB、L2Cache、ResourceConflictRatio额外跑一次--aic-modesample-based从device_0/sqlite/aicore.dbAICoreOriginalData.task_cyc拿到逐核 cycle以 aicore_time / max_cycles 反推主频把逐核 cycle 折算成 per-core 时长一键脚本# 位于 {skill_path}/scripts/msprof_profile_run.sh bash {skill_path}/scripts/msprof_profile_run.sh \ --warm-up3 \ --output./msprof_output \ -- ./demo arg1 arg2 ...关键点msprof 的op_summary.csv没有Current Freq/Rated Freq和逐核time(us)字段逐核分析必须依赖PROF_Sample下的aicore.db。采集落盘目录树见文末数据目录结构 → 临时输出根路径为--output下的PROF_GROUP_*。Step 3归档 统计摘要GROUP_DIR$(ls -td output_dir/PROF_GROUP_* | head -1) python3 {skill_path}/scripts/msprof_perf_summary.py $GROUP_DIR ops/{operator_name}脚本会在ops/{operator_name}/docs/perf/round_NNN/创建归档目录轮次自动递增按目标Op Name在 7 份op_summary.csv里合并列复制为op_summary_Metric.csv读PROF_Sample/.../aicore.db的task_cyc根据aicore_time(us)反推主频换算每核耗时输出summary.txt在全局统计之外附加「逐核负载均衡」段例如--- 逐核负载均衡 (sample-based aicore.db) --- 有效核数: 32 | 主频推算: 1.651 GHz (0.6058 ns/cycle) min185.93us avg193.13us max199.27us (max-min)/max 6.69% - 达标 (10%) Top-3 慢核: Core3199.27us, ... Top-3 快核: Core21185.93us, ... [提示] 前半段 core 均值 198.17us vs 后半段 188.10us差距 5.99% 疑似两簇 (NUMA / L2 slice) 负载偏斜建议尝试 block swat / 尾轮均衡策略。同步把per_core_cycles.csv归档到同目录方便二次分析归档完成后即结束本 Step 的职责。下游从summary.txt含逐核负载均衡段、op_summary_*.csv、per_core_cycles.csv读取指标后按下文「主 Bound 判定」推导主 bound 档位算子族级细化与报告专有条目见/ascendc-performance-optimization。主 Bound 判定msprof 归档本节适用于msprof经 Step 23 得到的归档目录round_NNN/。判据与/ops-simulator流水图路径同一套优先级表便于对接/ascendc-performance-optimization。输入与输出项目说明输入从归档中的op_summary_*.csv、summary.txt等抽取的单核侧各流水线busy 占 case或 task总时长的百分比口径须与/ops-simulator流水分析中的「占 case」可比不适用msprof 聚合指标无可对照流水图的气泡时间报告中气泡列标注「不适用」不得填写气泡数值输出主 bound 档位MTE2 BOUND/CUBE BOUND/VEC BOUND/FIXP BOUND/MTE3 BOUND/SCALAR BOUND/无 bound各流水线 busy 占比的抽取与列映射以本文 Step 3 产物及csv_fields_reference.md为准若归档 CSV 表头与文档示例不一致以实际表头为准。判定规则与/ops-simulator一致在已得到各流水线 busy 占比后从上到下匹配第一条成立优先级Bound 类型判断规则1MTE2 BOUNDMTE2 busy 占 case 80%或MTE2 在 8 条中占比最大且 70%2CUBE BOUNDCUBE busy 占 case 80%或CUBE 在 8 条中占比最大且 70%3VEC BOUNDPUSHQ busy 占 case 80%4FIXP BOUNDFIXP busy 占 case 80%5MTE3 BOUNDMTE3 busy 占 case 80%6SCALAR BOUNDSCALAR busy 占 case 80%或 SCALARLDST busy 占 case 80%—无 bound以上条件均不满足「占比最大」比较对象为上述单元对应的统计。数据目录结构临时输出msprof_profile_run.sh的--output目录下output_dir/PROF_GROUP_YYYYMMDD_HHMMSS/ ├── PROF_PipeUtilization/PROF_*/mindstudio_profiler_output/op_summary_*.csv ├── PROF_ArithmeticUtilization/... ├── PROF_Memory/... ├── PROF_MemoryL0/... ├── PROF_MemoryUB/... ├── PROF_L2Cache/... ├── PROF_ResourceConflictRatio/... └── PROF_Sample/PROF_*/device_0/sqlite/aicore.db ← 逐核 task_cyc持久归档ops/{算子名}/docs/perf/ ├── round_001/ │ ├── op_summary_PipeUtilization.csv │ ├── op_summary_ArithmeticUtilization.csv │ ├── op_summary_Memory.csv │ ├── op_summary_MemoryL0.csv │ ├── op_summary_MemoryUB.csv │ ├── op_summary_L2Cache.csv │ ├── op_summary_ResourceConflictRatio.csv │ ├── op_statistic_Metric.csv │ ├── task_time_Metric.csv │ ├── per_core_cycles.csv │ └── summary.txt └── ...字段含义详见csv_fields_reference.md按op_summary_*列名对齐同类指标。注意事项必须 warm-up脚本默认--warm-up3可调避免 DVFS 影响首次运行无频率字段op_summary没有Current Freq/Rated Freq脚本通过aicore_time / max_cycles反推主频MTE2/MTE3 带宽共享同时读写 GM 时总带宽共享评估搬运段负载时宜按 MTE2、MTE3 合并字节量与平台带宽对照小数据量场景数据量很小时头开销占比会很高这不一定是算子问题多核同地址访问多核同时读同一 512B 地址范围会被串行化导致 MTE2 耗时异常相关资源文件内容csv_fields_reference.md字段定义和阈值按op_summary_*列名对齐供下游分析角色参考scripts/msprof_profile_run.sh一键采集脚本Step 2 调用scripts/msprof_perf_summary.py归档 摘要 逐核负载均衡Step 3 调用【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考