#!/bin/bash

REPO="http://www.nic.uoregon.edu/~amorris/regression"

go()
{
TOP=`pwd`

source /usr/local/packages/modules/init/bash
module unload mpi
module load mpi/mpich
which mpicc

PATH=$TOP/tau2/x86_64/bin:$PATH

export TAU_VERBOSE=1
export TAU_MAKEFILE=$TOP/tau2/include/Makefile
#export TAU_OPTIONS="-optVerbose -optKeepFiles -optTauSelectFile=$TOP/select.tau"
export TAU_OPTIONS="-optVerbose -optKeepFiles"
EXP="HFODD Regression"
if [ "x$1" = "xgfortran" ] ; then
    TAU_OPTIONS=" $TAU_OPTIONS -optPdtGnuFortranParser"
    EXP="$EXP (gfortran)"
else
    TAU_OPTIONS=" $TAU_OPTIONS -optPdtCleanscapeParser"
    EXP="$EXP (flint)"
fi


wget --quiet $REPO/apps/hfodd/hfodd.tar.gz

# build PDT and TAU
cd $TOP
rm -rf pdtoolkit pdtoolkit.tar.gz tau2.tar.gz tau2
wget --quiet $REPO/checkouts/pdtoolkit.tar.gz
wget --quiet $REPO/checkouts/tau2.tar.gz
tar -xzf pdtoolkit.tar.gz
tar -xzf tau2.tar.gz

cd $TOP/pdtoolkit
./configure
make -j
make install

cd $TOP/tau2
./configure -pdt=$TOP/pdtoolkit -cc=icc -c++=icpc -fortran=intel
make clean install -j

cd $TOP
tar -xzf hfodd.tar.gz
cd hfodd
PATH=$PATH:.
./compile_for_dy
./run_for_dy

pprof -l > pprof.list
diff -s pprof.list pprof.list.check
if [ $? != 0 ] ; then
    echo "ERROR: profiled functions differed!"
else 
    DATE=`date +%Y-%m-%d`
    echo "Loading Trial"
    $TOP/tau2/x86_64/bin/perfdmf_loadtrial -c regression -a "HFODD" -x "$EXP" -n $DATE
fi

}
(time go "$@") 2>&1 | tee go.log
