#! /bin/sh
+# Copyright (c) 2007-2014. The SimGrid Team.
+# All rights reserved.
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the license (GNU LGPL) which comes with this package.
+
@CMAKE_SMPI_COMMAND@
DEFAULT_LOOPBACK_BANDWIDTH="498000000"
NETWORK_LATENCY="${DEFAULT_NETWORK_LATENCY}"
POWER="${DEFAULT_POWER}"
-SIMOPTS="--cfg=maxmin/precision:1e-9 --cfg=network/model:SMPI --cfg=network/TCP_gamma:4194304"
+SIMOPTS="--cfg=maxmin/precision:1e-9 --cfg=surf/precision:1e-9 --cfg=network/model:SMPI --cfg=network/TCP_gamma:4194304"
#usage to print the way this script should be called
usage () {
-trace-comment-file <file> # put file contents on the top of the trace file as comment
-trace-grouped # group MPI processes by location
-trace-resource # trace resource utilization
- -trace-viva # generate configuration for Viva's GraphView
+ -trace-viva # generate configuration for Viva's GraphView
-trace-file <tracefile> # name of the tracefile (simgrid_smpi.trace)
-ext <value> # additional parameter (reserved)
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
##-----------------------------------
-# 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."
HOSTFILE="$(mktemp tmphostXXXXXX)"
perl -ne 'print "$1\n" if /.*<host.*?id="(.*?)".*?\/>.*/' ${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`
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=$?
if [ ${HOSTFILETMP} = 1 ] ; then
rm ${HOSTFILE}
fi
+ if [ ${UNROLLEDHOSTFILETMP} = 1 ] ; then
+ rm ${UNROLLEDHOSTFILE}
+ fi
rm ${APPLICATIONTMP}
fi