From ad9a4138921df225fdda9b5abc21927940101062 Mon Sep 17 00:00:00 2001 From: Peter Boyle Date: Thu, 13 Aug 2026 20:08:25 -0400 Subject: [PATCH] Update --- MPI_benchmark/io_aurora.pbs | 43 +++++++++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 11 deletions(-) diff --git a/MPI_benchmark/io_aurora.pbs b/MPI_benchmark/io_aurora.pbs index 579cd0e40..57b6559a2 100644 --- a/MPI_benchmark/io_aurora.pbs +++ b/MPI_benchmark/io_aurora.pbs @@ -9,13 +9,35 @@ # deliberate difference from io_frontier.slurm (8 per node, one per GCD), so # read the comparison carefully -- see WHAT IS AND IS NOT COMPARABLE below. +# Run io_aurora_debug.pbs first. If the cross validation fails there, this +# scan is 2 hours of 128 nodes producing numbers for a broken file. + +#PBS -q prod +#PBS -l filesystems=flare +#PBS -l filesystems=home #PBS -l select=128 #PBS -l walltime=02:00:00 -#PBS -l filesystems=flare -#PBS -q prod -#PBS -A LatticeQCD_aesp_CNDA +#PBS -A 15479 cd $PBS_O_WORKDIR +cp $PBS_NODEFILE nodefile + +# Only if mpiexec is not already in the environment. io_mpi is host only +# and needs no part of the Grid build environment. +#source ../../sourceme.sh + +########################################################################## +# Environment. io_mpi has no OpenMP and never touches a GPU, so one thread +# per rank and a NUMA NIC policy rather than a GPU one. +# +# The MPICH_DBG_* variables are deliberately absent: at 1536 ranks they +# produce gigabytes of log and perturb the timings they would explain. +# MPICH_MPIIO_STATS/TIMERS are also off here -- they are per collective and +# 1536 ranks x 6 rungs x 3 reps is unreadable. Get them from the debug run. +########################################################################## +export OMP_NUM_THREADS=1 +export MPICH_CH4_SHM=XPMEM +export MPICH_OFI_NIC_POLICY=NUMA ########################################################################## # WHAT IS AND IS NOT COMPARABLE WITH THE FRONTIER SCAN @@ -48,8 +70,12 @@ cd $PBS_O_WORKDIR # and mixing them into one table would misrepresent both. Label every set # of numbers with the filesystem it came from. ########################################################################## -WORK=/lus/flare/projects/LatticeQCD_aesp_CNDA/$USER/iompi.$PBS_JOBID -mkdir -p $WORK +# PROJECT is the flare project DIRECTORY name, which is not the -A account +# number. Set it once; the mkdir below fails loudly rather than writing +# somewhere unintended. +PROJECT=LatticeQCD_aesp_CNDA +WORK=/lus/flare/projects/$PROJECT/$USER/iompi.$PBS_JOBID +mkdir -p $WORK || { echo "cannot create $WORK -- set PROJECT correctly"; exit 1; } cd $WORK # Match Frontier's default: no explicit striping. Record what was inherited. @@ -64,11 +90,6 @@ NRANKS=12 # one per tile BIN=$PBS_O_WORKDIR/io_mpi ARGS="--target 4194304 --reps 3" -# MPICH's own account of what it did; the first thing anyone reading the -# report will ask for. -# export MPICH_MPIIO_STATS=1 -# export MPICH_MPIIO_TIMERS=1 - run () { # run [extra args...] local nodes=$1 gr=$2 mp=$3 note=$4 local ntot=$(( nodes * NRANKS )) @@ -78,7 +99,7 @@ run () { # run [extra args...] echo "=== nodes=$nodes ranks=$ntot grid=$gr mpi=$mp $note" echo "=== extra: $@" echo "===================================================================" - mpiexec -np $ntot -ppn $NRANKS $BIN --grid $gr --mpi $mp $ARGS "$@" + mpiexec -np $ntot -ppn $NRANKS -envall $BIN --grid $gr --mpi $mp $ARGS "$@" echo "=== exit $?" }