Selaa lähdekoodia

Add a program to parse the logfile for some interesting statistics

Ian Goldberg 14 vuotta sitten
vanhempi
commit
9fa203afbe
1 muutettua tiedostoa jossa 70 lisäystä ja 0 poistoa
  1. 70 0
      logparse.pl

+ 70 - 0
logparse.pl

@@ -0,0 +1,70 @@
+#!/usr/bin/perl
+
+use strict;
+
+my %workingon = ();
+my @probmults = ();
+my $totMmults = 0;
+my @probend = ();
+
+my @Nfiles = ('N-44', 'N-54', 'N-60', 'N-66', 'N-72', 'N-76', 'N-80',
+    'N-84', 'N-88');
+
+# Read the moduli for each of the subproblems
+my @moduli = (0);
+my $f;
+for (1..20) {
+    foreach $f (@Nfiles) {
+	open(N, $f);
+	while(<N>) {
+	    if (/^\[(\d+\s*)+\]/) {
+		while(/(\d+)/g) {
+		    push @moduli, $1;
+		}
+	    }
+	}
+	close(N);
+	push @probend, [$#moduli, $f];
+    }
+}
+
+while(<>) {
+    chomp;
+    next unless /^(\d+\.\d+):(.*?):(.*)$/;
+    my ($ts, $node, $line) = ($1,$2,$3);
+    if ($line =~ /Subproblem (\d+)/) {
+	$workingon{$node} = $1;
+    }
+    if ($line =~ /(\d+) us \/ (\d+) = \d+ us \/ (\d+) = \d+ ns/) {
+	my $numMmults = $2 * $3 / 1000000;
+	my $elapsed = $1;
+	if ($workingon{$node} > 0) {
+	    $probmults[$workingon{$node}] += $numMmults;
+	    $totMmults += $numMmults;
+	    $workingon{$node} = 0;
+	} else {
+	    warn "Node $node completed at $ts but not working\n";
+	}
+    }
+}
+
+my $p;
+my $tpm = 0;
+for ($p=1; $p <= $#probmults; ++$p) {
+    my $m = $probmults[$p];
+    $tpm += $m;
+    my $r = $moduli[$p];
+    my $lr = int(log($r)/log(2))+1;
+    my $l = log($m*1000000)/log(2);
+    my $k = $m*1000000/sqrt($r);
+    printf "%4d %15.1f Mmults = 2^%.1f = %10.2f * sqrt(r_%d)\n",
+	$p, $m, $l, $k, $lr;
+    if ($p == $probend[0]->[0]) {
+	printf "\n%4s %15.1f Mmults = 2^%.1f\n\n", $probend[0]->[1],
+	    $tpm, log($tpm*1000000)/log(2);
+	$tpm = 0;
+	shift @probend;
+    }
+}
+printf "\n tot %15.1f Mmults = 2^%.1f\n",
+    $totMmults, log($totMmults*1000000)/log(2);