Functionality to Broadcast large buffers using the nocopy API
#3 Updated by Nitin Bhat 3 months ago
Implementational Scheme for Nocopy API (1 source - n destinations)
1. When `CkNcpySource` is passed over a proxy that is not an element proxy, but a collection proxy, we determine the recipient PEs (similar to the way we do right now), and construct a spanning tree. Then, to the first immediate children, we send the original `CkNcpySource` object and these immediate children, perform `bcast_rget`.
2. A `bcast_rget` method is implemented as a function of two operations
- perform the rget from the received `CkNcpySource`
- on completion of `rget`, transform the `CkNcpyDestination` into `CkNcpySource` and forward it to my children
3. The source callback is invoked when all its children (only immediate descendants) have received the data and it is safe for the source to modify/free the pointers
On other nodes, the callback is invoked when the node itself has received the data and all its children (immediate descendants) have received the data.