Merge branch 'charm' of charmgit:charm into charm
authorEric Bohm <ebohm@illinois.edu>
Sat, 6 Mar 2010 02:16:02 +0000 (20:16 -0600)
committerEric Bohm <ebohm@illinois.edu>
Sat, 6 Mar 2010 02:16:02 +0000 (20:16 -0600)
1  2 
src/ck-core/charm++.h
src/ck-core/ckarray.h
src/xlat-i/xi-symbol.C

diff --combined src/ck-core/charm++.h
index a18c3d3099bf10b30c48ef4fd40cf1becae3ae3b,ba94946c5a32735ac01a590101229e19f27ad23c..a61b647c923605f097741bec33c4da4d3b281c8b
@@@ -34,7 -34,7 +34,7 @@@ public: static int __idx
  
  PUPbytes(CkChareID)
  PUPbytes(CkGroupID)
+ PUPbytes(CmiGroup)
    
  /**
   * CkMessage is the superclass of all Charm++ messages.
@@@ -101,9 -101,10 +101,10 @@@ class CkEntryOptions : public CkNoncopy
        typedef unsigned int prio_t; //Datatype used to represent priorities
        prio_t *prioPtr; //Points to message priority values
        prio_t prioStore; //For short priorities, stores the priority value
+       CkGroupID  depGroupID;  // group dependence
  public:
        CkEntryOptions(void): queueingtype(CK_QUEUEING_FIFO), prioBits(0), 
-                               prioPtr(NULL), prioStore(0) {}
+                               prioPtr(NULL), prioStore(0) { depGroupID.setZero(); }
  
        ~CkEntryOptions() {
                if ( prioPtr != NULL && queueingtype != CK_QUEUEING_IFIFO ) {
        }
        
        inline void setQueueing(int queueingtype_) {queueingtype=queueingtype_;}
+       inline void setGroupDepID(CkGroupID &gid) { depGroupID = gid; }
  
        ///These are used by CkAllocateMarshallMsg, below:
        inline int getQueueing(void) const {return queueingtype;}
        inline int getPriorityBits(void) const {return prioBits;}
        inline const prio_t *getPriorityPtr(void) const {return prioPtr;}
+       inline const CkGroupID getGroupDepID() const { return depGroupID; }
  };
  
  #include "CkMarshall.decl.h"
@@@ -915,12 -918,12 +918,12 @@@ public
    }
    CProxySection_Group(const IrrGroup *g)
        :CProxy_Group(g), _nsid(0) {}
 -  CProxySection_Group(const int n, const CkGroupID *gid, const int **elems, const int *nElems)
 +  CProxySection_Group(const int n, const CkGroupID *gid,  int const * const *elems, const int *nElems)
        :CProxy_Group(gid[0]), _nsid(n) {
      _sid = new CkSectionID[n];
      for (int i=0; i<n; ++i) _sid[i] = CkSectionID(gid[i], elems[i], nElems[i]);
    }
 -  CProxySection_Group(const int n, const CkGroupID *gid, const int **elems, const int *nElems,CK_DELCTOR_PARAM)
 +  CProxySection_Group(const int n, const CkGroupID *gid, int const * const *elems, const int *nElems,CK_DELCTOR_PARAM)
        :CProxy_Group(gid[0],CK_DELCTOR_ARGS), _nsid(n) {
      _sid = new CkSectionID[n];
      for (int i=0; i<n; ++i) _sid[i] = CkSectionID(gid[i], elems[i], nElems[i]);
diff --combined src/ck-core/ckarray.h
index f426d6b78219dc200d794d07153feb41bc723122,cd565cebb4bfe849c1e568917429e756aeb07151..6607338bea9136ff725481addb109165fe7a33b9
@@@ -449,12 -449,12 +449,12 @@@ public
          for (int i=0; i<_nsid; ++i) _sid[i] = cs._sid[i];
        } else _sid = NULL;
      }
 -    CProxySection_ArrayBase(const int n, const CkArrayID *aid, const CkArrayIndexMax **elems, const int *nElems)
 +    CProxySection_ArrayBase(const int n, const CkArrayID *aid, CkArrayIndexMax const * const *elems, const int *nElems)
          :CProxy_ArrayBase(aid[0]), _nsid(n) {
        _sid = new CkSectionID[n];
        for (int i=0; i<n; ++i) _sid[i] = CkSectionID(aid[i], elems[i], nElems[i]);
      }
 -    CProxySection_ArrayBase(const int n, const CkArrayID *aid, const CkArrayIndexMax **elems, const int *nElems,CK_DELCTOR_PARAM)
 +    CProxySection_ArrayBase(const int n, const CkArrayID *aid, CkArrayIndexMax const * const *elems, const int *nElems,CK_DELCTOR_PARAM)
          :CProxy_ArrayBase(aid[0],CK_DELCTOR_ARGS), _nsid(n) {
        _sid = new CkSectionID[n];
        for (int i=0; i<n; ++i) _sid[i] = CkSectionID(aid[i], elems[i], nElems[i]);
@@@ -533,16 -533,13 +533,13 @@@ class ArrayElement : public CkMigratabl
  {
    friend class CkArray;
    friend class CkArrayListener;
+   int numInitialElements; // Number of elements created by ckNew(numElements)
    void initBasics(void);
  public:
    ArrayElement(void);
    ArrayElement(CkMigrateMessage *m);
    virtual ~ArrayElement();
  
-   int numElements; /// Initial number of array elements (DEPRICATED)
-   // On the previous line, someone wrote "deprecated", but nevertheless it is still
-   // used on TempoArray (tempo.C), ampi.C, irecv (receiver.h), as well as many tests and examples!
  /// Pack/unpack routine (called before and after migration)
    virtual void pup(PUP::er &p);
  
  
    CK_REDUCTION_CONTRIBUTE_METHODS_DECL
  
-   const CkArrayID &ckGetArrayID(void) const {return thisArrayID;}
+   inline const CkArrayID &ckGetArrayID(void) const {return thisArrayID;}
  
+   inline int ckGetArraySize(void) const { return numInitialElements; }
  protected:
    CkArray *thisArray;//My source array
    CkArrayID thisArrayID;//My source array's ID
@@@ -742,14 -740,12 +740,12 @@@ class CkArray : public CkReductionMgr, 
    CProxy_CkArray thisProxy;
    typedef CkMigratableListT<ArrayElement> ArrayElementList;
    ArrayElementList *elements;
-   CkVec<CkMessage*> msgsWaitingForLocMgr;
  
  public:
  //Array Creation:
    CkArray(CkArrayOptions &c,CkMarshalledMessage &initMsg,CkNodeGroupID nodereductionProxy);
    CkArray(CkMigrateMessage *m);
    CkGroupID &getGroupID(void) {return thisgroup;}
-   void notifyLocMgrCreated(CkLocMgr *mgr);
  
  //Access & information routines
    inline CkLocMgr *getLocMgr(void) {return locMgr;}
diff --combined src/xlat-i/xi-symbol.C
index 4ecc043b9ddba471da6e981b99c7cddf01f7a93f,c6b6f8014d79388b08928bf5c63aa94d9ed2dd18..b1cbd771ee1d4e9896635a0e36181510765e52f8
@@@ -1194,10 -1194,10 +1194,10 @@@ Group::genSubDecls(XStr& str
      str << "    "<<ptype<<"(const CkGroupID &_gid,const int *_pelist,int _npes) : ";
      genProxyNames(str, "", NULL,"(_gid,_pelist,_npes)", ", ");
      str << "{  }\n";
 -    str << "    "<<ptype<<"(int n,const CkGroupID *_gid,const int **_pelist,const int *_npes) : ";
 +    str << "    "<<ptype<<"(int n,const CkGroupID *_gid, int const * const *_pelist,const int *_npes) : ";
      genProxyNames(str, "", NULL,"(n,_gid,_pelist,_npes)", ", ");
      str << "{  }\n";
 -    str << "    "<<ptype<<"(int n,const CkGroupID *_gid,const int **_pelist,const int *_npes,CK_DELCTOR_PARAM) : ";
 +    str << "    "<<ptype<<"(int n,const CkGroupID *_gid, int const * const *_pelist,const int *_npes,CK_DELCTOR_PARAM) : ";
      genProxyNames(str, "", NULL,"(n,_gid,_pelist,_npes,CK_DELCTOR_ARGS)", ", ");
      str << "{  }\n";
      
@@@ -1498,9 -1498,9 +1498,9 @@@ Array::genSubDecls(XStr& str
           "        :";genProxyNames(str, "",NULL, "(aid,elems,nElems)", ", ");str<<" {}\n";
      str <<"    "<<ptype<<"(const CkSectionID &sid)"
          "       :";genProxyNames(str, "",NULL, "(sid)", ", ");str<< " {}\n";
 -      str <<"    "<<ptype<<"(int n, const CkArrayID *aid, const CkArrayIndexMax **elems, const int *nElems, CK_DELCTOR_PARAM) \n"
 +      str <<"    "<<ptype<<"(int n, const CkArrayID *aid, CkArrayIndexMax const * const *elems, const int *nElems, CK_DELCTOR_PARAM) \n"
          "        :";genProxyNames(str, "",NULL, "(n,aid,elems,nElems,CK_DELCTOR_ARGS)", ", ");str << " {}\n";
 -      str <<"    "<<ptype<<"(int n, const CkArrayID *aid, const CkArrayIndexMax **elems, const int *nElems) \n"
 +      str <<"    "<<ptype<<"(int n, const CkArrayID *aid, CkArrayIndexMax const * const *elems, const int *nElems) \n"
          "        :";genProxyNames(str, "",NULL, "(n,aid,elems,nElems)", ", ");str<<" {}\n";
      str <<
      "    static CkSectionID ckNew(const CkArrayID &aid, CkArrayIndexMax *elems, int nElems) {\n"
@@@ -3210,6 -3210,7 +3210,7 @@@ void Entry::genGroupDecl(XStr& str
      // entry method on multiple PEs declaration
      if(!container->isForElement() && !container->isForSection() && !isSync() && !isLocal() && !container->isNodeGroup()) {
        str << "    "<<retType<<" "<<name<<"("<<paramComma(1,0)<<"int npes, int *pes"<<eo(1)<<");\n";
+       str << "    "<<retType<<" "<<name<<"("<<paramComma(1,0)<<"CmiGroup &grp"<<eo(1)<<");\n";
      }
    }
  }
@@@ -3314,6 -3315,10 +3315,10 @@@ void Entry::genGroupDefs(XStr& str
        str << marshallMsg();
        str << "  CkSendMsg"<<node<<"BranchMulti("<<paramg<<", npes, pes"<<opts<<");\n";
        str << "}\n";
+       str << ""<<makeDecl(retStr,1)<<"::"<<name<<"("<<paramComma(1,0)<<"CmiGroup &grp"<<eo(0)<<") {\n";
+       str << marshallMsg();
+       str << "  CkSendMsg"<<node<<"BranchGroup("<<paramg<<", grp"<<opts<<");\n";
+       str << "}\n";
      }
    }
  }