Hi Stefan & All, On Sun, May 25, 2008 at 8:59 PM, Stéfan van der Walt wrote: > Hi Andrea > > 2008/5/25 Andrea Gavana <[EMAIL PROTECTED]>: >>> When you bench the Cython code, you'll have to take out the Python >>> calls (for checking dtype etc.), otherwise you're comparing apples and >>> oranges. After I tweaked it, it ran roughly the same time as >>> Francesc's version. But like I mentioned before, the Fortran results >>> should trump all, so what is going on here? >> >> I thought I had removed the Python checks from the Cython code (if you >> look at the attached files), but maybe I haven't removed them all... >> about Fortran, I have no idea: I have 6 different implementations in >> Fortran, and they are all slower than the pure NumPy ones. I don't >> know if I can optimiza them further (I have asked to a Fortran >> newsgroup too, but no faster solution has arisen). I am not even sure >> if the defaults f2py compiler options are already on "maximum >> optimization" for Fortran. Does anyone know if this is true? Maybe >> Pearu can shed some light on this issue... > > Here are the timings on my machine. You were right -- you did remove > the type checks in the Cython code. It turns out the bottleneck was > the "for i in range" loop. I was under the impression that loop was > correctly optimised; I'll have a chat with the Cython developers. If > I change it to "for i in xrange" or "for i from 0 <= i < n" the speed > improves a lot. > > I used gfortran 4.2.1, and as you can see below, the Fortran > implementation beat all the others. > > --------------------------------------------------------------------- > Number Of Cells: 300000 > --------------------------------------------------------------------- > | Rank | Method Name | Execution Time | Relative Slowness | > --------------------------------------------------------------------- > 1 Fortran 5 (James) 0.01854820 1.00000 > 2 Fortran 6 (James) 0.01882849 1.01511 > 3 Fortran 1 (Mine) 0.01917751 1.03393 > 4 Fortran 4 {Michael) 0.01927021 1.03893 > 5 Fortran 2 (Mine) 0.01937311 1.04447 > 6 NumPy 4 (Nathan-Vector) 0.02008982 1.08311 > 7 NumPy 2 (Nathan) 0.02046990 1.10361 > 8 NumPy 5 (Andrea) 0.02108521 1.13678 > 9 NumPy 1 (Francesc) 0.02211959 1.19255 > 10 Cython (Stefan) 0.02235680 1.20533 > 11 Fortran 3 (Alex) 0.02486629 1.34063 > 12 NumPy 3 (Peter) 0.05020461 2.70671 > ---------------------------------------------------------------------
Thank you for the tests you have run. I have run mine with Compaq Visual Fortran 6.6 on Windows XP, and I assume I can not use gfortran with MS visual studio 2003 (which is the compiler Python is built with). So the only option I have is to try Intel Visual Fortran, which I will do tomorrow, or stick with the numpy implementation as it looks like there is nothing more I can do (even with sorted arrays or using another approach, and I can't think of anything else) to speed up my problem. A big thank you to everyone in this list, you have been very kind and helpful. Andrea. "Imagination Is The Only Weapon In The War Against Reality." http://xoomer.alice.it/infinity77/ _______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://projects.scipy.org/mailman/listinfo/numpy-discussion