Avoid msg creation when contributing a pointer to a streamable reduction
ckreduction currently optimizes for streamable reductions by combining messages as they arrive, but this doesn't avoid the creation of many messages in the first place, which is unnecessary if the user passes a pointer to contribute() and the reducer is streamable.
- Target version deleted (
The idea here is that the first contributor on a PE creates the message and all subsequent contributors on that PE contribute directly into that 1 message. This obviously only works for constant sized messages or if doing a gather with fixed size contributions. Also, this requires a new API, since we can't safely assume that the value passed to contribute() is a pointer that will persist beyond the current scope of that call.