[Numpy-discussion] New iterator APIs (nditer / MapIter): Overlap detection in NumPy
Pauli Virtanen
pav at iki.fi
Sun Sep 11 17:21:13 EDT 2016
Hi,
In the end some further API additions turn out to appear needed:
* NPY_ITER_COPY_IF_OVERLAP, NPY_ITER_OVERLAP_NOT_SAME
flags for NpyIter_New.
* New API function PyArray_MapIterArrayCopyIfOverlap,
as ufunc.at needs to check overlaps for index arrays
before constructing iterators, and the parsing is done
in multiarray.
Continuation here: https://github.com/numpy/numpy/pull/8043
Wed, 07 Sep 2016 18:02:59 +0200, Sebastian Berg kirjoitti:
> Hi all,
>
> Pauli just opened a nice pull request [1] to add overlap detection to
> the new iterator, this means adding a new iterator flag:
>
> `NPY_ITER_COPY_IF_OVERLAP`
>
> If passed to the iterator (also exposed in python), the iterator will
> copy the operands such that reading and writing should only occur for
> identical operands. For now this is implemented by always copying the
> output/writable operand (this could be improved though, so I would not
> say its fixed API).
>
> Since adding this flag is new API, please feel free to suggest other
> names/approaches or even decline the change ;).
>
>
> This is basically a first step, which should be easily followed by
> adding overlap detection to ufuncs, removing traps such as the well (or
> not so well known) `a += a.T`. Other parts of numpy may follow one by
> one.
>
> The work is based on his older awesome new memory overlap detection
> implementation.
>
> If there are no comments, I will probably merge it very soon, so we can
> look at the follow up things.
>
> - Sebastian
>
>
> [1] https://github.com/numpy/numpy/
pull/8026_______________________________________________
> NumPy-Discussion mailing list NumPy-Discussion at scipy.org
> https://mail.scipy.org/mailman/listinfo/numpy-discussion
More information about the NumPy-Discussion
mailing list