[SciPy-user] about weave performance evaluation
Dan Christensen
jdc at uwo.ca
Tue Oct 25 10:43:42 CDT 2005
Pau Gargallo <pau.gargallo at gmail.com> writes:
> I'm not completely sure but it seems to me that there is an error in
> the performance evaluation of pure python, scipy, weave, fortran and
> C++ implementations of the laplace equation solver in
> http://www.scipy.org/documentation/weave/weaveperformance.html
>
> the code used to solve the laplace equation in pure python is:
>
...
>
> my guess is that this implementation overwrites u while running the
> loop. In other terms, when computing the term u[i,j], the terms
> u[i-1,j] and u[i,j-1] are used, and these terms where already modified
> in previous iterations.
> ... comparisons in the execution times would make no sense.
This is discussed at the URL above. Here's what they say:
The expression will use temporaries. Hence, during one iteration, the
computed values at an already computed location will not be used
during the iteration. For instance, in the original for loop, once
the value of u[1,1] is computed, the next value for u[1,2] will use
the newly computed u[1,1] and not the old one. However, since the
numeric expression uses temporaries internally, only the old value of
u[1,1] will be used. This is not a serious issue in this case because
it is known that even when this happens the algorithm will converge
(but in twice as much time, which reduces the benefit by a factor of
2, which still leaves us with a 25 fold increase).
Dan
More information about the SciPy-user
mailing list