A multishift schedule is a communication schedule for shifting the elements of a distributed array along some or all of its dimensions concurrently, placing the result in another array. The source and destination must have the same shape and same element-type, and they must have a certain alignment relation.
A multishift schedule is described by a collective object with local components of class MultiShift. The public interface of the MultiShift class is
class DAD ; enum Mode {CYCL, EDGE, NONE} ; class MultiShift { public : MultiShift(const DAD* dst, const DAD* src, const int len, int shift [], Mode mode []) ; void execute(void* dstDat, void* srcDat) ; private : ... } ;