diff --git a/examples/process_plot_tasks b/examples/process_plot_tasks new file mode 100755 index 0000000000000000000000000000000000000000..cf19401b582c29f7e35073be93569ea8039f958d --- /dev/null +++ b/examples/process_plot_tasks @@ -0,0 +1,89 @@ +#!/bin/bash +# +# Usage: +# process_plot_tasks nprocess time-range-ms +# +# Description: +# Process all the thread info files in the current directory +# creating task graphs for steps and threads. +# +# The input files are created by a run using the "-y interval" flag and +# should be named "thread_info-step<n>.dat" in the current directory. +# All located files will be processed using "nprocess" concurrent +# processes and all plots will have the given time range. An output +# HTML file "index.html" will be created to view all the plots. +# +# +# This file is part of SWIFT: +# +# Copyright (C) 2016 Peter W. Draper (p.w.draper@durham.ac.uk) +# All Rights Reserved. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# Handle command-line +if test "$2" == ""; then + echo "Usage: $0 nprocess time-range-ms" + exit 1 +fi +NPROCS=$1 +TIMERANGE=$2 + +# Find all thread info files. Use version sort to get into correct order. +files=$(ls -v thread_info-step*.dat) +if test $? != 0; then + echo "Failed to find any thread info files" + exit 1 +fi + +# Construct list of names, the step no and names for the graphics. +list="" +for f in $files; do + s=$(echo $f| sed 's,thread_info-step\(.*\).dat,\1,') + list="$list $f $s step${s}r" +done + +# And process them, +echo "Processing thread info files..." +echo $list | xargs -P $NPROCS -n 3 /bin/bash -c "./plot_tasks.py \$0 \$2 $TIMERANGE" + +echo "Writing output index.html file" +# Construct document - serial. +cat <<EOF > index.html + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> + <head> + <title>SWIFT task graphs</title> + </head> + <body> + <h1>SWIFT task graphs</h1> +EOF + +echo $list | xargs -n 3 | while read f s g; do + cat <<EOF >> index.html +<h2>Step $s</h2> +EOF + cat <<EOF >> index.html +<a href="step${s}r${i}.png"><img src="step${s}r${i}.png" width=400px/></a> +EOF +done + +cat <<EOF >> index.html + </body> +</html> +EOF + +echo "Finished" + +exit