diff options
author | Simon Marlow <simonmar@microsoft.com> | 2006-04-07 02:05:11 +0000 |
---|---|---|
committer | Simon Marlow <simonmar@microsoft.com> | 2006-04-07 02:05:11 +0000 |
commit | 0065d5ab628975892cea1ec7303f968c3338cbe1 (patch) | |
tree | 8e2afe0ab48ee33cf95009809d67c9649573ef92 /utils/parallel/gr2ps.bash | |
parent | 28a464a75e14cece5db40f2765a29348273ff2d2 (diff) | |
download | haskell-0065d5ab628975892cea1ec7303f968c3338cbe1.tar.gz |
Reorganisation of the source tree
Most of the other users of the fptools build system have migrated to
Cabal, and with the move to darcs we can now flatten the source tree
without losing history, so here goes.
The main change is that the ghc/ subdir is gone, and most of what it
contained is now at the top level. The build system now makes no
pretense at being multi-project, it is just the GHC build system.
No doubt this will break many things, and there will be a period of
instability while we fix the dependencies. A straightforward build
should work, but I haven't yet fixed binary/source distributions.
Changes to the Building Guide will follow, too.
Diffstat (limited to 'utils/parallel/gr2ps.bash')
-rw-r--r-- | utils/parallel/gr2ps.bash | 169 |
1 files changed, 169 insertions, 0 deletions
diff --git a/utils/parallel/gr2ps.bash b/utils/parallel/gr2ps.bash new file mode 100644 index 0000000000..4d4d3da3e6 --- /dev/null +++ b/utils/parallel/gr2ps.bash @@ -0,0 +1,169 @@ +#!/usr/local/bin/bash +############################################################################## +# Time-stamp: <Wed Jul 24 1996 22:11:13 Stardate: [-31]7859.41 hwloidl> +# +# Usage: gr2ps [options] <gr-file> +# +# Create an overall activity graph from a GrAnSim (or GUM) profile. +# Transform the log file of a GrAnSim run (a .gr file) into a quasi-parallel +# profile (a .qp file) using gr2qp and then into a PostScript file using qp2ps. +# The generated PostScript file shows essentially the number of running, +# runnable and blocked tasks during the execution of the program. +# +# Options: +# -o <file> ... write .ps file to <file> +# -I <str> ... queues to be displayed (in the given order) with the encoding +# 'a' ... active (running) +# 'r' ... runnable +# 'b' ... blocked +# 'f' ... fetching +# 'm' ... migrating +# 's' ... sparks +# (e.g. -I "arb" shows active, runnable, blocked tasks) +# -i <int> ... info level from 1 to 7; number of queues to display +# -m ... create mono PostScript file instead a color one. +# -O ... optimise the produced .ps w.r.t. size +# NB: With this option info is lost. If there are several values +# with same x value only the first one is printed, all +# others are dropped. +# -s <str> ... print <str> in the top right corner of the generated graph +# -S ... improved version of sorting events +# -l <int> ... length of slice in the .ps file; (default: 100) +# small value => less memory consumption of .ps file & script +# -d ... Print date instead of average parallelism +# -v ... be talkative. +# -h ... print help message (this header). +# +############################################################################## + +progname="`basename $0`" +args="$*" + +verb=0 +help=0 +mono="" +psfile="" +debug="" +optimise="" +info_level="" +info_mask="" +string="" +length="" +force_date="" +hack="" + +getopts "hvmDCOHSdl:s:o:i:I:" name +while [ "$name" != "?" ] ; do + case $name in + h) help=1;; + v) verb=1;; + m) mono="-m";; + D) debug="-D";; + C) check="-C";; + O) optimise="-O";; + d) force_date="-d";; + H) hack="-H";; + S) improved_sort="-S";; + s) string="-s $OPTARG";; + l) length="-l $OPTARG";; + i) info_level="-i $OPTARG";; + I) info_mask="-I $OPTARG";; + o) psfile=$OPTARG;; + esac + getopts "hvmDCOHSdl:s:o:i:I:" name +done + +opts_qp="$debug $info_level $info_mask $improved_sort " +opts_ps="$debug $check $optimise $mono $string $length $info_level $info_mask $force_date $hack " + +shift $[ $OPTIND - 1 ] + +if [ $help -eq 1 ] + then no_of_lines=`cat $0 | awk 'BEGIN { n = 0; } \ + /^$/ { print n; \ + exit; } \ + { n++; }'` + echo "`head -$no_of_lines $0`" + exit +fi + +if [ -z "$1" ] + then echo "Usage: $progname [options] file[.gr]" + echo "Use -h option for details" + exit 1; +fi + +f="`basename $1 .gr`" +grfile="$f".gr +qpfile="${TMPDIR:-.}/$f".qp +ppfile="${TMPDIR:-.}/$f".pp + +if [ -z "$psfile" ] + then psfile="$f".ps +fi + +if [ $verb -eq 1 ] + then echo "Input file: $grfile" + echo "Quasi-parallel file: $qpfile" + echo "PP file: $ppfile" + echo "PostScript file: $psfile" + if [ -n "$mono" ] + then echo "Producing monochrome PS file" + else echo "Producing color PS file" + fi + if [ -n "$optimise" ] + then echo "Optimisation is ON" + else echo "Optimisation is OFF" + fi + if [ -n "$debug" ] + then echo "Debugging is turned ON" + else echo "Debugging is turned OFF" + fi + if [ -n "$improved_sort" ] + then echo "Improved sort is turned ON" + else echo "Improved sort is turned OFF" + fi + verb_opt="-v " + opts_qp="${opts_qp} $verb_opt " + opts_ps="${opts_ps} $verb_opt " + echo "Options for gr2qp: ${opts_qp}" + echo "Options for qp2ps: ${opts_ps}" +fi + + +# unset noclobber +if [ ! -f "$grfile" ] + then + echo "$grfile does not exist" + exit 1 + else + rm -f "$qpfile" "$psfile" + prog=`head -1 "$grfile" | sed -e 's/Granularity Simulation for //'` + echo "$prog" >| "$qpfile" + if [ $verb -eq 1 ] + then echo "Executed program: $prog" + fi + date >> "$qpfile" + #date="`date`" # This is the date of running the script + date="`tail +2 $grfile | head -1 | sed -e 's/Start time: //'`" + cat "$grfile" | gr2qp ${opts_qp} >> "$qpfile" + # Sorting is part of gr2qp now. + # | ghc-fool-sort | sort -n +0 -1 | ghc-unfool-sort >> "$qpfile" + # max=`tail -2 "$qpfile" | awk '!/^Number of threads:/ { print $1; }'` + xmax=`tail -1 "$qpfile" | awk '{ print $2; }'` + ymax=`tail -1 "$qpfile" | awk '{ print $4; }'` + if [ $verb -eq 1 ] + then echo "Total runtime: $xmax" + echo "Maximal number of tasks: $ymax" + fi + tail +3 "$qpfile" | qp2ps ${opts_ps} "$xmax" "$ymax" "$prog" "$date" >| "$psfile" + rm -f "$qpfile" + if [ $verb -eq 1 ] + then echo "Scaling (maybe): ps-scale-y $psfile " + fi + ps-scale-y "$psfile" +fi + + + + |