void SayHi(HiMsg *m) { redNo ++; CmiAssert(m->data[0] == 22 && m->data[1] == 28); CkGetSectionInfo(sid, m); CkMulticastMgr *mg = CProxy_CkMulticastMgr(mCastGrpId).ckLocalBranch(); int dataSize = (int)(CompleteMsgSize); int* data = new int [dataSize]; int fragSize = dataSize/NumFrags; CkAssert (0 != fragSize); for (int i=0; i<dataSize; i++) { data [i] = thisIndex; } CkCallback cb(CkIndex_Hello::cb_client(NULL), CkArrayIndex1D(0), thisProxy); mg->contribute(dataSize*sizeof(int), data,CkReduction::sum_int, sid, cb, fragSize*sizeof(int)); // data[0] = thisIndex+2; // data[1] = thisIndex+2; // mg->contribute(2*sizeof(int), &data,CkReduction::max_int, sid, sizeof(int)); // data[0] = thisIndex+1; // data[1] = thisIndex+1; // mg->contribute(2*sizeof(int), &data,CkReduction::product_int, sid, sizeof(int)); delete m; if (1) ckMigrate((CkMyPe()+1)%CkNumPes()); }
void SayHi(HiMsg *m) { // CkPrintf("[%d] Hi[%d] from element %d\n",CmiMyPe(), m->data[0],thisIndex); CmiAssert(m->data[0] == 22 && m->data[1] == 28); CkGetSectionInfo(sid, m); //CmiPrintf("[%d] SayHi: sid on %d %p\n", CmiMyPe(), sid.pe, sid.val); CkMulticastMgr *mg = CProxy_CkMulticastMgr(mCastGrpId).ckLocalBranch(); int data = thisIndex; CkCallback cb(CkIndex_Hello::cb_client(NULL), CkArrayIndex1D(0), thisProxy); mg->contribute(sizeof(int), &data,CkReduction::sum_int, sid, cb); data = thisIndex+2; mg->contribute(sizeof(int), &data,CkReduction::max_int, sid); data = thisIndex+1; mg->contribute(sizeof(int), &data,CkReduction::product_int, sid); delete m; if (1) ckMigrate((CkMyPe()+1)%CkNumPes()); }