Prior to this commit, use of the disco.Session API to broadcast or scatter an array required several steps from the caller.
Allocate memory on worker0
Transfer data from the controller to worker0
Allocate memory on each worker
Broadcast/scatter data from worker0 to all workers
While exposing these steps is necessary for performance, especially when used repeatedly, it can be tedious/error-prone to use for initialization that is only performed once.
This commit adds utility methods Session.broadcast and Session.scatter, which are implemented in terms of the existing lower-level methods Session.broadcast_from_worker0 and Session.scatter_from_worker0. These methods perform the transfer from the controller to worker0, and from worker0 to all other workers.
Prior to this commit, use of the
disco.Session
API to broadcast or scatter an array required several steps from the caller.While exposing these steps is necessary for performance, especially when used repeatedly, it can be tedious/error-prone to use for initialization that is only performed once.
This commit adds utility methods
Session.broadcast
andSession.scatter
, which are implemented in terms of the existing lower-level methodsSession.broadcast_from_worker0
andSession.scatter_from_worker0
. These methods perform the transfer from the controller to worker0, and from worker0 to all other workers.