#! /bin/bash echo "Preparing:" set -x # Output commands set -e # Abort on errors cd @RUNDIR@-active echo "Checking:" pwd hostname date 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@ export OPENMPI_DIR=/usr/mpi/gcc/openmpi-1.4.3 env | sort > SIMFACTORY/ENVIRONMENT echo "Job setup:" echo " Allocated:" echo " Nodes: @NODES@" echo " Cores per node: @PPN@" echo " Running:" echo " MPI processes: @NUM_PROCS@" echo " OpenMP threads per process: @NUM_THREADS@" echo " MPI processes per node: @(1.0*@NUM_PROCS@/@NODES@)@" echo " OpenMP threads per core: @(1.0*(@NUM_PROCS@*@NUM_THREADS@)/(@NODES@*@PPN@))@" echo " OpenMP threads per node: @PPN_USED@" case '@PPN_USED@:@NUM_THREADS@' in (12:12|6:6|4:4|3:3|2:2|1:1) options='-npernode 1 -bind-to-none';; (12:6|6:3|4:2|2:1) options='-npersocket 1 -bind-to-socket';; (12:3|4:1) options='-npersocket 2 -bind-to-socket';; (12:2|6:1) options='-npersocket 3 -bind-to-socket';; (12:1|*) options='-npersocket 6 -bind-to-core';; esac echo "Starting:" export CACTUS_STARTTIME=$(date +%s) echo $LSB_HOSTS | xargs -n 1 echo | uniq | sed -e 's/ /,/' > SIMFACTORY/NODES time $OPENMPI_DIR/bin/mpirun -np @NUM_PROCS@ -machinefile SIMFACTORY/NODES -num-sockets 2 $options -display-map -report-bindings -x OMP_NUM_THREADS=@NUM_THREADS@ @EXECUTABLE@ -L 3 @PARFILE@ echo "Stopping:" date echo "Done."