| ##=== 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]+)"], |
| ); |