已开启
refactor: 测试端口硬编码改为原子化自动分配 #158
sargerasking创建于 5月20日
Hhedongdong
6月17日 关联了pull request:fix: 修复 build #158 门禁失败用例 — FSDP+EP loss、MRS output_m 顺序、worker 路径、shmem 打包
6月17日 关联了pull request:fix: 修复 build #158 门禁失败用例 — FSDP+EP loss、MRS output_m 顺序、worker 路径、shmem 打包
背景
44 个 ST shell 文件(
tests/torch/shard/ops/test_parallel_op_*.py)中硬编码了master_port(范围 10359–10999),在 CI 门禁使用 pytest-xdist 并行执行时会发生端口冲突。每次新增测试需手动分配不冲突的端口,维护成本高且不可靠。
目标
消除所有硬编码端口,实现原子化自动分配:
allocate_port()— 基于fcntl.flock(LOCK_EX)的原子文件锁计数器,保证并发进程永不拿到相同端口
torchrun_case()—master_port参数默认None,自动分配TorchCase—master_port参数默认None,parallel_run()在父进程预分配端口后 spawn 子进程
端口分配机制
fcntl.flock(LOCK_EX)内核级排他锁,并发无竞争counter % 20000),溢出自动回绕/tmp/hp_port_counter_<uid>,不同用户隔离parallel_run()在父进程分配端口后再 fork,子进程无竞争