[Numpy-discussion] Cython numerical syntax revisited
Francesc Alted
faltet@pytables....
Thu Mar 5 07:35:00 CST 2009
A Thursday 05 March 2009, Dag Sverre Seljebotn escrigué:
> Francesc Alted wrote:
> > A Thursday 05 March 2009, Dag Sverre Seljebotn escrigué:
> >> No, one could do the same thing that NumPy does (I think, never
> >> looked into it in detail), i.e:
> >>
> >> decide on dimension to do innermost dynamically from strides and
> >> sizes save the stride in that dimension for each array
> >> for loop using n-dimensional iterator with larger per-loop
> >> overhead: save offsets
> >> for loop on the innermost dimension with lower per-loop
> >> overhead: component-wise operation using offsets and innermost
> >> strides
> >
> > I see. Yes, it seems definitely doable. However, I don't
> > understand very well when you say that you have to "decide on
> > dimension to do innermost dynamically". For me, this dimension
> > should always be the trailing dimension, in order to maximize the
> > locality of data. Or I'm missing something?
>
> For a transposed array (or Fortran-ordered one) it will be the
> leading.
Good point. I was not aware of this subtlity. In fact, numexpr does
not get well with transposed views of NumPy arrays. Filed the bug in:
http://code.google.com/p/numexpr/issues/detail?id=18
> Not sure whether it is possible with other kinds of views
> (where e.g. a middle dimension varies fastest), but the NumPy model
> doesn't preclude it and I suppose it would be possible with
> stride_tricks.
Middle dimensions varying first? Oh my! :)
--
Francesc Alted
More information about the Numpy-discussion
mailing list