ckmulticast: Simplify reduceFragment() signature
authorRamprasad Venkataraman <ramv@illinois.edu>
Fri, 12 Nov 2010 19:27:32 +0000 (13:27 -0600)
committerRamprasad Venkataraman <ramv@illinois.edu>
Fri, 19 Nov 2010 15:42:54 +0000 (09:42 -0600)
recvRedMsg() which calls reduceFragment() can increment redn numbers itself,
instead of passing arguments to reduceFragment to cause them to happen.

src/libs/ck-libs/multicast/ckmulticast.C
src/libs/ck-libs/multicast/ckmulticast.h

index 06db3ca0274256798ad4a6449e4c141cbbcd7dd4..5efd8685b8b36adbd4398381dec514b650fd6090 100644 (file)
@@ -162,7 +162,7 @@ class mCastEntry
         inline int notReady() { return (flag == COOKIE_NOTREADY); }
         /// Mark this (branch of the) tree as ready for use
         inline void setReady() { flag=COOKIE_READY; }
-        /// Increment the reduction number for all the section members on this PE
+        /// Increment the reduction number across the whole linked list of cookies
         inline void incReduceNo() {
             red.redNo ++;
             for (mCastEntry *next = newc; next; next=next->newc) 
@@ -1108,7 +1108,7 @@ CkReductionMsg* CkMulticastMgr::combineFrags (CkSectionInfo& id,
 
 void CkMulticastMgr::reduceFragment (int index, CkSectionInfo& id,
                                      mCastEntry* entry, reductionInfo& redInfo,
-                                     int& updateReduceNo, int currentTreeUp) {
+                                     int currentTreeUp) {
 
     CProxy_CkMulticastMgr  mCastGrp(thisgroup);
     reductionMsgs& rmsgs = redInfo.msgs[index];
@@ -1148,15 +1148,6 @@ void CkMulticastMgr::reduceFragment (int index, CkSectionInfo& id,
         if (rmsgs[i]!=newmsg) delete rmsgs[i];
     rmsgs.length() = 0;
 
-    // If all the fragments for the current reduction have been processed
-    if (redInfo.npProcessed == nFrags)
-        entry->incReduceNo();
-
-    // If migration happened, and my sub-tree reconstructed itself,
-    // share the current reduction number with myself and all my children
-    if (updateReduceNo)
-        mCastGrp[CkMyPe()].updateRedNo(entry, redInfo.redNo);
-
     // If I am not the tree root
     if (entry->hasParent()) {
         // send up to parent
@@ -1328,9 +1319,20 @@ void CkMulticastMgr::recvRedMsg(CkReductionMsg *msg)
     {
         const int nFrags = msg->nFrags;
         /// Reduce this fragment
-        reduceFragment (index, id, entry, redInfo, updateReduceNo, currentTreeUp);
-        /// Reset counters if you have processed all fragments
+        reduceFragment (index, id, entry, redInfo, currentTreeUp);
+
+        // If migration happened, and my sub-tree reconstructed itself,
+        // share the current reduction number with myself and all my children
+        if (updateReduceNo)
+            mCastGrp[CkMyPe()].updateRedNo(entry, redInfo.redNo);
+
+        /// If all the fragments for the current reduction have been processed
         if (redInfo.npProcessed == nFrags) {
+
+            /// Increment the reduction number in all of this section's cookies
+            entry->incReduceNo();
+
+            /// Reset bookkeeping counters
             for (i=0; i<nFrags; i++) {
                 redInfo.lcount [i] = 0;
                 redInfo.ccount [i] = 0;
index cd26cb7be453d4d38261f5d87f793232c1df97cf..506b2c9dd13fb3ecbc4c8243439ca8a06d647868 100644 (file)
@@ -130,7 +130,7 @@ class CkMulticastMgr: public CkDelegateMgr
         ///
         inline CkReductionMsg *buildContributeMsg(int dataSize,void *data,CkReduction::reducerType type, CkSectionInfo &id, CkCallback &cb, int userFlag=-1);
         /// Reduce one fragment of a reduction msg and handle appropriately (transmit up the tree, buffer, combine etc)
-        void reduceFragment (int index, CkSectionInfo& id, mCastEntry* entry, reductionInfo& redInfo, int& updateReduceNo, int currentTreeUp);
+        void reduceFragment (int index, CkSectionInfo& id, mCastEntry* entry, reductionInfo& redInfo, int currentTreeUp);
         /// At the tree root: Combine all msg fragments for final delivery to the client
         CkReductionMsg* combineFrags (CkSectionInfo& id, mCastEntry* entry, reductionInfo& redInfo);
 };