X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/loba.git/blobdiff_plain/d3914e4821cb9a186ec4c0a01d052fa5bcf48c9c..1d498e972be5597e0f902a1bb8e6ec8d87d51002:/Experimentations/run-all?ds=sidebyside diff --git a/Experimentations/run-all b/Experimentations/run-all index 9453bc3..5b80fbf 100755 --- a/Experimentations/run-all +++ b/Experimentations/run-all @@ -5,11 +5,12 @@ set -e usage() { cat >&2 < +Usage: $0 [OPTION] Options: -h print this help -n dry-run mode (for debugging) -c (continue) do not overwrite previous results + -z compress output files with gzip EOF exit $1 } @@ -34,11 +35,13 @@ array_check() { # read args overwrite=1 debug=0 -while getopts "chn" c; do +compress=0 +while getopts "chnz" c; do case "$c" in 'c') overwrite=0 ;; 'h') usage 0 ;; 'n') debug=1 ;; + 'z') compress=1 ;; '?') usage 1 ;; esac done @@ -49,7 +52,7 @@ parameters="$1" log "Running: $0 $@" log "Hostname: $(hostname -f)" -declare -a TOPOLOGIES ALGORITHMS PLATFORMS COMMON_OPTS +declare -a TOPOLOGIES ALGORITHMS PLATFORMS VARIANTS COMMON_OPTS MORE_ARGS # read parameters log "Reading parameters from \"$1\"." @@ -63,13 +66,19 @@ variable_check LOAD variable_check DEADLINE # default values -: ${RESULTS:=$PWD/results} -: ${LOBA:=$PWD/loba} +test -n "$VARIANTS" || VARIANTS=( "plain" "bookkeeping" ) +test -n "$RESULTS" || RESULTS="$PWD/results" +test -n "$LOBA" || LOBA="$PWD/loba" COMMON_OPTS=( - --cfg=contexts/factory:raw + "${MORE_ARGS[@]}" ) +test -f "$LOBA" && test -x "$LOBA" || die "command not found: \"$LOBA\"" +for plat in "${PLATFORMS[@]}"; do + test -f "$plat" && test -r "$plat" || die "file not found: \"$plat\"" +done + log "Results put in: \"$RESULTS\"." [ $debug = 1 ] && log "Running in dry-run mode" @@ -78,14 +87,27 @@ outfile() { echo "$*" | sed 's,[^ ]*/,,g;s/\.xml//;y/ /_/' } +summary() { + gzip -cdf "$@" \ + | sed -n '\!^\[main/INFO\] ,----\[ Results \]!,${ + /send\|recv\|wall clock\|Simulation succeeded/d;p; + }' +} + +if [ $compress = 1 ]; then + outsuffix=".gz" +else + outsuffix="" +fi + for plat in "${PLATFORMS[@]}"; do tmp=$(basename "$plat" ".xml") plat_output="$RESULTS/plat_$tmp" for topo in "${TOPOLOGIES[@]}"; do topo_output="$plat_output/topo_$topo" + [ $debug = 0 ] && mkdir -p "$topo_output" for algo in "${ALGORITHMS[@]}"; do algo_output="$topo_output/algo_$algo" - [ $debug = 0 ] && mkdir -p "$algo_output" args=( -T"$topo" -a"$algo" @@ -94,22 +116,36 @@ for plat in "${PLATFORMS[@]}"; do -t"$DEADLINE" "$plat" ) - for bk in "" "-b"; do - tmp=$(outfile "loba" $bk "${args[@]}") - out="$algo_output/$tmp.out" - cmd=( "$LOBA" "${COMMON_OPTS[@]}" $bk "${args[@]}" ) - log "Run: ${cmd[@]}"$'\n'"... &> $out" - if [ $overwrite = 0 -a -e "$out" ]; then + for variant in "${VARIANTS[@]}"; do + cmd=( "$LOBA" "${COMMON_OPTS[@]}" ) + case "$variant" in + "plain") : ;; + "bookkeeping") cmd+=( "-b" ) ;; + *) die "unknown variant: \"$variant\"" ;; + esac + out="${algo_output}_${variant}.out" + outf="$out$outsuffix" + cmd+=( "${args[@]}" ) + log "Run: ${cmd[@]}"$'\n'"... &> $outf" + if [ $overwrite = 0 -a -e "$outf" ]; then log "already run !" - tail -n4 "$out" + summary "$outf" continue fi if [ $debug = 1 ]; then log "skipped (dry-run)" + continue + fi + rm -f "$outf"; + echo "# ${cmd[@]}" > "$out" + if "${cmd[@]}" >> "$out" 2>&1; then + summary "$out" else - echo "# ${cmd[@]}" > "$out" - "${cmd[@]}" > "$out" 2>&1 - tail -n4 "$out" + grep -v '/INFO\]' "$out" + fi + if [ $compress = 1 ]; then + log "Compress output file." + gzip --best "$out" fi done done