This is the mail archive of the fortran@gcc.gnu.org mailing list for the GNU Fortran project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]