nccl_sweep.sh 1.1 KB

1234567891011
  1. #!/usr/bin/env bash
  2. # Run nccl_sweep.py on all 8 Sparks in throwaway containers (needs idle GPUs: stop the server first). Usage: nccl_sweep.sh "NCCL_PROTO=Simple NCCL_MAX_NCHANNELS=16"
  3. set -euo pipefail
  4. cd "$(dirname "$0")/.."; source configs/cluster.env; [ -f configs/cluster.local.env ] && source configs/cluster.local.env
  5. read -ra FA <<<"$FABRIC_A"; MASTER=${DIST_INIT_ADDR%:*}
  6. extra=${1:-}; envs=""; for kv in $NCCL_ENV $extra; do envs+=" -e $kv"; done; envs=${envs// -e SGLANG8_ROCE_ALLREDUCE=1/}
  7. for r in 1 2 3 4 5 6 7; do rsync -a runtime/ "$SSH_USER@${FA[$r]}:${WORKDIR#\$HOME/}/runtime/"; done
  8. for r in 7 6 5 4 3 2 1 0; do
  9. cmd="docker run --rm --name mimo26-nccl-r$r --gpus all --network host --ipc host --cap-add IPC_LOCK --ulimit memlock=-1 --device /dev/infiniband -v $WORKDIR/runtime:/rt $envs $IMAGE torchrun --nnodes 8 --nproc-per-node 1 --node-rank $r --master-addr $MASTER --master-port 29611 /rt/nccl_sweep.py"
  10. if [ $r = 0 ]; then bash -c "$cmd" > /tmp/nccl-sweep-r0.log 2>&1; grep "^{" /tmp/nccl-sweep-r0.log; else ssh -o BatchMode=yes $SSH_USER@${FA[$r]} "$cmd" > /tmp/nccl-sweep-r$r.log 2>&1 & fi
  11. done; wait