[LLVMdev] -fplugin-arg-dragonegg-enable-gcc-optzns status

Jack Howarth howarth at bromo.med.uc.edu
Thu Jun 9 06:18:46 PDT 2011


Duncan,
    Below are the tabulated compile times and executable sizes.

A) gcc 4.5.4svn using -msse3 -ffast-math -O3 -fno-tree-vectorize
B) gcc 4.5.4svn/dragonegg using -msse3 -ffast-math -O3 -fno-tree-vectorize -fplugin-arg-dragonegg-enable-gcc-optzns
C) gcc 4.5.4svn/dragonegg using -msse3 -ffast-math -O3 -fno-tree-vectorize

Compile time (seconds)

Benchmark     A) stock    B) gcc 4.5.4/    C) gcc 4.5.4/
               gcc 4.5.4   dragonegg/optzns    dragonegg

ac                0.61        1.65           0.32
aermod           31.24       25.83          21.02 
air               1.74        1.49           0.81
capacita          0.83        0.80           0.44
channel           0.34        0.33           0.25
doduc             3.09        2.63           1.63
fatigue           1.04        1.08           0.84
gas_dyn           0.91        0.95           0.75
induct            3.18        2.57           1.73
linpk             0.34        0.30           0.21
mdbx              1.08        1.01           0.59
nf                0.39        0.41           0.28 
protein           1.55        1.29           0.97
rnflow            1.76        1.73           1.26
test_fpu          1.38        1.40           1.05
tfft              0.31        0.28           0.19

mean              3.11        2.73           2.02 

Executable size (bytes)

Benchmark     A) stock    B) gcc 4.5.4/    C) gcc 4.5.4/
               gcc 4.5.4   dragonegg/optzns    dragonegg

ac              26344        30896           26704
aermod        1145924      1043816         1052056
air             57404        57700           53532
capacita        40864        41008           37064
channel         22448        22664           22664
doduc          127340       124108          120124
fatigue         61152        65352           65664
gas_dyn        647864        58768 !!!       59024
induct         162360       180440          175312
linpk           18112        18848           18864
mdbx            53464        57652           49516
nf              22560        23784           24080 
protein         74320        74440           74816
rnflow          66040        71488           71648
test_fpu        52624        58224           58320
tfft            18416        18456           18600

The compile times with optzns are 26% slower than stock dragonegg
but 12% faster than stock gcc 4.5.4. The most interesting executable
size difference is gas_dyn which fastest with optzns but 11x larger
in size with stock gcc 4.5.4 compared to either stock dragonegg or
dragonegg with optzns. This is likely much improved in gcc 4.6 with
the new -fwhole-file default.

On Thu, Jun 09, 2011 at 09:51:51AM +0200, Duncan Sands wrote:
> Hi Jack, thanks for these numbers.  Can you also please measure compile times?
> I'm thinking of enabling gcc optimizations by default, but I don't want to
> increase compile times, which means choosing a value for the
> -fplugin-arg-dragonegg-llvm-ir-optimize option that is low enough to get good
> compile times, yet high enough to get fast code.  It would be great if you could
> play around with this to find a good choice.
> 
> Best wishes, Duncan.
> 
> >    Current dragonegg svn has all of the -fplugin-arg-dragonegg-enable-gcc-optzns bugs for
> > usage with -ffast-math -O3 addressed except for those related to PR2314. Using the -fno-tree-vectorize
> > option, we can evaluate the current state of -fplugin-arg-dragonegg-enable-gcc-optzns with
> > the Polyhedron 2005 benchmarks compared to stock dragonegg and stock gcc 4.5.4. The runtime
> > benchmarks below show that we average slightly faster than stock gcc 4.5.4 and significantly
> > faster than stock dragonegg through the use of -fplugin-arg-dragonegg-enable-gcc-optzns.
> >
> > x86_64 darwin
> >
> > A) gcc 4.5.4svn using -msse3 -ffast-math -O3 -fno-tree-vectorize
> > B) gcc 4.5.4svn/dragonegg using -msse3 -ffast-math -O3 -fno-tree-vectorize -fplugin-arg-dragonegg-enable-gcc-optzns
> > C) gcc 4.5.4svn/dragonegg using -msse3 -ffast-math -O3 -fno-tree-vectorize
> >
> >
> > Benchmark     A) stock    B) gcc 4.5.4/    C) gcc 4.5.4/
> >                gcc 4.5.4   dragonegg/optzns    dragonegg
> >
> > ac               9.58          9.13            12.30
> > aermod          20.88         16.10            17.62
> > air              6.16          6.59             7.70
> > capacita        35.68         39.94            46.22
> > channel          2.03          2.04             1.96
> > doduc           28.28         28.43            30.41
> > fatigue          8.13          7.19            10.40
> > gas_dyn         10.10          9.83            11.73
> > induct          20.17         20.76            48.76
> > linpk           15.42         15.65            15.69
> > mdbx            11.42         11.73            12.07
> > nf              27.99         28.60            29.39
> > protein         38.36         39.08            39.98
> > rnflow          27.28         28.19            31.90
> > test_fpu        11.43         11.17            11.50
> > tfft             1.91          1.95             2.16
> >
> > Mean            12.72         12.62            14.71
> >
> > Once vector_select() is implemented we can retest without -fno-tree-vectorize.
> >
> > _______________________________________________
> > LLVM Developers mailing list
> > LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> 
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev



More information about the llvm-dev mailing list