From: genaud Date: Tue, 23 Jun 2009 13:21:32 +0000 (+0000) Subject: extended smpirun accepting -platform and -hostfile X-Git-Tag: SVN~1311 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/7ed181c23cb36f8fff699f9cffefce42247a40b3 extended smpirun accepting -platform and -hostfile git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@6329 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- diff --git a/src/smpi/smpirun.in b/src/smpi/smpirun.in index 24168a0c8e..bcd1e936fa 100755 --- a/src/smpi/smpirun.in +++ b/src/smpi/smpirun.in @@ -15,7 +15,7 @@ POWER="${DEFAULT_POWER}" while true; do case "$1" in - "-np") + "-np" | "-n") NUMPROCS="$2" shift 2 ;; @@ -27,9 +27,18 @@ while true; do NETWORK_LATENCY="$2" shift 2 ;; - "-help") + "-platform") + PLATFORM="$2" + shift 2 + ;; + "-hostfile") + HOSTFILE="$2" + shift 2 + ;; + + "-help" | "--help" | "-h") echo "usage:" - echo "$0 [-np ] [-bandwidth ] [-latency ] program [program-options]" + echo "$0 [-np ] [-bandwidth ] [-latency ] [-platform ] [-hostfile ] program [program-options]" echo exit ;; @@ -42,10 +51,12 @@ done EXEC="$1" shift -PLATFORMTMP="$(mktemp tmpXXXXXX)" -#PLATFORMTMP="pla.xml" +##-------------------------------- DEFAULT or SPECIFIED PLATFORM -------------------------------------- +if [ -z "${PLATFORM}" ]; then + PLATFORMTMP="$(mktemp tmpXXXXXX)" + #PLATFORMTMP="pla.xml" -cat > ${PLATFORMTMP} < ${PLATFORMTMP} < @@ -71,17 +82,41 @@ cat >> ${PLATFORMTMP} < PLATFORMFOOT +else + PLATFORMTMP=${PLATFORM} +fi +##-------------------------------- end DEFAULT or SPECIFIED PLATFORM -------------------------------------- + +##-------------------------------- DEFAULT APPLICATION -------------------------------------- APPLICATIONTMP="$(mktemp tmpXXXXXX)" #APPLICATIONTMP="app.xml" + cat > ${APPLICATIONTMP} < APPLICATIONHEAD +##---- cache hostnames of hostfile--------------- +if [ -n "${HOSTFILE}" ] && [ -f ${HOSTFILE} ]; then + hostnames=(`cat ${HOSTFILE} | tr \\\n " "`) +fi + +##---------------------------------------------------------- +## generate application.xml with hostnames from hostfile: +## the name of host_i (1<=i<=p, where -np p) is the line i +## in hostfile (where -hostfile hostfile), or "host$i" if +## hostfile has less than i lines. +##---------------------------------------------------------- for (( i=${NUMPROCS}; $i ; i=$i-1 )) do - echo " " >> ${APPLICATIONTMP} + j=$(( $i-1 )) + if [ -z "${hostnames[$j]}" ]; then + host="host"$i + else + host="${hostnames[$j]}" + fi + echo " " >> ${APPLICATIONTMP} for ARG in $*; do echo " " >> ${APPLICATIONTMP} done @@ -89,13 +124,26 @@ for (( i=${NUMPROCS}; $i ; i=$i-1 )) do done for (( i=${NUMPROCS}; $i ; i=$i-1 )) do - echo " " >> ${APPLICATIONTMP} - echo " " >> ${APPLICATIONTMP} + j=$(( $i-1 )) + if [ -z "${hostnames[$j]}" ]; then + host="host"$i + else + host="${hostnames[$j]}" + fi + + echo " " >> ${APPLICATIONTMP} + echo " " >> ${APPLICATIONTMP} done cat >> ${APPLICATIONTMP} < APPLICATIONFOOT +##-------------------------------- end DEFAULT APPLICATION -------------------------------------- ${EXEC} ${PLATFORMTMP} ${APPLICATIONTMP} -rm ${PLATFORMTMP} ${APPLICATIONTMP} + +echo "[$0] cleaning up temp files" +if [ -z "${PLATFORM}" ]; then + rm ${PLATFORMTMP} +fi +rm ${APPLICATIONTMP}