#!/bin/bash
#
# submit.sh num prog {arg1 arg2 ...}
# Create a PBS batch script to run prog on num processors
# If there are any args, pass them on

SCRIPT_NAME=/tmp/script_`date +%d.%b.%Y_%H%M%S`.$$

if [[ $# < 2 ]] ; then
    echo "Usage: $0 num prog {arg1 arg2 ...}"
    exit
fi

echo $0 $1 $2 $3
let n=$1
exec=$2
shift 2
args=$*

if [[ $n < 1 ]] ; then
    echo "Wrong number of nodes requested: $1"
    echo "Usage: $0 num prog {arg1 arg2 ...}"
    exit
fi

let n++
let nodes=$n/2
let n--

prog=`type -p $exec`
if [[ $? != 0 ]] ; then
    echo "Can't fine program: ${exec}"
    echo "Usage: $0 num prog {arg1 arg2 ...}"
    exit
fi

prog=$PWD/$prog

echo "#!/bin/bash -l" > $SCRIPT_NAME
echo "#" >> $SCRIPT_NAME
echo "#PBS -l nodes=${nodes}:ppn=2" >> $SCRIPT_NAME
echo "" >> $SCRIPT_NAME
echo "mpirun -n $n -hostfile \$PBS_NODEFILE $prog $args" >> $SCRIPT_NAME

echo -n "Script name is "
basename $SCRIPT_NAME

qsub $SCRIPT_NAME

rm -f $SCRIPT_NAME

qstat -u `id -u -n`
