+##-------------------------------- end DEFAULT APPLICATION --------------------------------------
+##---------------------- SMPI TRACING OPTIONS ---------------------------------
+if [ -n "${TRACE_ACTIVE}" ]; then
+ #define trace filename
+ if [ -n "${TRACE_TI_ACTIVE}" ]; then
+ if [ -z "${TRACE_FILENAME}" ]; then
+ TRACE_FILENAME="smpi_simgrid.txt"
+ fi
+ TRACEOPTIONS="--cfg=tracing:yes --cfg=tracing/filename:${TRACE_FILENAME} --cfg=tracing/smpi:yes --cfg=tracing/smpi/format:TI --cfg=tracing/smpi/computing:yes"
+ else
+ if [ -z "${TRACE_FILENAME}" ]; then
+ TRACE_FILENAME="smpi_simgrid.trace"
+ fi
+ TRACEOPTIONS="--cfg=tracing:yes --cfg=tracing/filename:${TRACE_FILENAME} --cfg=tracing/smpi:yes"
+ fi
+
+ if [ -n "${TRACE_COMMENT}" ]; then
+ TRACEOPTIONS="${TRACEOPTIONS} --cfg=tracing/comment:${TRACE_COMMENT}"
+ fi
+
+ if [ -n "${TRACE_COMMENT_FILE}" ]; then
+ TRACEOPTIONS="${TRACEOPTIONS} --cfg=tracing/comment-file:${TRACE_COMMENT_FILE}"
+ fi
+
+ if [ -n "${TRACE_GROUPED}" ]; then
+ TRACEOPTIONS="${TRACEOPTIONS} --cfg=tracing/smpi/group:yes"
+ fi
+
+ if [ -n "${TRACE_RESOURCE}" ]; then
+ TRACEOPTIONS="${TRACEOPTIONS} --cfg=tracing/categorized:yes --cfg=tracing/uncategorized:yes"
+ fi
+
+ if [ -n "${TRACE_VIVA}" ]; then
+ TRACEOPTIONS="${TRACEOPTIONS} --cfg=viva/categorized:smpi_cat.plist --cfg=viva/uncategorized:smpi_uncat.plist"
+ fi
+fi
+##---------------------- end SMPI TRACING OPTIONS ---------------------------------
+
+export SMPI_GLOBAL_SIZE=${NUMPROCS}
+if [ -n "${KEEP}" ] ; then
+ echo ${EXEC} ${TRACEOPTIONS} ${SIMOPTS} ${PRIVATIZE} ${PLATFORMTMP} ${APPLICATIONTMP}
+ if [ ${HOSTFILETMP} = 1 ] ; then
+ echo "Generated hostfile ${HOSTFILE} kept."
+ fi
+ if [ ${UNROLLEDHOSTFILETMP} = 1 ] ; then
+ echo "Generated unrolled hostfile ${UNROLLEDHOSTFILE} kept."
+ fi
+fi
+
+# Execute the process
+#
+# The shell still need to be alive for the duration in order to do some cleanup after the process.
+#
+# We are going through great lengths in order to both keep stdin and be able to handle signals:
+#
+# * The job is launched in the background in order to be able to handle signals.
+#
+# * The FD 3 is used to temporarily store FD 1. This is because the shell connects FD 1 to /dev/null when the command
+# is launched in the background: this can be overriden in bash but not in standard bourne shell.
+exec 3<&0
+${EXEC} ${TRACEOPTIONS} ${SIMOPTS} ${PLATFORMTMP} ${APPLICATIONTMP} <&3 3>&- &
+pid=$!
+exec 3>&-
+wait $pid
+status=$?
+pid=""
+
+# Keep temporary files on failures to help debugging
+#
+if [ ${status} -ne 0 ] ; then
+ if [ -z ${KEEP} ]; then
+ echo ${EXEC} ${TRACEOPTIONS} ${SIMOPTS} ${PRIVATIZE} ${PLATFORMTMP} ${APPLICATIONTMP}
+ if [ ${HOSTFILETMP} = 1 ] ; then
+ echo "Generated hostfile ${HOSTFILE} kept."
+ fi
+ if [ ${UNROLLEDHOSTFILETMP} = 1 ] ; then
+ echo "Generated unrolled hostfile ${UNROLLEDHOSTFILE} kept."
+ fi
+ fi
+ echo "Execution failed with code ${status}."
+ KEEP=true
+fi
+
+smpirun_cleanup