Some checks failed
Build wheels / build (ubuntu-latest, 3.11) (push) Has been cancelled
Build wheels / build (ubuntu-latest, 3.12) (push) Has been cancelled
Build wheels / build (ubuntu-latest, 3.13) (push) Has been cancelled
Tests / check (push) Has been cancelled
Tests / build (ubuntu-latest, 3.11) (push) Has been cancelled
Tests / build (ubuntu-latest, 3.12) (push) Has been cancelled
Tests / build (ubuntu-latest, 3.13) (push) Has been cancelled
71 lines
1.6 KiB
Bash
Executable File
71 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
NQ="${NQ:-34}"
|
|
LAYERS="${LAYERS:-20}"
|
|
BOND="${BOND:-512}"
|
|
SEED="${SEED:-42}"
|
|
RANKS="${RANKS:-1 2 4}"
|
|
THREADS="${THREADS:-32 32 16}"
|
|
PYTHON_BIN="${PYTHON_BIN:-.venv/bin/python}"
|
|
MPIEXEC="${MPIEXEC:-mpiexec}"
|
|
CIRCUIT="${CIRCUIT:-brickwall_cnot}"
|
|
OBSERVABLE="${OBSERVABLE:-ring_xz}"
|
|
EXACT="${EXACT:-0}"
|
|
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
cd "$ROOT_DIR"
|
|
|
|
if [[ "${1:-help}" != "run" ]]; then
|
|
cat >&2 <<'EOF'
|
|
Usage: tools/run_vidal_segment_mpi_scan.sh run
|
|
|
|
Overrides:
|
|
NQ=34 LAYERS=20 BOND=512 SEED=42
|
|
RANKS="1 2 4" THREADS="32 32 16"
|
|
CIRCUIT=brickwall_cnot OBSERVABLE=ring_xz
|
|
EXACT=1
|
|
PYTHON_BIN=.venv/bin/python MPIEXEC=mpiexec
|
|
EOF
|
|
if [[ "${1:-help}" == "help" ]]; then
|
|
exit 0
|
|
fi
|
|
exit 2
|
|
fi
|
|
|
|
read -r -a ranks <<< "$RANKS"
|
|
read -r -a threads <<< "$THREADS"
|
|
|
|
if [[ "${#ranks[@]}" != "${#threads[@]}" ]]; then
|
|
echo "RANKS and THREADS must have the same number of entries." >&2
|
|
exit 2
|
|
fi
|
|
|
|
common=(
|
|
--nqubits "$NQ"
|
|
--nlayers "$LAYERS"
|
|
--bond "$BOND"
|
|
--seed "$SEED"
|
|
--mps
|
|
--circuits "$CIRCUIT"
|
|
--observables "$OBSERVABLE"
|
|
)
|
|
|
|
if [[ "$EXACT" == "1" ]]; then
|
|
common+=(--exact)
|
|
fi
|
|
|
|
for idx in "${!ranks[@]}"; do
|
|
nrank="${ranks[$idx]}"
|
|
nthr="${threads[$idx]}"
|
|
if [[ "$nrank" == "1" ]]; then
|
|
echo "== Vidal serial ranks=1 torch_threads=$nthr =="
|
|
"$PYTHON_BIN" -u benchmark_cpu_expectation.py \
|
|
"${common[@]}" --torch-threads "$nthr"
|
|
else
|
|
echo "== Vidal segmented MPI ranks=$nrank torch_threads=$nthr =="
|
|
"$MPIEXEC" -n "$nrank" "$PYTHON_BIN" -u benchmark_cpu_expectation.py \
|
|
"${common[@]}" --torch-threads "$nthr" --mpi
|
|
fi
|
|
done
|