I've benchmarked the llvm 2.3/llvm-gcc-4.2 release against
the stock gfortran compiler from gcc 4.2.4 on a 2.33GHz MacBook Pro
using the '-ffast-math -funroll-loops -msse3 -O3' optimization flags.
llvm-gfortran
Benchmark 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
stock gfortran
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
Currently, llvm-gfortran only outperforms stock gfortran
in code execution for aermod and induct benchmarks. The
llvm-gfortran compiler performs worst on the gas_dyn
benchmark. The ratio of exection times for gfortran to
llvm-gfortran show...
ac 0.814
aermod 1.54
air 0.932
capacita 0.874
channel 0.799
doduc 0.986
fatigue 0.792
gas_dyn 0.413
induct 1.33
linpk 0.997
mdbx 0.878
nf 0.891
protein 1.06
rnflow 0.896
test_fpu 0.836
tfft 0.957
The llvm-gfortran compiler does succeed in lowering the compile times
across the board though.
Jack