Fortran comparison Re: [SciPy-dev] scipy.weave versus simple C++.

Pearu Peterson pearu at cens.ioc.ee
Sat Jan 12 17:30:32 CST 2002


On Sat, 12 Jan 2002, eric wrote:

> > Iterations took  6.12530398369  seconds.
> > Fortran iterations took  3.15447306633  seconds.
> 
> Hey!  That is larger than I would have expected.  Fortran often has a slight
> advantage ( a few percent), but not a factor of 2.  Several things could be
> in play here.
> 
> (1) Prabhu and I have no clue how to set compiler switches in gcc for best
> results. (very possible)
> (2) Your using a better optimizing Fortran compiler (wonder what the Intel
> or KAI compiler would do on the C++ code).  Which one are you using?  If it
> is g77, then this is exhibit A for supporting (1).
> (3) If comparisons are made against Prabhu's C++ code instead of my
> extension module which (mis) uses blitz++ arrays for indexing, would only
> show a 33% improvement.  Correct?  This is starting to be more what I'd
> expect.

I used the same code (laplace.py) that was in your message to this list.

> 
> Anyway, I'd be surprised if the difference is this great in the final
> analysis -- I'll bet less than 10% difference either way.

I used g77 in these tests. But indeed, also with heavy optimizations
switches turned on. Here are other results with different optimization
flags enabled:

1) g77 -02                                           (standard)
Iterations took  6.34938693047  seconds.
Error:  38047.7567709
Fortran iterations took  3.69506299496  seconds.
Error:  21778.5117188

2) g77                                             (no optimization)
Iterations took  6.44155204296  seconds.
Error:  38047.7567709
Fortran iterations took  3.82356095314  seconds.
Error:  21778.5117188

3) g77 -O3 -funroll-loops  -march=i686  -malign-double   (machine depend.)
Iterations took  6.34858202934  seconds.
Error:  38047.7567709
Fortran iterations took  3.29500699043  seconds.
Error:  21778.5117188

4) ifc -O3  -tpp6 -xi      (this is Intel Fortran 90 compiler for Linux)
Iterations took  6.38630092144  seconds.
Error:  38047.7567709
Fortran iterations took  2.84432804585  seconds.
Error:  21779.0996094


Note that even without any optimization and with g77, the factor is still
quite high: 1.6. And with Intel compiler this is 2.2.
So, I would not be so pessimistic about Fortran capabilities. I guess that
these numbers also depend on the particular test, and the current one just
fits for Fortran. Anyway, I don't think that people would use Fortran if
the gain in speed would be only few percent. It must be higher than that.

Regards,
	Pearu




More information about the Scipy-dev mailing list