#!/bin/bash

set -x

if test -z "$1"; then
	PROCS=2
else
	PROCS=$1
fi

TMPDIR=/tmp/$(hostname -s)-$LOGNAME
MPIS="mpich2 openmpi"
DISPLAY=99

# Don't want to be stepped on by login shells that rewrite
# this file regularly
MACHINESFILE=$(mktemp)

echo "tmpdir is $TMPDIR"

. /usr/local/Modules/3.2.6/init/bash
module purge
. ~/.bash_profile


for MPI in $MPIS; do
	if [ "${MPI}" == "openmpi" ]; then
		HOSTCMD="--hostfile"
                HOST_X11_OPT="-x DISPLAY=$(hostname -s):${DISPLAY}.0"
	elif [ "${MPI}" == "mpich2" ]; then
		HOSTCMD="-machinefile"
                HOST_X11_OPT="-genv DISPLAY $(hostname -s):${DISPLAY}.0"
	else
		HOSTCMD=""
	fi

	echo "Testing ${MPI}"

        module purge
	module load modules ${MPI}

	bccd-snarfhosts ${MACHINESFILE}

	cd ~/GalaxSee
	echo "GalaxSee"
	echo "  Building..."
	make clean &> /dev/null && \
	make &> /dev/null && \
	echo "  Syncing..." && \
	bccd-syncdir --ni ~/GalaxSee ${MACHINESFILE} &> /dev/null && \
	echo "  Running..." && \
	    xvfb-run -n ${DISPLAY} -f ${HOME}/.Xauthority -l \
            mpirun ${HOSTCMD} ${MACHINESFILE} -np ${PROCS} ${HOST_X11_OPTS} \
            ${TMPDIR}/GalaxSee 100 100 1000
        
	cd ~/Life
	echo "Life"
	echo "  Building..."
	make clean &> /dev/null && \
	make &> /dev/null && \
	echo "  Syncing..." && \
	bccd-syncdir --ni ~/Life ${MACHINESFILE} &> /dev/null && \
	echo "  Running..." && \
	    xvfb-run -n ${DISPLAY} -f ${HOME}/.Xauthority -l \
	    mpirun ${HOSTCMD} ${MACHINESFILE} -np ${PROCS} ${HOST_X11_OPTS} \
            ${TMPDIR}/Life 50 50 100

	cd ~/Param_space
	echo "ParamSpace"
	echo "  Building..."
	make clean &> /dev/null && \
	make &> /dev/null && \
	echo "  Syncing..." && \
	bccd-syncdir --ni ~/Param_space ~/machines &> /dev/null && \
	echo "  Running..." && \
	    xvfb-run -n ${DISPLAY} -f ${HOME}/.Xauthority -l \
	    mpirun ${HOSTCMD} ${MACHINESFILE} -np ${PROCS} ${HOST_X11_OPTS} \
            ${TMPDIR}/Param_space 100 100 100
done

echo "Done"
