[Numpy-discussion] could anyone check on a 32bit system?

Sebastian Berg sebastian at sipsolutions.net
Wed May 1 16:01:00 EDT 2013


On Wed, 2013-05-01 at 15:29 -0400, Yaroslav Halchenko wrote:
> just for completeness... I haven't yet double checked if I have done it
> correctly but here is the bisected commit:
> 
> aed9925a9d5fe9a407d0ca2c65cb577116c4d0f1 is the first bad commit
> commit aed9925a9d5fe9a407d0ca2c65cb577116c4d0f1
> Author: Mark Wiebe <mwiebe at enthought.com>
> Date:   Tue Aug 2 13:34:13 2011 -0500
> 
>     ENH: ufunc: Rewrite PyUFunc_Reduce to be more general and easier to adapt to NA masks
>     
>     This generalizes the 'axis' parameter to accept None or a list of
>     axes on which to do the reduction.
> 
> :040000 040000 2bdd71a1ea60c0dbfe370c77f69724fab28038e1 44f54a15f480ccaf519d10e9c42032de86bd0dca M      numpy
> bisect run success
> 
> FWIW ( ;-) ):
> 

There really is no point discussing here, this has to do with numpy
doing iteration order optimization, and you actually *want* this. Lets
for a second assume that the old behavior was better, then the next guy
is going to ask: "Why is np.add.reduce(array, axis=0) so much slower
then reduce(array, np.add)?". This is huge speed improvement by Marks
new iterator for reductions over the slow axes, so instead of trying to
track "regressions" down, I think the right thing is to say kudos for
doing this improvement :).

Just my opinion,

Sebastian

> # git describe --tags aed9925a9d5fe9a407d0ca2c65cb577116c4d0f1
> v0.3.0-7757-gaed9925
> 
> # git describe --tags --contains aed9925a9d5fe9a407d0ca2c65cb577116c4d0f1
> v1.7.0b1~377^2~126
> 
> 
> On Wed, 01 May 2013, Robert Kern wrote:
> 
> > On Wed, May 1, 2013 at 6:24 PM, Matthew Brett <matthew.brett at gmail.com> wrote:
> > > HI,
> 
> > > On Wed, May 1, 2013 at 9:09 AM, Yaroslav Halchenko <lists at onerussian.com> wrote:
> 
> > >> 3. they are identical on other architectures (e.g. amd64)
> 
> > > To me that is surprising.  I would have guessed that the order is the
> > > same on 32 and 64 bit, but something about the precision of
> > > intermediate operations is different.   I don't know enough about
> > > amd64 to guess what that could be.  Bradley's suggestion seems kind of
> > > reasonable but it's strange that numpy should use intel-80 bit
> > > intermediate values differently for 32 and 64 bit.
> 
> > "numpy" isn't doing anything different between the two. numpy
> > generates the same C code. The C compiler may be generating different
> > machine instructions for that code on different architectures, even
> > closely related ones like i386 and amd64. Different optimization flags
> > and compiler versions will probably also affect this, not just the
> > target architecture. It's possible that those are actually the source
> > of this observation.





More information about the NumPy-Discussion mailing list