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