Skip to content
Snippets Groups Projects
Commit b8825c55 authored by Marcel Loose's avatar Marcel Loose :sunglasses:
Browse files

Task #4575: First version of mpirun.sh.in that is working reasonably well. I'm...

Task #4575: First version of mpirun.sh.in that is working reasonably well. I'm not going to spend more time on this, right now.
parent bd1c202e
No related branches found
No related tags found
No related merge requests found
...@@ -9,75 +9,78 @@ error() ...@@ -9,75 +9,78 @@ error()
exit 1 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() parse_openmpi_options()
{ {
echo "parset_openmpi_options()" # Assume the last "option" is the name of the executable
# OPTIONS= while [ $# -gt 1 ]
# for opt in "$@" do
# do MPIEXEC_PREFLAGS="$MPIEXEC_PREFLAGS $1"
# OPTIONS="$OPTIONS \"$opt\"" shift
# done done
OPTIONS="$@" EXECUTABLE=$1
} }
parse_mvapich2_options() parse_mvapich2_options()
{ {
echo "parset_mvapich2_options()"
OPTIONS=""
while : while :
do do
case $1 in case $1 in
-c | -np | --np) -c | -np | --np)
OPTIONS="$OPTIONS -np $2" MPIEXEC_PREFLAGS="$MPIEXEC_PREFLAGS -np $2"
shift 2 || break shift 2 || error "argument for option $1 missing"
;; ;;
-H | -host | --host) -H | -host | --host)
OPTIONS="$OPTIONS -hosts \"$2\"" MPIEXEC_PREFLAGS="$MPIEXEC_PREFLAGS -hosts $2"
shift 2 || break shift 2 || error "argument for option $1 missing"
;; ;;
-*) -*)
echo "Warning: $1 is an unknown option" error "$1 is an unknown option"
shift shift
;; ;;
*) # no more options *) # no more options
PROGRAM="$1" EXECUTABLE="$1"
break; break;
;; ;;
esac esac
done done
echo "OPTIONS=$OPTIONS"
echo "PROGRAM=$PROGRAM"
} }
if [ "@HAVE_MPI@" = "TRUE" ] if [ "@HAVE_MPI@" = "TRUE" ]
then then
MPIEXEC=@MPIEXEC@ MPIEXEC=@MPIEXEC@
MPIEXEC=/opt/mvapich2/bin/mpiexec MPIEXEC_PREFLAGS=@MPIEXEC_PREFLAGS@
MPIEXEC_POSTFLAGS=@MPIEXEC_POSTFLAGS@
echo "MPIEXEC=$MPIEXEC"
# Determine MPI flavour # Determine MPI flavour
VERSION_HEADER=$(${MPIEXEC} --version 2>&1 | head -n 1) VERSION_HEADER=$(${MPIEXEC} --version 2>&1 | head -n 1)
echo "VERSION_HEADER=$VERSION_HEADER"
if echo ${VERSION_HEADER} | grep "OpenRTE" >/dev/null; then if echo ${VERSION_HEADER} | grep "OpenRTE" >/dev/null; then
FLAVOUR=openmpi MPI_FLAVOUR=openmpi
elif echo ${VERSION_HEADER} | grep "HYDRA" >/dev/null; then elif echo ${VERSION_HEADER} | grep "HYDRA" >/dev/null; then
FLAVOUR=mvapich2 MPI_FLAVOUR=mvapich2
else else
error "Cannot determine flavour of @MPIEXEC@" error "Cannot determine flavour of ${MPIEXEC}"
fi 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 else
# Not using MPI # Not using MPI
COMMAND="$@" MPI_FLAVOUR=nompi
fi fi
echo "COMMAND=$COMMAND" parse_${MPI_FLAVOUR}_options "$@"
COMMAND="${MPIEXEC} ${MPIEXEC_PREFLAGS} ${EXECUTABLE} ${MPIEXEC_POSTFLAGS}"
echo "Executing: $COMMAND"
eval $COMMAND eval $COMMAND
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment