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@scipy.org > https://mail.scipy.org/mailman/listinfo/numpy-discussion _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org https://mail.scipy.org/mailman/listinfo/numpy-discussion