Reduction functions with pre-allocated output storage. #6197
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Inplace reduction functions (including
sum!
,prod!
,maximum!
,minimum!
,all!
, andany!
) have been in the Base for a while (without being exported). This PR exports them with a modified interface that is safe & flexible.The interface is defined as:
The function reduces
A
tor
along dimensions determined by the size ofr
andA
. This behavior has been in the Base before this PR. What I modify is to add aninit
keyword argument, such that wheninit
istrue
(default), it initializesr
properly before doing the reduction, and wheninit
isfalse
, it simply accumulatesA
tor
.A few downstream packages rely on these functions, so that they can do reduction along certain dimensions without allocating new arrays.