#!/bin/sh
#PBS -q parallel@intel2.psc.edu
#PBS -l nodes=2:PIII:ppn=4
#

function gen_PGfile()  {
	PGfile_name=PGfile.$$

	LOCAL=`hostname`
	COUNT=`grep "^${LOCAL}$" $PBS_NODEFILE | wc -l | awk '{ print $1 - 1 }'`
	echo "local $COUNT ${BINARY}" > $PGfile_name
	cat $PBS_NODEFILE | grep -v $LOCAL | uniq -c | 
		awk '{ print $2, $1, "'${BINARY}'"}' >> $PGfile_name
}

function clean_up()  {
	if [ -f $PGfile_name ]
	then
		rm -f $PGfile_name
	fi
}


#####################################################################
# *** Uncomment and properly define the next 2 variables
#
# -- BINARY defines the program to run 
BINARY=/home/ryan3/RayTrace/RayTrace
#
# -- ARGUMENTS defines any necessay command-line arguments for BINARY
ARGUMENTS=""
P4_SOCKBUFSIZE=0X40000
P4_GLOBMEMSIZE=33554432
#PBS_NODEFILE="/home/ryan3/my_pbs_nodefile"

if [ "${PBS_NODEFILE:-/home/ryan3/my_pbs_nodefile}" = "NONE" ]
then
	echo "no node file"
else
	gen_PGfile
	echo "running from `hostname`, PGfile_name is: "
	cat $PGfile_name
	/usr/local/packages/mpich/bin/mpirun -keep_pg -p4pg $PGfile_name ${BINARY} ${ARGUMENTS}
fi

clean_up

