已开启
refactor: 测试端口硬编码改为原子化自动分配 #158
sargerasking创建于  5月20日
sargerasking
sargerasking
5月20日 创建

背景

44 个 ST shell 文件(tests/torch/shard/ops/test_parallel_op_*.py)中硬编码了
master_port(范围 10359–10999),在 CI 门禁使用 pytest-xdist 并行执行时会发
生端口冲突。每次新增测试需手动分配不冲突的端口,维护成本高且不可靠。

目标

消除所有硬编码端口,实现原子化自动分配:

  1. allocate_port() — 基于 fcntl.flock(LOCK_EX) 的原子文件锁计数器,保证并发
    进程永不拿到相同端口
  2. torchrun_case()master_port 参数默认 None,自动分配
  3. TorchCasemaster_port 参数默认 Noneparallel_run() 在父进程预分配
    端口后 spawn 子进程

端口分配机制

特性 说明
原子性 fcntl.flock(LOCK_EX) 内核级排他锁,并发无竞争
循环范围 40000–59999(counter % 20000),溢出自动回绕
文件路径 /tmp/hp_port_counter_<uid>,不同用户隔离
预分配 parallel_run() 在父进程分配端口后再 fork,子进程无竞争
likedislike
Hhedongdong成员
6月17日 关联了pull request:fix: 修复 build #158 门禁失败用例 — FSDP+EP loss、MRS output_m 顺序、worker 路径、shmem 打包