[LLVMdev] llvm-gfortran polyhedron 2005 results [corrected]
Jack Howarth
howarth at bromo.msbb.uc.edu
Fri Jun 20 06:46:04 PDT 2008
The previously posted benchnarks for gcc vs
llvm-gfortran had one mistake. I was actually had
the gfortran for 4.3.1 installed instead of that
from gcc 4.2.4. Below are the polyhedron benchmark
results for all three compilers...
gfortran 4.2.4
Benchmark Compile Executable Ave Run Number Estim
Name (secs) (bytes) (secs) Repeats Err %
--------- ------- ---------- ------- ------- ------
ac 1.16 10000 18.30 10 0.0866
aermod 60.57 10000 30.90 10 0.0385
air 3.34 10000 10.85 10 0.0971
capacita 1.49 10000 63.58 32 0.1145
channel 0.81 10000 6.29 10 0.0242
doduc 5.98 10000 47.94 10 0.0921
fatigue 3.48 10000 16.00 10 0.0841
gas_dyn 2.18 10000 22.91 33 0.0779
induct 6.93 10000 68.95 10 0.0145
linpk 0.59 10000 31.06 12 0.0591
mdbx 1.71 10000 14.94 12 0.0504
nf 0.94 10000 33.98 10 0.0897
protein 2.89 10000 51.03 10 0.0890
rnflow 3.43 10000 43.20 11 0.0924
test_fpu 2.75 10000 15.05 10 0.0736
tfft 0.46 10000 2.94 14 0.0833
Geometric Mean Execution Time = 22.58 seconds
gfortran 4.3.1
Benchmark Compile Executable Ave Run Number Estim
Name (secs) (bytes) (secs) Repeats Err %
--------- ------- ---------- ------- ------- ------
ac 3.96 10000 15.74 12 0.0413
aermod 56.13 10000 34.64 12 0.0530
air 3.15 10000 10.57 12 0.0700
capacita 1.67 10000 58.43 23 0.0980
channel 0.82 10000 3.77 10 0.0763
doduc 6.41 10000 48.20 10 0.0705
fatigue 2.55 10000 13.40 10 0.0590
gas_dyn 2.67 10000 11.09 25 0.0926
induct 5.10 10000 90.26 10 0.0782
linpk 1.03 10000 30.20 11 0.0957
mdbx 1.99 10000 15.47 12 0.0894
nf 2.30 10000 31.97 12 0.0789
protein 4.26 10000 50.58 10 0.0867
rnflow 6.41 10000 42.79 12 0.0772
test_fpu 5.84 10000 14.11 13 0.0725
tfft 1.08 10000 2.89 12 0.0940
Geometric Mean Execution Time = 20.64 seconds
llvm-gfortran
Compile Executable Ave Run Number Estim
Name (secs) (bytes) (secs) Repeats Err %
--------- ------- ---------- ------- ------- ------
ac 0.38 10000 19.33 10 0.0337
aermod 33.57 10000 22.56 12 0.0205
air 2.00 10000 11.34 10 0.0489
capacita 0.65 10000 66.82 30 0.1579
channel 0.66 10000 4.72 13 0.0949
doduc 2.30 10000 48.87 10 0.0696
fatigue 1.18 10000 16.91 10 0.0951
gas_dyn 1.08 10000 26.84 18 0.0810
induct 2.33 10000 68.04 10 0.0221
linpk 0.62 10000 30.30 14 0.0494
mdbx 1.26 10000 17.62 10 0.0350
nf 0.67 10000 35.87 10 0.0555
protein 1.48 10000 57.71 10 0.0866
rnflow 1.79 10000 47.78 10 0.0487
test_fpu 1.58 10000 16.88 12 0.0470
tfft 0.54 10000 3.02 12 0.0545
Geometric Mean Execution Time = 23.04 seconds
The ratio of the execution times for each test with
FSF gfortran to that in llvm-gfortran 4.2.1 are then...
gfortran gfortran
4.2.4 4.3.1
ac 0.947 0.814
aermod 1.36 1.54
air 0.957 0.932
capacita 0.952 0.874
channel 1.33 0.799
doduc 0.981 0.986
fatigue 0.946 0.792
gas_dyn 0.854 0.413
induct 1.01 1.33
linpk 1.03 0.997
mdbx 0.848 0.878
nf 0.947 0.891
protein 0.884 1.06
rnflow 0.904 0.896
test_fpu 0.892 0.836
tfft 0.974 0.957
Interestingly, there appears to be a regression in
the performance of the induct test in gcc 4.3.1
(at least for the -ffast-math -funroll-loops -msse3 -O3
compiler flags). I'll look into this tonight to see
if any of these flags alone can produce this speed
reduction between gfortran 4.2.4 and 4.3.1 on the
induct test.
Jack
ps The corrected results do show that llvm-gfortran
4.2.1 isn't performing quite as bad against the same
major release of FSF gfortran. It does suggest we
would do well to get llvm-gcc resync'ed to gcc 4.3.
More information about the llvm-dev
mailing list