Feature #1116: AMPI broadcasts should be [nokeep]
AMPI scatter(v) performance is poor
This is a performance bug: we currently do the naive method of sending 'p' individual messages from the root to the 'p' ranks in the communicator.
Once broadcasts are [nokeep], using them for scatter and scatterv (and having the recv'er offset into the buffer) will not be so wasteful of memory and will be much more efficient than the current approach.
#3 Updated by Sam White over 2 years ago
This is not so nice for Scatterv because the displs argument is only relevant at the root (users can pass NULL from the non-root ranks). That means that we would need to send the displ array along with the data message in order to properly offset into the bcast array at the receiver, so we need to add the displ array before the scatterv data in the message payload. This makes the size of the nokeep message even larger than it will already be at every Node/PE. This could still perform better than individual messages for some #ranks and message sizes though...
#5 Updated by Sam White over 2 years ago
- Status changed from Implemented to In Progress
- Target version changed from 6.8.0 to 6.8.1
- Subject changed from AMPI scatter should use a [nokeep] broadcast to AMPI scatter(v) performance is poor
We can wait until we have a Charm++ scatter operation to use in AMPI.