### NAS Parallel Benchmark (http://www.nas.nasa.gov/publications/npb.html) is a
### small set of benchmarks that was intended for use when evaluating
### supercomputers. They are all computational kernels. In this configuration,
### the workload is parallelised on a single machine using OpenMPI.

# Test disk to setup (optional)
#export TESTDISK_RAID_DEVICES=
#export TESTDISK_RAID_MD_DEVICE=/dev/md0
#export TESTDISK_RAID_OFFSET=63
#export TESTDISK_RAID_SIZE=250019532
#export TESTDISK_RAID_TYPE=raid0
#export TESTDISK_PARTITION=/dev/sda6
#export TESTDISK_FILESYSTEM=xfs
#export TESTDISK_MKFS_PARAM="-f -d agcount=8"
#export TESTDISK_MOUNT_ARGS=inode64,delaylog,logbsize=262144,nobarrier

# List of monitors
export RUN_MONITOR=yes
export MONITORS_ALWAYS=
export MONITORS_GZIP="proc-vmstat turbostat mpstat"
export MONITORS_WITH_LATENCY="vmstat"
export MONITOR_UPDATE_FREQUENCY=10

# NAS Parallel Benchmark
export NAS_OPENMPI_VERSION=openmpi4
export NAS_MPI_PATH=/usr/$MMTESTS_LIBDIR/mpi/gcc/$NAS_OPENMPI_VERSION/bin
export NAS_MPI_LIBPATH=/usr/$MMTESTS_LIBDIR/mpi/gcc/$NAS_OPENMPI_VERSION/$MMTESTS_LIBDIR
export NAS_CLASS=`nas-class.sh`
export NAS_USE_CMA=no
export NAS_MAX_CPUS=$NUMCPUS
export NAS_ITERATIONS=3

if [ "$NAS_MAX_CPUS" -lt 4 ]; then
	echo "ERROR: Too few CPUs ($NAS_MAX_CPUS) to parallelise loads requiring a square number of helpers"
	exit -1
fi

# Set additional mpi options if required
grep -q " ht " /proc/cpuinfo
if [ $? -eq 0 ]; then
	if [ $NAS_MAX_CPUS -gt $((NUMCPUS/2)) ]; then
		echo WARNING: Setting use-hwthread-cpus because HT siblings must be used
		NAS_MPI_OPTS+=" --use-hwthread-cpus"
	fi
fi
if [ "`whoami`" = "root" ]; then
	NAS_MPI_OPTS+=" --allow-run-as-root"
fi
export NAS_MPI_OPTS

# Select tests based on class
case $NAS_CLASS in
C)
	export MMTESTS="nas-mpi-bt nas-mpi-cg nas-mpi-ep nas-mpi-ft nas-mpi-is nas-mpi-lu nas-mpi-mg nas-mpi-sp"
	;;
D)
	export MMTESTS="nas-mpi-bt nas-mpi-cg nas-mpi-ep            nas-mpi-is nas-mpi-lu nas-mpi-mg nas-mpi-sp"
	;;
*)
	die "Unrecognised class $NAS_CLASS"
esac

export SLURM_ENV_SETUP=no
