#!/bin/bash
export SCRIPT=`basename $0 | sed -e 's/\./\\\./'`
export SCRIPTDIR=`echo $0 | sed -e "s/$SCRIPT//"`
cd $SCRIPTDIR/../configs || exit

# STREAM
for CONFIG in `ls config-workload-stream-* | grep -v -E ".*-zen2$"`; do
	sed    -e 's/STREAM_SIZE=.*/STREAM_SIZE=\$((1048576*3*2048))/' $CONFIG > $CONFIG-zen2
	sed -i -e '/MMTESTS_BUILD_CFLAGS=/d' $CONFIG-zen2
	echo 'export MMTESTS_BUILD_CFLAGS="-m64 -lm -Ofast -march=znver1 -mcmodel=medium -DOFFSET=512"' >> $CONFIG-zen2
done

# NAS
for CPUCOUNT in 16 32 64 128 225 255 256; do
	NAS_NOTUNECONFIG=config-hpc-nas-d-class-mpi-${CPUCOUNT}cpus-xfs-zen2-notuning
	NAS_BASECONFIG=config-hpc-nas-d-class-mpi-${CPUCOUNT}cpus-xfs-zen2-default

	# No special tuning
	cp config-hpc-nas-d-class-mpi-full-xfs $NAS_NOTUNECONFIG
	sed -i  -e "s/NAS_MAX_CPUS=.*/NAS_MAX_CPUS=${CPUCOUNT}/"		\
		-e "s/NAS_OPENMPI_VERSION=.*/NAS_OPENMPI_VERSION=openmpi2/"	\
		$NAS_NOTUNECONFIG

	# Default baseline configuration
	cp $NAS_NOTUNECONFIG $NAS_BASECONFIG

	echo "export MMTESTS_BUILD_CFLAGS=-O3"				>> $NAS_BASECONFIG
	echo								>> $NAS_BASECONFIG
	echo "echo Setting performance governor"			>> $NAS_BASECONFIG
	echo "cpupower frequency-set -g performance"			>> $NAS_BASECONFIG
	echo								>> $NAS_BASECONFIG

	cat $NAS_BASECONFIG | sed -e '/numa_balancing/d' > config-hpc-nas-d-class-mpi-${CPUCOUNT}cpus-xfs-zen2-tuned
	sed -i  -e 's/MMTESTS_BUILD_CFLAGS=.*/MMTESTS_BUILD_CFLAGS="-Ofast -march=znver1 -mtune=znver1 -ftree-vectorize"/' \
		-e 's/migration_cost_ns=.*/migration_cost_ns=5000000/'	\
		-e 's/min_granularity_ns=.*/min_granularity_ns=10000000/'	   config-hpc-nas-d-class-mpi-${CPUCOUNT}cpus-xfs-zen2-tuned
	echo 'export NAS_BIND=yes'						>> config-hpc-nas-d-class-mpi-${CPUCOUNT}cpus-xfs-zen2-tuned
	echo 'export NAS_BIND_PLACE=l3cache:overload-allowed'			>> config-hpc-nas-d-class-mpi-${CPUCOUNT}cpus-xfs-zen2-tuned
	echo 'echo 1 > /proc/sys/kernel/numa_balancing'				>> config-hpc-nas-d-class-mpi-${CPUCOUNT}cpus-xfs-zen2-tuned
done

cp config-hpc-nas-d-class-mpi-256cpus-xfs-zen2-tuned config-hpc-nas-d-class-mpi-Ncpus-xfs-zen2-selective
echo 'export NAS_JOB_MAX_CPUS="bt=256 cg=32 ep=256 is=256 lu=128 mg=32 sp=256"' >> config-hpc-nas-d-class-mpi-Ncpus-xfs-zen2-selective
