From 525d97269d34d637e41ee01efa718d2081b4dd83 Mon Sep 17 00:00:00 2001 From: Augustin Degomme Date: Thu, 23 Jan 2014 16:56:17 +0100 Subject: [PATCH 1/1] allow handling of host:nb_processes structure for mpi hostfiles --- src/smpi/smpirun.in | 36 ++++++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/src/smpi/smpirun.in b/src/smpi/smpirun.in index 7b14c674e7..45f830bcbb 100755 --- a/src/smpi/smpirun.in +++ b/src/smpi/smpirun.in @@ -85,6 +85,15 @@ while true; do shift 2 ;; + "-machinefile") + HOSTFILE="$2" + if [ ! -f "${HOSTFILE}" ]; then + echo "[$0] ** error: the file '${HOSTFILE}' does not exist. Aborting." + exit 1 + fi + shift 2 + ;; + "-ext") EXTOPT="$2" shift 2 @@ -191,12 +200,6 @@ done ##----------------------------------- -# Basic checks on the provided arguments -if [ -z "${EXEC}" ] ; then - echo "You must provide a program to execute." - usage - exit 1 -fi if [ -z "${HOSTFILE}" ] && [ -z "${PLATFORM}" ] ; then echo "No hostfile nor platform specified." @@ -210,6 +213,21 @@ if [ -z "${HOSTFILE}" ] ; then HOSTFILE="$(mktemp tmphostXXXXXX)" perl -ne 'print "$1\n" if /.*.*/' ${PLATFORM} > ${HOSTFILE} fi +UNROLLEDHOSTFILETMP=0 + +#parse if our lines are terminated by :num_process +multiple_processes=`grep -c ":" $HOSTFILE` +if [ "${multiple_processes}" -gt 0 ] ; then + UNROLLEDHOSTFILETMP=1 + UNROLLEDHOSTFILE="$(mktemp tmphostXXXXXX)" + perl -ne ' do{ for ( 1 .. $2 ) { print "$1\n" } } if /(.*?):(\d+).*/' ${HOSTFILE} > ${UNROLLEDHOSTFILE} + if [ ${HOSTFILETMP} = 1 ] ; then + rm ${HOSTFILE} + HOSTFILETMP=0 + fi + HOSTFILE=$UNROLLEDHOSTFILE +fi + # Don't use wc -l to compute it to avoid issues with trailing \n at EOF hostfile_procs=`grep -c "[a-zA-Z0-9]" $HOSTFILE` @@ -395,6 +413,9 @@ if [ -n "${KEEP}" ] ; then if [ ${HOSTFILETMP} = 1 ] ; then echo "Generated hostfile ${HOSTFILE} keeped." fi + if [ ${UNROLLEDHOSTFILETMP} = 1 ] ; then + echo "Generated unrolled hostfile ${UNROLLEDHOSTFILE} keeped." + fi fi ${EXEC} ${TRACEOPTIONS} ${SIMOPTS} ${PLATFORMTMP} ${APPLICATIONTMP} status=$? @@ -406,6 +427,9 @@ if [ -z "${KEEP}" ] ; then if [ ${HOSTFILETMP} = 1 ] ; then rm ${HOSTFILE} fi + if [ ${UNROLLEDHOSTFILETMP} = 1 ] ; then + rm ${UNROLLEDHOSTFILE} + fi rm ${APPLICATIONTMP} fi -- 2.20.1