This is the mail archive of the
fortran@gcc.gnu.org
mailing list for the GNU Fortran project.
Polyhedron speed comparison (on AMD64)
- From: Tobias Burnus <burnus at net-b dot de>
- To: "'fortran at gcc dot gnu dot org'" <fortran at gcc dot gnu dot org>
- Date: Thu, 30 Nov 2006 20:53:17 +0100
- Subject: Polyhedron speed comparison (on AMD64)
Hi,
First, you remember our big regression for ae on AMD64? This has now
been partially fixed by Uros (using x87 for fmod):
http://www.suse.de/~gcctest/c++bench/polyhedron/polyhedron-summary.txt-2-0.html
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29852
- Until Oct 31: ~18.6s
- Nov 08 to Nov 13: ~31s
- Nov 14 to Nov 29: ~33s
- Nov 30: ~19.2s
Thus we are not yet back at our original speed, maybe one should find
the reason for the extra 2s step at Nov 13/14.
Secondly, I had a look at gas_dyn.f90 using oprofile. We spend 51.8663%
of our time in
150879 51.8663: CS(:NODES) = SQRT(CGAMMA*PRES(:NODES)/DENS(:NODES))
whereas ifort only spends 22% of the time
72621 22.2793: CS(:NODES) = SQRT(CGAMMA*PRES(:NODES)/DENS(:NODES))
In total timing: gfortran: 0m13.999s and ifort 0m7.638s.
A reduce C test case: gcc 0m7.2s and icc 0m2.4s. I filled PR30032.
If anyone has an idea what gfortran or GCC should do better ...
Thirdly, I compared on my computer the current gfortran 4.3.0 of today
with ifort.
The result (and an older result osn the same hardware) can be found at
http://physik.fu-berlin.de/~tburnus/benchmark/polyhedron05.html
Test gfortran 4.3 ifort 9.1
------------ ------------- -----------
ac 13.96 [100] 15.16 [109]
aermod 34.02 [100] 29.84 [ 88]
air 14.87 [100] 13.90 [ 93]
capacita 83.68 [100] 87.19 [104]
channel 12.70 [100] 12.86 [101]
doduc 42.78 [100] 40.68 [ 95]
fatigue 20.93 [100] 11.59 [ 55]
gas_dyn 13.71 [100] 8.52 [ 62]
induct 51.50 [100] 43.71 [ 84]
linpk 26.16 [100](1) 25.92 [ 99]
mdbx 24.50 [100] 21.43 [ 87]
nf 31.79 [100] 26.41 [ 83]
protein 66.19 [100] 60.63 [ 91]
rnflow 37.12 [100] 43.00 [116]
test_fpu 19.65 [100] 17.99 [ 92]
tfft 7.83 [100] 7.78 [100]
------------ ------------- ----------
Geom. Mean 25.71 [100] 23.11 [ 90]
(1) linpk FAILED 1 fails and 4 passes
Value= 25.114499300 Target= 23.100000000 Tolerance= 2.0000000000
Result of May 2006 (there with standard.par test; above with quick.par):
Test g95 gfortran 4.2 gfortran 4.1 ifort 9.0 ifort 9.1 NAGf95
------------ ---------- ---------- ------------- ---------- ---------- ----------
Geom. Mean 33.36[100] 26.16[ 78] 26.49[ 79] 24.10[ 72] 22.99[ 69] 27.95[ 84]
We should check why we get the wrong result in linpk
-- and why we are that slow in fatigue.
Looking at the Polyhedron page for fatigue on AMD64:
Pathscale 5.03, ifort 8.77, gfortran 12.16.
Thus we are really more than half as fast as possible.
At least with the mean speed we have improved: 25.7 vs. 26.2s,
whereas Intel as regressed 22.9 vs. 23.1s.
Tobias