| 添加经典和双平面两种实现路径的Dispatch和Combine算子example
Co-authored-by: xionglan2<xionglan2@huawei.com>
# message auto-generated for no-merge-commit merge:
!350 merge feature/dispatch-combine-examples into master
添加经典和双平面两种实现路径的Dispatch和Combine算子example
Created-by: xionglan2
Commit-by: xionglan2
Merged-by: cann-robot
Description: ## 描述
本次 PR 将 dispatch、combine、dispatch_doubleplane、combine_doubleplane 四个 MoE 通信算子上库,并对 classic / DoublePlane 两类路径做统一整理和性能优化,目标是在保持现有输入输出语义不变的前提下,补齐基础能力、统一脚本与文档,并提升大包传输场景下的吞吐表现。
具体改动包括:
- 补齐 classic dispatch / combine 与 DoublePlane dispatch_doubleplane / combine_doubleplane 四个算子的构建、运行脚本和说明文档,统一功能验证和性能测试入口。
- dispatch 路径将输入token按路由规则分发到目标expert,生成后续combine所需的中间结果;combine 路径将个expert输出按源token和topK权重回传聚合,生成最终输出结果。
- dispatch_doubleplane / combine_doubleplane 引入基于 segment size 的自适应传输策略,在 direct MTE 与 SDMA 之间按段大小选择传输 plane;对大段优先走 SDMA,小段保留 direct 路径,以降低小包 SDMA 开销并提升大包场景吞吐。
- 保持四个算子的外部接口、输出格式和校验方式一致,便于后续统一冒烟、泛化和性能对比。
## 关联的Issue
https://gitcode.com/cann/shmem/issues/249
## 测试
已按以下维度进行验证,具体参数和结果可按实际执行情况补充:
- 功能正确性:使用各目录 scripts/run.sh 完成 dispatch、combine、dispatch_doubleplane、combine_doubleplane 基础冒烟,校验 expand_x、assist_info_for_combine、ep_recv_count、expert_token_nums、x_out 与 golden 一致。
- 二级冒烟:覆盖 [2/4/8] 卡、[int32_t/float16_t]、[bs/topk/h/expertPerPe] 典型组合,确认 classic 与 DoublePlane 路径均可稳定运行。
- 算子泛化:覆盖不同 pes、bs、h、topk、expertPerPe 组合,验证不同 shape 下输出语义与 classic 基线保持一致。
- 性能验证:通过 --perf 模式对 dispatch vs dispatch_doubleplane、combine vs combine_doubleplane 进行 full_op 和 comm_only 对比,重点观察多卡场景下的带宽和耗时表现。
- 协议一致性:验证 DoublePlane 在 SDMA/direct 混合路径下,payload、assist、ready、count、status 的写入/可见性时序正确,无功能回归。
验证结果如下:



## 文档更新
- 更新/补充 dispatch、combine、dispatch_doubleplane、combine_doubleplane 的 README,说明构建、功能运行和性能测试方法。
- 更新/补充 DoublePlane 设计说明文档,记录分段判定、传输策略和控制面协议。
## 类型标签
- [ ] Bug修复
- [ ] 新特性
- [ ] 性能优化
- [ ] 文档更新
- [x] 其他,请描述:Add example/perftest
See merge request: cann/shmem!350 | 4 天前 |