doc: Add serial to list of ci file reserved words
[charm.git] / src / ck-com / ComlibManager.h
index 5d0bb073fd83521da010c3e47bb96de1a5a22ede..2edfac29e0344501750dc5d7d9639c196801b0ff 100644 (file)
@@ -29,7 +29,11 @@ Strategies should be created in a MainChare's Main method (hence on PE 0). Proxi
   
 <h2>Startup</h2>
 
-   The startup of Comlib happens asynchronously. The <i>module comlib</i> does not currently use any initproc routine. The <i>mainchare ComlibManagerMain</i> has a constructor that runs along with all other mainchares while charm++ messages are not activated at startup. This constructor simply sets a few variables from command line arguments, and then creates the <i>ComlibManager group </i>. After all mainchares have run (in no determinable order), then the charm++ system will release all charm++ messages. 
+  The initilization of Comlib is done both asynchronously for parts and at startup for other parts. There is an initproc routine 
+  initConvComlibManager() that instantiates the Ckpv processor local conv_com_object. This needs to be created before the ComlibManagerMain method is called. Because we cannot guarantee the order for which the mainchares execute, we must do this in an initproc routine.
+
+
+   The startup of Comlib happens asynchronously. The <i>mainchare ComlibManagerMain</i> has a constructor that runs along with all other mainchares while charm++ messages are not activated at startup. This constructor simply sets a few variables from command line arguments, and then creates the <i>ComlibManager group </i>. After all mainchares have run (in no determinable order), then the charm++ system will release all charm++ messages. 
 
    At this point the user program will continue asynchronously with the comlib startup.
   
@@ -186,15 +190,16 @@ inline int indexCountCompare(const void *a, const void *b) {
   return 0;
 }
 
-/** Used to setup a multicast tree in SectionInfo and MulticastStrategies */
-// TO BE MOVED TO MULTICAST SPECIFIC
+
+/** A class for multicast messages that contains the user message 
+    as well as a list of all destination indices and corresponding PEs 
+*/
 class ComlibMulticastMsg : public CkMcastBaseMsg, 
                public CMessage_ComlibMulticastMsg {
-    
   public:
     int nPes;
     ComlibMulticastIndexCount *indicesCount;
-    CkArrayIndexMax *indices;
+    CkArrayIndex *indices;
     char *usrMsg;        
 };
 
@@ -213,7 +218,7 @@ void ComlibEnd(CProxy &proxy, int iteration);
     now it is used to reset a proxy before it is reassociated with another strategy. 
  */
 inline void ComlibResetSectionProxy(CProxySection_ArrayBase &sproxy) {
-  sproxy.ckGetSectionInfo().sInfo.cInfo.id = 0;
+  sproxy.ckGetSectionInfo().info.sInfo.cInfo.id = 0;
 }
 
 
@@ -235,7 +240,7 @@ class ComlibManager: public CkDelegateMgr {
     /// Used to register and record events into projection
     int section_send_event;
 
-    CkArrayIndexMax dummyArrayIndex;
+    CkArrayIndex dummyArrayIndex;
 
     /// Pointer to the converse comlib object, for efficiency over calling CkpvAccess
     ConvComlibManager *converseManager;
@@ -279,11 +284,11 @@ class ComlibManager: public CkDelegateMgr {
     ///bracket.
     void endIteration(int instid, int iteration);
     
-    void printPeList(char* note, int *peList);
+    void printPeList(const char* note, int *peList);
 
     
     bool shouldBufferMessagesNow(int instid);
-    void sendBufferedMessages(int instid);
+    void sendBufferedMessages(int instid, int step=-1);
     void sendBufferedMessagesAllStrategies();
 
  public:
@@ -305,13 +310,13 @@ class ComlibManager: public CkDelegateMgr {
     /* The delegation framework reimplemented functions */
 
     void ArraySend(CkDelegateData *pd,int ep, void *msg, 
-                   const CkArrayIndexMax &idx, CkArrayID a);
+                   const CkArrayIndex &idx, CkArrayID a);
     void GroupSend(CkDelegateData *pd, int ep, void *msg, int onpe, 
                    CkGroupID gid);
     void ArrayBroadcast(CkDelegateData *pd,int ep,void *m,CkArrayID a);
     void GroupBroadcast(CkDelegateData *pd,int ep,void *m,CkGroupID g);
     void ArraySectionSend(CkDelegateData *pd, int ep ,void *m, 
-                                  CkArrayID a, CkSectionID &s, int opts);
+                                  int nsid, CkSectionID *s, int opts);
     CkDelegateData* ckCopyDelegateData(CkDelegateData *data); 
     CkDelegateData *DelegatePointerPup(PUP::er &p,CkDelegateData *pd);
 
@@ -333,17 +338,17 @@ class ComlibManager: public CkDelegateMgr {
     void bracketedReceiveCount(int instid, int pe, int count, int isFirst, int step);
     void bracketedStartErrorRecoveryProcess(int instid, int step);
     void bracketedErrorDetected(int instid, int step);
-    void bracketedConfirmCount(int instid);
+    void bracketedConfirmCount(int instid, int step);
     void bracketedCountConfirmed(int instid, int count, int step);
-    void bracketedReceiveNewCount(int instid);
-    void bracketedReceiveNewPeList(int instid, int *count);
+    void bracketedReceiveNewCount(int instid, int step);
+    void bracketedReceiveNewPeList(int instid, int step, int *count);
 
-    void bracketedFinalBarrier(int instid);
-    void bracketedReleaseCount(int instid);
-    void bracketedReleaseBufferedMessages(int instid);
+    void bracketedFinalBarrier(int instid, int step);
+    void bracketedReleaseCount(int instid, int step);
+    void bracketedReleaseBufferedMessages(int instid, int step);
 
     void bracketedStartDiscovery(int instid);
-    void bracketedDiscover(int instid, CkArrayID aid, CkArrayIndexMax &idx, int isSrc);
+    void bracketedDiscover(int instid, CkArrayID aid, CkArrayIndex &idx, int isSrc);
     void bracketedContributeDiscovery(int instid, int pe, int nsrc, int ndest, int step);