diff --git a/RTCP/Cobalt/InputProc/src/mpirun.sh.in b/RTCP/Cobalt/InputProc/src/mpirun.sh.in index ff72b408dbf203d60220c4ad02f037457c95d0db..36c3c962258d31509f8b0bd82325e492a8d0af81 100755 --- a/RTCP/Cobalt/InputProc/src/mpirun.sh.in +++ b/RTCP/Cobalt/InputProc/src/mpirun.sh.in @@ -9,75 +9,78 @@ error() exit 1 } +# Ignore all mpirun options +parse_nompi_options() +{ + # Assume the last "option" is the name of the executable + while [ $# -gt 1 ] + do + shift + done + EXECUTABLE=$1 +} + parse_openmpi_options() { - echo "parset_openmpi_options()" -# OPTIONS= -# for opt in "$@" -# do -# OPTIONS="$OPTIONS \"$opt\"" -# done - OPTIONS="$@" + # Assume the last "option" is the name of the executable + while [ $# -gt 1 ] + do + MPIEXEC_PREFLAGS="$MPIEXEC_PREFLAGS $1" + shift + done + EXECUTABLE=$1 } parse_mvapich2_options() { - echo "parset_mvapich2_options()" - OPTIONS="" while : do case $1 in -c | -np | --np) - OPTIONS="$OPTIONS -np $2" - shift 2 || break + MPIEXEC_PREFLAGS="$MPIEXEC_PREFLAGS -np $2" + shift 2 || error "argument for option $1 missing" ;; -H | -host | --host) - OPTIONS="$OPTIONS -hosts \"$2\"" - shift 2 || break + MPIEXEC_PREFLAGS="$MPIEXEC_PREFLAGS -hosts $2" + shift 2 || error "argument for option $1 missing" ;; -*) - echo "Warning: $1 is an unknown option" + error "$1 is an unknown option" shift ;; *) # no more options - PROGRAM="$1" + EXECUTABLE="$1" break; ;; esac done - echo "OPTIONS=$OPTIONS" - echo "PROGRAM=$PROGRAM" } if [ "@HAVE_MPI@" = "TRUE" ] then MPIEXEC=@MPIEXEC@ - MPIEXEC=/opt/mvapich2/bin/mpiexec - - echo "MPIEXEC=$MPIEXEC" + MPIEXEC_PREFLAGS=@MPIEXEC_PREFLAGS@ + MPIEXEC_POSTFLAGS=@MPIEXEC_POSTFLAGS@ # Determine MPI flavour VERSION_HEADER=$(${MPIEXEC} --version 2>&1 | head -n 1) - echo "VERSION_HEADER=$VERSION_HEADER" if echo ${VERSION_HEADER} | grep "OpenRTE" >/dev/null; then - FLAVOUR=openmpi + MPI_FLAVOUR=openmpi elif echo ${VERSION_HEADER} | grep "HYDRA" >/dev/null; then - FLAVOUR=mvapich2 + MPI_FLAVOUR=mvapich2 else - error "Cannot determine flavour of @MPIEXEC@" + error "Cannot determine flavour of ${MPIEXEC}" fi - parse_${FLAVOUR}_options "$@" - echo "OPTIONS=$OPTIONS" - - COMMAND="$MPIEXEC @MPIEXEC_PREFLAGS@ $OPTIONS $PROGRAM @MPIEXEC_POSTFLAGS@" -# COMMAND="@MPIEXEC@ @MPIEXEC_NUMPROC_FLAG@ @MPIEXEC_MAX_NUMPROCS@ \ -# @MPIEXEC_PREFLAGS@ $@ @MPIEXEC_POSTFLAGS@" else # Not using MPI - COMMAND="$@" + MPI_FLAVOUR=nompi fi -echo "COMMAND=$COMMAND" +parse_${MPI_FLAVOUR}_options "$@" + +COMMAND="${MPIEXEC} ${MPIEXEC_PREFLAGS} ${EXECUTABLE} ${MPIEXEC_POSTFLAGS}" + +echo "Executing: $COMMAND" eval $COMMAND