A product schedule is a communication schedule for multiplying together all elements of a distributed array (the source array). A product schedule is described by a collective object with local components of class Product. The public interface of the Product class is
class DAD ; template<class T> class Product { public : Product(const DAD* src) ; void execute(T* res, T* srcDat) ; private : ... } ;