| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat: 新增 MC² 通算融合算子性能优化能力 Co-authored-by: yufang<yufang11@huawei.com> # message auto-generated for no-merge-commit merge: !656 merge mc2perf_skill into master feat: 新增 MC² 通算融合算子性能优化能力 Created-by: yufang11 Commit-by: yufang Merged-by: cann-robot Description: ## 描述 为 ops-perf-optimize 插件新增 MC² 通算融合算子(通信+计算融合)的完整性能优化能力,覆盖从数据采集、Bound 诊断、流水配平搜索到方案实施的全流程。 新增能力: - 隔离测试与 Bound 诊断:通过 tileCnt=1 下注释通信/计算 process,实测 T_comm 和 T_compute,计算 R 值精确判定 Bound 类型(计算 Bound / 通信 Bound / 完美平衡) - Local Matmul 策略:将本 rank 数据(无需通信)的 matmul 独立前置/后置执行,与首次通信重叠,隐藏通信延迟 - 流水配平系统搜索:基于 TilingData(baseM/baseN/usedCoreNum)和 R 值,在配平可行域内执行四条剪枝规则的系统搜索,输出 Top-N 候选切分方案供 msprof 实测择优 - 膨胀分析:评估切分粒度对计算膨胀(流水中断、核利用率)和通信膨胀(头开销、带宽)的影响 - 均分切分兜底算法:当缺少隔离测试数据时,提供满核+最多切分的稳健基线 - MC² 实现层设计指南:提供 TilingData 结构、Host 侧搜索代码、AIC/AIV 核心循环、长短块切换同步等实施细节 ## 关联的Issue https://gitcode.com/cann/cannbot-skills/issues/456 ## 测试 在 Ascend 950 (dav-3510) 4P 环境下完成两个 MC² 算子的端到端调优验证: ### allgather_matmul(AllGather + MXFP8 量化 Matmul,12 cases): - 最佳方案:Local Matmul + 流水配平,几何平均加速比 1.44x,12/12 case 全部提升 - 最佳单 case 加速比 1.72x(m=4040, n=2560) - 掩盖率:计算 Bound 组均值 0.82,强计算 Bound 组均值 0.90 - 精度验证:36/36 PASS MC² allgather_matmul 性能指标(加速比与掩盖率) > 基于 Step 1 隔离测试的 T_comm / T_compute,按 /ascendc-perf-optimize 的 comm-compute/index.md 性能指标公式核算。 > 加速比 = 基线T / 优化后T;掩盖率 = (基线T - 优化后T) / min(T_comm, T_compute) | Case | 基线T(us) | T_comm(us) | T_compute(us) | min(T_comm,T_compute) | 方案1最优T(us) | 加速比 | 掩盖率 | |------|---------|----------|-------------|---------------------|-------------|--------|--------| | 1 | 233.20 | 111.48 | 126.28 | 111.48 | 155.84 | 1.50 | 0.69 | | 2 | 432.55 | 111.82 | 325.01 | 111.82 | 330.07 | 1.31 | 0.92 | | 3 | 466.61 | 213.30 | 257.75 | 213.30 | 287.65 | 1.62 | 0.84 | | 4 | 855.15 | 211.85 | 652.39 | 211.85 | 656.56 | 1.30 | 0.94 | | 5 | 504.60 | 232.51 | 275.22 | 232.51 | 314.27 | 1.61 | 0.82 | | 6 | 918.71 | 234.88 | 698.50 | 234.88 | 721.73 | 1.27 | 0.84 | | 7 | 565.84 | 262.03 | 307.41 | 262.03 | 355.04 | 1.59 | 0.80 | | 8 | 1048.28 | 263.69 | 793.80 | 263.69 | 819.71 | 1.28 | 0.87 | | 9 | 699.20 | 311.39 | 401.63 | 311.39 | 408.32 | 1.71 | 0.93 | | 10 | 1248.26 | 314.20 | 947.37 | 314.20 | 940.22 | 1.33 | 0.98 | | 11 | 893.35 | 395.76 | 503.94 | 395.76 | 518.31 | 1.72 | 0.95 | | 12 | 1597.91 | 396.57 | 1213.94 | 396.57 | 1262.62 | 1.27 | 0.85 | > Group A(compute bound)平均掩盖率 0.82,Group B(strong_compute bound)平均掩盖率 0.90。Group B 掩盖率更高因为通信时间小(T_comm << T_compute),min(T_comm, T_compute)=T_comm,而优化节省的绝对时间占 T_comm 比例大,通信几乎被完全掩盖。 ### all_to_all_matmul(AllToAll + MXFP8 Matmul,6 cases): - 最佳方案:流水配平 + Local Matmul,几何平均加速比 1.15x,6/6 case 全部提升 - 最佳单 case 加速比 1.27x(m=2080) - 掩盖率从基线均值 34.6% 提升至 66.9%(+32pp) - 精度验证:18/18 PASS #### 基线性能指标 | Case | m | 融合前(us) | 基线TaskDur(us) | 基线加速比 | 基线掩盖率 | |------|---|-----------|----------------|-----------|-----------| | 1 | 2624 | 387.117 | 345.614 | 1.1200 | 0.2983 | | 2 | 3136 | 456.656 | 397.613 | 1.1485 | 0.3652 | | 3 | 4096 | 589.386 | 486.867 | 1.2107 | 0.4939 | | 4 | 2080 | 318.524 | 289.713 | 1.0994 | 0.2500 | | 5 | 1010 | 167.587 | 149.285 | 1.1225 | 0.2897 | | 6 | 2304 | 342.614 | 295.048 | 1.1612 | 0.3822 | #### Opt2(最佳方案)性能指标 | Case | m | 融合前(us) | Opt2 TaskDur(us) | Opt2 加速比(vs融合前) | Opt2 加速比(vs基线) | Opt2 掩盖率 | |------|---|-----------|-----------------|---------------------|-------------------|------------| | 1 | 2624 | 387.117 | 304.701 | 1.2704 | 1.1343 | 0.5924 | | 2 | 3136 | 456.656 | 334.422 | 1.3654 | 1.1890 | 0.7549 | | 3 | 4096 | 589.386 | 432.327 | 1.3633 | 1.1262 | 0.7552 | | 4 | 2080 | 318.524 | 227.819 | 1.3982 | 1.2717 | 0.7864 | | 5 | 1010 | 167.587 | 131.946 | 1.2702 | 1.1314 | 0.5639 | | 6 | 2304 | 342.614 | 272.749 | 1.2562 | 1.0818 | 0.5608 | #### Opt3 性能指标 | Case | m | 融合前(us) | Opt3 TaskDur(us) | Opt3 加速比(vs融合前) | Opt3 加速比(vs基线) | Opt3 掩盖率 | |------|---|-----------|-----------------|---------------------|-------------------|------------| | 1 | 2624 | 387.117 | 305.450 | 1.2672 | 1.1315 | 0.5870 | | 2 | 3136 | 456.656 | 348.026 | 1.3124 | 1.1425 | 0.6711 | | 3 | 4096 | 589.386 | 435.876 | 1.3522 | 1.1170 | 0.7381 | | 4 | 2080 | 318.524 | 251.150 | 1.2683 | 1.1535 | 0.5841 | | 5 | 1010 | 167.587 | 125.811 | 1.3321 | 1.1866 | 0.6606 | | 6 | 2304 | 342.614 | 256.114 | 1.3377 | 1.1520 | 0.6948 | **alltoallMatmul 掩盖率提升**: - 基线掩盖率:25%~49%(平均 34.6%) - Opt2 掩盖率:56%~79%(平均 66.9%),提升约 32 个百分点 - Opt3 掩盖率:58%~74%(平均 65.6%),提升约 31 个百分点 ## 文档更新 无需额外文档更新,变更本身即为 skill 文档 ## 类型标签 <!-- [x] 表示选中 --> - [x] 🌟 新特性 - [ ] ✨ 特性增强 - [ ] 🐛 Bug 修复 - [x] ⚡ 性能优化 - [ ] 🧪 测试用例 - [ ] 📦 构建 / CI - [ ] 📝 文档更新 - [ ] 🔧 配置变更 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] ♻️ 代码重构 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: ## 流水线故障排查 <!-- 如果下方的流水线检查未通过,可参考以下指引进行自助修复 --> > **UT_Test 未通过?** > 请在下方流水线表格的 **UT_Test** 行,点击右侧的 >>>>> 下载 **CANNBot-skills UT 测试报告**(HTML 格式)。 > 打开报告后,展开页面中的「UT Test 失败修复指南」,复制其中的提示词并粘贴给 Agent,Agent 将根据日志自动定位并修复问题。 > > 示例: >  See merge request: cann/cannbot-skills!656 | 21 天前 | |
feat: 新增 MC² 通算融合算子性能优化能力 Co-authored-by: yufang<yufang11@huawei.com> # message auto-generated for no-merge-commit merge: !656 merge mc2perf_skill into master feat: 新增 MC² 通算融合算子性能优化能力 Created-by: yufang11 Commit-by: yufang Merged-by: cann-robot Description: ## 描述 为 ops-perf-optimize 插件新增 MC² 通算融合算子(通信+计算融合)的完整性能优化能力,覆盖从数据采集、Bound 诊断、流水配平搜索到方案实施的全流程。 新增能力: - 隔离测试与 Bound 诊断:通过 tileCnt=1 下注释通信/计算 process,实测 T_comm 和 T_compute,计算 R 值精确判定 Bound 类型(计算 Bound / 通信 Bound / 完美平衡) - Local Matmul 策略:将本 rank 数据(无需通信)的 matmul 独立前置/后置执行,与首次通信重叠,隐藏通信延迟 - 流水配平系统搜索:基于 TilingData(baseM/baseN/usedCoreNum)和 R 值,在配平可行域内执行四条剪枝规则的系统搜索,输出 Top-N 候选切分方案供 msprof 实测择优 - 膨胀分析:评估切分粒度对计算膨胀(流水中断、核利用率)和通信膨胀(头开销、带宽)的影响 - 均分切分兜底算法:当缺少隔离测试数据时,提供满核+最多切分的稳健基线 - MC² 实现层设计指南:提供 TilingData 结构、Host 侧搜索代码、AIC/AIV 核心循环、长短块切换同步等实施细节 ## 关联的Issue https://gitcode.com/cann/cannbot-skills/issues/456 ## 测试 在 Ascend 950 (dav-3510) 4P 环境下完成两个 MC² 算子的端到端调优验证: ### allgather_matmul(AllGather + MXFP8 量化 Matmul,12 cases): - 最佳方案:Local Matmul + 流水配平,几何平均加速比 1.44x,12/12 case 全部提升 - 最佳单 case 加速比 1.72x(m=4040, n=2560) - 掩盖率:计算 Bound 组均值 0.82,强计算 Bound 组均值 0.90 - 精度验证:36/36 PASS MC² allgather_matmul 性能指标(加速比与掩盖率) > 基于 Step 1 隔离测试的 T_comm / T_compute,按 /ascendc-perf-optimize 的 comm-compute/index.md 性能指标公式核算。 > 加速比 = 基线T / 优化后T;掩盖率 = (基线T - 优化后T) / min(T_comm, T_compute) | Case | 基线T(us) | T_comm(us) | T_compute(us) | min(T_comm,T_compute) | 方案1最优T(us) | 加速比 | 掩盖率 | |------|---------|----------|-------------|---------------------|-------------|--------|--------| | 1 | 233.20 | 111.48 | 126.28 | 111.48 | 155.84 | 1.50 | 0.69 | | 2 | 432.55 | 111.82 | 325.01 | 111.82 | 330.07 | 1.31 | 0.92 | | 3 | 466.61 | 213.30 | 257.75 | 213.30 | 287.65 | 1.62 | 0.84 | | 4 | 855.15 | 211.85 | 652.39 | 211.85 | 656.56 | 1.30 | 0.94 | | 5 | 504.60 | 232.51 | 275.22 | 232.51 | 314.27 | 1.61 | 0.82 | | 6 | 918.71 | 234.88 | 698.50 | 234.88 | 721.73 | 1.27 | 0.84 | | 7 | 565.84 | 262.03 | 307.41 | 262.03 | 355.04 | 1.59 | 0.80 | | 8 | 1048.28 | 263.69 | 793.80 | 263.69 | 819.71 | 1.28 | 0.87 | | 9 | 699.20 | 311.39 | 401.63 | 311.39 | 408.32 | 1.71 | 0.93 | | 10 | 1248.26 | 314.20 | 947.37 | 314.20 | 940.22 | 1.33 | 0.98 | | 11 | 893.35 | 395.76 | 503.94 | 395.76 | 518.31 | 1.72 | 0.95 | | 12 | 1597.91 | 396.57 | 1213.94 | 396.57 | 1262.62 | 1.27 | 0.85 | > Group A(compute bound)平均掩盖率 0.82,Group B(strong_compute bound)平均掩盖率 0.90。Group B 掩盖率更高因为通信时间小(T_comm << T_compute),min(T_comm, T_compute)=T_comm,而优化节省的绝对时间占 T_comm 比例大,通信几乎被完全掩盖。 ### all_to_all_matmul(AllToAll + MXFP8 Matmul,6 cases): - 最佳方案:流水配平 + Local Matmul,几何平均加速比 1.15x,6/6 case 全部提升 - 最佳单 case 加速比 1.27x(m=2080) - 掩盖率从基线均值 34.6% 提升至 66.9%(+32pp) - 精度验证:18/18 PASS #### 基线性能指标 | Case | m | 融合前(us) | 基线TaskDur(us) | 基线加速比 | 基线掩盖率 | |------|---|-----------|----------------|-----------|-----------| | 1 | 2624 | 387.117 | 345.614 | 1.1200 | 0.2983 | | 2 | 3136 | 456.656 | 397.613 | 1.1485 | 0.3652 | | 3 | 4096 | 589.386 | 486.867 | 1.2107 | 0.4939 | | 4 | 2080 | 318.524 | 289.713 | 1.0994 | 0.2500 | | 5 | 1010 | 167.587 | 149.285 | 1.1225 | 0.2897 | | 6 | 2304 | 342.614 | 295.048 | 1.1612 | 0.3822 | #### Opt2(最佳方案)性能指标 | Case | m | 融合前(us) | Opt2 TaskDur(us) | Opt2 加速比(vs融合前) | Opt2 加速比(vs基线) | Opt2 掩盖率 | |------|---|-----------|-----------------|---------------------|-------------------|------------| | 1 | 2624 | 387.117 | 304.701 | 1.2704 | 1.1343 | 0.5924 | | 2 | 3136 | 456.656 | 334.422 | 1.3654 | 1.1890 | 0.7549 | | 3 | 4096 | 589.386 | 432.327 | 1.3633 | 1.1262 | 0.7552 | | 4 | 2080 | 318.524 | 227.819 | 1.3982 | 1.2717 | 0.7864 | | 5 | 1010 | 167.587 | 131.946 | 1.2702 | 1.1314 | 0.5639 | | 6 | 2304 | 342.614 | 272.749 | 1.2562 | 1.0818 | 0.5608 | #### Opt3 性能指标 | Case | m | 融合前(us) | Opt3 TaskDur(us) | Opt3 加速比(vs融合前) | Opt3 加速比(vs基线) | Opt3 掩盖率 | |------|---|-----------|-----------------|---------------------|-------------------|------------| | 1 | 2624 | 387.117 | 305.450 | 1.2672 | 1.1315 | 0.5870 | | 2 | 3136 | 456.656 | 348.026 | 1.3124 | 1.1425 | 0.6711 | | 3 | 4096 | 589.386 | 435.876 | 1.3522 | 1.1170 | 0.7381 | | 4 | 2080 | 318.524 | 251.150 | 1.2683 | 1.1535 | 0.5841 | | 5 | 1010 | 167.587 | 125.811 | 1.3321 | 1.1866 | 0.6606 | | 6 | 2304 | 342.614 | 256.114 | 1.3377 | 1.1520 | 0.6948 | **alltoallMatmul 掩盖率提升**: - 基线掩盖率:25%~49%(平均 34.6%) - Opt2 掩盖率:56%~79%(平均 66.9%),提升约 32 个百分点 - Opt3 掩盖率:58%~74%(平均 65.6%),提升约 31 个百分点 ## 文档更新 无需额外文档更新,变更本身即为 skill 文档 ## 类型标签 <!-- [x] 表示选中 --> - [x] 🌟 新特性 - [ ] ✨ 特性增强 - [ ] 🐛 Bug 修复 - [x] ⚡ 性能优化 - [ ] 🧪 测试用例 - [ ] 📦 构建 / CI - [ ] 📝 文档更新 - [ ] 🔧 配置变更 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] ♻️ 代码重构 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: ## 流水线故障排查 <!-- 如果下方的流水线检查未通过,可参考以下指引进行自助修复 --> > **UT_Test 未通过?** > 请在下方流水线表格的 **UT_Test** 行,点击右侧的 >>>>> 下载 **CANNBot-skills UT 测试报告**(HTML 格式)。 > 打开报告后,展开页面中的「UT Test 失败修复指南」,复制其中的提示词并粘贴给 Agent,Agent 将根据日志自动定位并修复问题。 > > 示例: >  See merge request: cann/cannbot-skills!656 | 21 天前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 21 天前 | ||
| 21 天前 |