A gather schedule is a communication schedule for collecting an arbitrary set of values from one distributed array (the source array) into the elements of another (the destination array). The selected set of elements is defined by a vector of subscript arrays, with an optional mask array. A gather schedule is described by a collective object with local components of class Gather. The public interface of the Gather class is
class DAD ; class Gather { public : Gather(const DAD* dst, const DAD* src, const int len, const DAD* subs [], const int* subsDat [], const DAD* msk, const int* mskDat) ; void execute(void* dstDat, void* srcDat) ; private : ... } ;