已开启
[feature] 分布式算子 ST 测试迁移至 Gloo CPU 后端(43 算子 206 用例) #122
sargerasking创建于  5月11日
sargerasking
sargerasking
5月11日 创建

分布式算子 ST 测试迁移至 Gloo CPU 后端

背景

当前 HyperParallel 的分布式算子 ST 测试(tests/torch/shard/ops/)依赖 Ascend NPU + HCCL 后端执行,只能在 NPU 机器上运行。这导致:

  1. 开发门槛高 — 开发者必须有 NPU 硬件才能运行分布式测试
  2. CI 覆盖受限 — NPU 资源有限,门禁压力大
  3. 迭代速度慢 — 算子开发/修改后需要排队等待 NPU 资源验证

方案

将所有分布式算子 ST 测试用例迁移至 Gloo CPU 后端,使测试可在任意 x86 机器上通过 torchrun 执行,无需 NPU 硬件。

迁移范围

  • 43 个分布式算子,共 206 个测试用例
  • 涵盖:element-wise(add/sub/mul/div/sin/cos/abs/neg/exp/log/sqrt/rsqrt/clamp/maximum/minimum)、矩阵(matmul/bmm)、归约(sum/mean/prod/max/min/norm/amax/amin)、形状(reshape/view/flatten/transpose/permute/split/chunk/slice/scatter/gather/cat/stack/expand/repeat/tile/flip/narrow/unsqueeze/squeeze/index_select/take/index_put/tensor_split/topk/select/index_add)、类型转换(cast)等

迁移方式

每个算子测试文件(parallel_op_*.py)末尾追加 test_gloo_* 系列函数,使用:

  • init_dist_gloo() 替代 init_dist()(Gloo CPU 后端初始化)
  • device_type="cpu" 替代 device_type="npu"
  • 去除 .npu() 设备转换
  • 使用 init_device_mesh + distribute_tensor 直接构造 DTensor

对应的 shell 入口文件(test_parallel_op_*.py)追加 @arg_mark(plat_marks=["cpu_linux"]) 测试入口,通过 torchrun_case 启动。

影响分析

  • 零影响 — 所有原有 NPU 测试函数和逻辑完全不变
  • 纯增量 — 仅在文件末尾追加 Gloo 测试函数和 shell 入口
  • 基础设施 — 新增 init_dist_gloo() 辅助函数(tests/torch/utils.py),扩展 mark_utils.py 支持列表参数
likedislike
sargeraskingsargerasking
5月11日 修改了issue 的描述
sargeraskingsargerasking
5月11日 修改了issue 的描述
sargeraskingsargerasking
5月11日 关联了pull request:test: migrate 43 distributed op ST tests to Gloo CPU backend (206 cases)