#! /bin/bash echo "Preparing:" set -x # Output commands set -e # Abort on errors cd @RUNDIR@-active module list echo "Checking:" pwd hostname date cat ${PBS_NODES} > SIMFACTORY/NODES echo "Environment:" export CACTUS_NUM_PROCS=@NUM_PROCS@ export CACTUS_NUM_THREADS=@NUM_THREADS@ export GMON_OUT_PREFIX=gmon.out export OMP_NUM_THREADS=@NUM_THREADS@ env | sort > SIMFACTORY/ENVIRONMENT # Specify the number of MPI processes per node explicitly, but only if # -N <= -n. export NODE_PROCS='@(@PPN_USED@ / @NUM_THREADS@ <= @NUM_PROCS@ ? "-N @(@PPN_USED@ / @NUM_THREADS@)@" : "")@' # Specify the number of MPI processes per socket explicitly, but only # if it is a whole number export SOCKET_PROCS='@(@PPN_USED@ % (2 * @NUM_THREADS@) == 0 ? "-S @(@PPN_USED@ / (2 * @NUM_THREADS@))@" : "")@' # Specify whether to use HyperThreading export CORE_PROCS='@(@PPN_USED@ % (24 * @NUM_THREADS@) == 0 ? "-j @(@PPN_USED@ / (24 * @NUM_THREADS@))@" : "")@' echo "Starting:" export CACTUS_STARTTIME=$(date +%s) aprun -cc numa_node -n @NUM_PROCS@ -d @NUM_THREADS@ ${NODE_PROCS} ${SOCKET_PROCS} ${CORE_PROCS} @EXECUTABLE@ -L 3 @PARFILE@ echo "Stopping:" date echo "Done."