2 # (C) Hans Wolfgang Loidl, November 1995
3 #############################################################################
4 # Time-stamp: <Sun Nov 5 1995 00:23:45 Stardate: [-31]6545.08 hwloidl>
6 # Usage: SN [options] <gr-file>
8 # Create a summary of spark names that occur in gr-file (only END events in
9 # gr-file are necessary). Creates a gnuplot impulses graph (spark names by
10 # number of threads) as summary.
13 # -h ... help; print this text.
14 # -v ... verbose mode.
16 #############################################################################
18 $gran_dir = $ENV{'GRANDIR'};
19 if ( $gran_dir eq "" ) {
20 print STDERR "SN: Warning: Env variable GRANDIR is undefined\n";
23 push(@INC, $gran_dir, $gran_dir . "/bin");
24 # print STDERR "INC: " . join(':',@INC) . "\n";
34 if ( $opt_v ) { do print_verbose_message(); }
36 # ---------------------------------------------------------------------------
38 # ---------------------------------------------------------------------------
41 chop($stardate = `stardate`);
43 open (IN,"<$input") || die "$!: $input";
47 $is_end = 1 if /END\s+(\w+).*SN\s+(\d+).*RT\s*(\d+)/;
60 @sorted_keys=sort {$a<=>$b} keys(%num_sns);
61 #$max_val=&list_max(@sorted_keys);
63 open (SUM,">$summary") || die "$!: $summary";
65 print SUM "# Generated by SN at $date $stardate\n";
66 print SUM "# Input file: $input\n";
67 print SUM "#" . "-"x77 . "\n";
68 print SUM "Total number of threads: $n\n";
69 print SUM "# Format: SN: Spark Site N: Number of threads AVG: average RT\n";
70 # . "RTS: Sum of RTs ";
72 foreach $k (@sorted_keys) {
76 #print SUM "SN: $k \tN: $num \tRTS: $rts \tAVG: $avg\n";
77 print SUM "$k \t$num \t$avg\n";
81 open (OUT,">$output") || die "$!: $output";
82 print OUT "# Generated by SN at $date $stardate\n";
83 print OUT "# Input file: $input\n";
84 print OUT "#" . "-"x77 . "\n";
87 foreach $k (@sorted_keys) {
89 $max_val = $num if $num > $max_val;
90 print OUT "$k\t$num\n";
94 do write_gp($gp_file,$ps_file);
96 print "Gnu plotting figures ...\n";
97 system "gnuplot $gp_file";
99 print "Extending thickness of impulses ...\n";
106 # +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
113 if ( &is_elem($sn, @k) ) {
120 # ----------------------------------------------------------------------------
123 local ($x,@list) = @_;
126 for ($found = 0, $y = shift(@list);
127 $#list == -1 || $found;
128 $found = ($x == $y), $y = shift(@list)) {}
133 # ----------------------------------------------------------------------------
135 # -----------------------------------------------------------------------------
137 sub process_options {
140 open(ME,$0) || die "Can't open myself ($0): $!\n";
152 $opt_s =~ s/[\(\)\[\]]//g;
153 @sparks = split(/[,;. ]+/, $opt_s);
155 @sparks = ( 3, 4, 5, 6, 7, 8, 11, 12, 13, 14, 15);
159 print "Usage: $0 [options] <gr-file>\n;";
160 print "Use -h option to get details\n";
165 ($ps_file = $input) =~ s/\.gr/-SN.ps/;
166 ($gp_file = $input) =~ s/\.gr/-SN.gp/;
167 ($summary = $input) =~ s/\.gr/-SN.sn/;
169 #($basename = $gr_file) =~ s/\.gr//;
170 #$rts_file = $basename . ".rts"; # "RTS";
171 #$gran_file = "g.ps"; # $basename . ".ps";
172 #$rts_file = $gr_file;
173 #$rts_file =~ s/\.gr/.rts/g;
178 ($output = $input) =~ s/\.gr/-SN.dat/;
194 # -----------------------------------------------------------------------------
196 sub print_verbose_message {
197 print "Input: $input \tOutput: $output\n";
200 # -----------------------------------------------------------------------------
202 # ToDo: Takes these from global module:
204 # ----------------------------------------------------------------------------
207 local (@file_names) = @_;
209 local ($ps_file_name);
212 #$prg = system "which gp-ext-imp";
213 #print " Using script $prg for impuls extension\n";
214 $prg = $ENV{GRANDIR} ? $ENV{GRANDIR} . "/bin/gp-ext-imp"
215 : $ENV{HOME} . "/bin/gp-ext-imp" ;
217 print " (using script $prg)\n";
220 foreach $file_name (@file_names) {
221 $ps_file_name = $file_name; # NB change to orig !!!!&dat2ps_name($file_name);
222 system "$prg -w $ext_size -g $gray " .
223 $ps_file_name . " " .
224 $ps_file_name . "2" ;
225 system "mv " . $ps_file_name . "2 " . $ps_file_name;
229 # ----------------------------------------------------------------------------
232 local ($gp_file,$ps_file) = @_;
237 $xlabel = "Spark sites";
238 $ylabel = "Number of threads";
239 $xstart = &list_min(@sorted_keys);
240 $xend = &list_max(@sorted_keys);
242 $xtics = ""; "(" . join(',',@sorted_keys) . ")\n";
244 $out_file = $ps_file;
246 open (GP,">$gp_file") || die "$!: $gp_file";
247 print GP "set term postscript \"Roman\" 20\n";
249 # identical to the part in write_gp_record of RTS2gran
251 $str = "set size " . $xsize . "," . $ysize . "\n" .
252 "set xlabel \"" . $xlabel . "\"\n" .
253 "set ylabel \"" . $ylabel . "\"\n" .
255 : "set xrange [" . int($xstart) .":" . int($xend) . "]\n") .
257 ("set yrange [" . (index($logaxes,"y") != -1 ? 1 : 0) . ":$opt_Y]\n") :
259 : "set yrange [" . (index($logaxes,"y") != -1 ? 1 : 0) .
260 ":" . &list_max(2,int($ymax+$ymax/5)) . "]\n")) .
261 ($xtics ne "" ? "set xtics $xtics" : "") .
264 ( $nPEs!=0 ? "set title \"$nPEs PEs\"\n" : "" ) .
267 "set format xy \"%8.8g\"\n" .
268 (index($logaxes,"x") != -1 ?
270 "set nologscale x\n") .
271 (index($logaxes,"y") != -1 ?
273 "set nologscale y\n") .
274 "set output \"" . $out_file . "\"\n" .
275 "plot \"" . $in_file . "\" with impulses\n\n";
280 # ----------------------------------------------------------------------------