##=== TEST.dsgraph.report - Report description for dsgraph -----*- perl -*-===## # # This file defines a report to be generated for the dsgraph test. # ##===----------------------------------------------------------------------===## $SortNumeric = 1; # Sort numerically, not textually. $TrimAllDirectories = 1; # Trim off benchmark directories. $SortCol = 2; # Sort by #MemInstrs $SortReverse = 1; # Sort in descending order # Helper function sub Ratio { my ($Cols, $Col) = @_; if ($Cols->[$Col-2] ne "*" and $Cols->[$Col-2] != "0") { return sprintf("%4.1f%%", 100*($Cols->[$Col-1]/$Cols->[$Col-2])); } else { return "n/a"; } } sub TypeSafeRatio { my ($Cols, $Col) = @_; my $TS = $Cols->[$Col-2]; my $NTS = $Cols->[$Col-1]; $TS = 0 if ($TS eq "*"); $NTS = 0 if ($NTS eq "*"); if ($TS + $NTS != 0) { return sprintf("%4.1f%%", 100*$TS/($TS+$NTS+0.0)); } else { return "n/a"; } } sub FormatSize { my $Size = shift; if ($Size > 10*1024*1024) { return (int $Size*10 / (1024*1024))/10 . "MB"; } elsif ($Size > 10*1024) { return (int $Size / 1024); } else { return $Size . "B"; } } sub NoStar { return "0" if ($_[0] eq '*'); return $_[0]; } sub NoCallNodes { $_[0] =~ m/([0-9]+)\+/; return $1; } # For latex output, limit benchmarks and rename as appropriate @LatexRowMapOrder = ( '-' => '-', '181.mcf' => '181.mcf', '256.bzip2' => '256.bzip2', '164.gzip' => '164.gzip', '175.vpr' => '175.vpr', '197.parser' => '197.parser', '186.crafty' => '186.crafty', '300.twolf' => '300.twolf', '255.vortex' => '255.vortex', '254.gap' => '254.gap', '252.eon' => '252.eon', '253.perlbmk' => '253.perlbmk', '176.gcc' => '176.gcc', '-' => '-', '179.art' => '179.art', '183.equake' => '183.equake', '171.swim' => '171.swim', '172.mgrid' => '172.mgrid', '168.wupwise' => '168.wupwise', '173.applu' => '173.applu', '188.ammp' => '188.ammp', '177.mesa' => '177.mesa', '-' => '-', '129.compress' => '129.compress', '130.li' => '130.li', '124.m88ksim' => '124.m88ksim', '132.ijpeg' => '132.ijpeg', '099.go' => '099.go', '134.perl' => '134.perl', '147.vortex' => '147.vortex', '126.gcc' => '126.gcc', '-' => '-', '102.swim' => '102.swim', '101.tomcatv' => '101.tomcatv', '107.mgrid' => '107.mgrid', '145.fpppp' => '145.fpppp', '104.hydro2d' => '104.hydro2d', '110.applu' => '110.applu', '103.su2cor' => '103.su2cor', '146.wave5' => '146.wave5', '-' => '-', 'fpgrowth' => 'fpgrowth', 'bsim' => 'boxed-sim', 'namd' => 'NAMD', 'povray' => 'povray31', ); @LxxatexColumns = (1, 2, 19, # LOC, #MemInstrs, MaxSCC 15,16, # Total/Collapsed nodes 17, 18); # Max Size, GG Size @LatexColumns = (2, 21, 22, 23); # Type safety numbers # Specify how to format columns nicely for printing... %LatexColumnFormat = ( # 11 => \&FormatSize, # 12 => \&FormatSize, 16 => \&NoStar, 15 => \&NoCallNodes, 18 => \&NoCallNodes ); @Graphs = (["scatter", "timeVmem.txt", 27, 7], ["scatter", "timeVloc.txt", 1, 7]); # These are the columns for the report. The first entry is the header for the # column, the second is the regex to use to match the value. Empty list create # seperators, and closures may be put in for custom processing. my $USERSYSTTIME = '([0-9.]+)[ 0-9.]+\([^)]+\)[ 0-9.]+\([^)]+\) +'; ( # Name ["Name:" , '\'([^\']+)\' Program'], ["LOC:" , 'LOC: *([0-9]+)'], ["MemInsts", '([0-9]+).*Number of memory instructions'], [], # Misc stuff ["NumNodes", "TOTALNODES: *([0-9]+)"], ["NumFold", "FOLDEDNODES: *([0-9]+)"], [], ["TypeSafeO", "ACCESSES TYPED_O: *([0-9]+)"], ["NonTypeO", "ACCESSES UNTYPED_O: *([0-9]+)"], ["TSO%" , sub { return TypeSafeRatio(@_); }], [], ["TypeSafe", "ACCESSES TYPED: *([0-9]+)"], ["NonType", "ACCESSES UNTYPED: *([0-9]+)"], ["TS%" , sub { return TypeSafeRatio(@_); }], [], ["Ign", "IGN: *([0-9]+)"], ["GEP-Ign", "GEPI: *([0-9]+)"], ["Type0", "ACCESSES TYPED0: *([0-9]+)"], ["Type1", "ACCESSES TYPED1: *([0-9]+)"], ["Type2", "ACCESSES TYPED2: *([0-9]+)"], ["Type3", "ACCESSES TYPED3: *([0-9]+)"], ["Type4", "ACCESSES TYPED4: *([0-9]+)"], ["I", "ACCESSES I: *([0-9]+)"], ["E", "ACCESSES E: *([0-9]+)"], ["F", "ACCESSES F: *([0-9]+)"], ["U", "ACCESSES U: *([0-9]+)"], ["I2P", "ACCESSES I2P: *([0-9]+)"], # Nodes Folded [], ["GEPFUNC", "GEP_CALLS: *([0-9]+)"], ["ARGSMPL", "ARG_SMPL: *([0-9]+)"], ["FUNCSPEC", "CLONED_FUNCSPEC: *([0-9]+)"], ["INDCLONE", "CLONED_INDCLONE: *([0-9]+)"], ["I2PB", "I2PB: *([0-9]+)"], ["I2PS", "I2PS: *([0-9]+)"], ["EV", "EV: *([0-9]+)"], ["AL", "ALLOC: *([0-9]+)"], ["DE", "DEALLOC: *([0-9]+)"], ["CAST", "CAST: *([0-9]+)"], ["Calls", "INDCALLS: *([0-9]+)"], [], ["DTotal", "DTOTAL: *([0-9]+)"], ["DSafe", "DSAFE: *([0-9]+)"], ["DTS%" , sub { return Ratio(@_); }], [], ["DTotalO", "DTOTALO: *([0-9]+)"], ["DSafeO", "DSAFEO: *([0-9]+)"], ["DTS%" , sub { return Ratio(@_); }], #[], #["LoadChk", "LCHK: *([0-9]+)"], #["StoreChk", "SCHK: *([0-9]+)"], [], ["OptTime", "OPT-RUN_TIME: program *([.0-9]+)"], ["TcTime", "TC-RUN_TIME: program *([.0-9]+)"], ["TcdTime", "TCD-RUN_TIME: program *([.0-9]+)"], ["TcoTime", "TCO-RUN_TIME: program *([.0-9]+)"], ["TcooTime", "TCOO-RUN_TIME: program *([.0-9]+)"], ["Tcoo1Time", "TCOO1-RUN_TIME: program *([.0-9]+)"], );