
00001 00002 // @addtogroup CharmComlib 00003 //*/ 00005 // 00007 // 00011 //#include "ComlibArrayListener.h" 00012 //#include "ComlibManager.h" 00013 // 00015 //ComlibArrayListener::ComlibArrayListener () 00016 // : CkArrayListener(0){ //Carry 1 int for the sid, not used yet 00017 // nElements = 0; 00018 // ht = new CkHashtableT<CkArrayIndex, CkArrayIndex *>; 00019 // // CkPrintf("Creating Array Listener\n"); 00020 //} 00021 //*/ 00022 // 00023 //ComlibArrayListener::ComlibArrayListener(CkArrayID &id) : CkArrayListener(0) { 00024 // setupFinished = 0; 00025 // thisArrayID = id; 00026 // ComlibPrintf("[%d] Creating ComlibArrayListener for array %d\n",CkMyPe(),((CkGroupID)id).idx); 00027 //} 00028 // 00029 //ComlibArrayListener::ComlibArrayListener (CkMigrateMessage *m) 00030 // :CkArrayListener(m) { 00031 // /* 00032 // nElements = 0; 00033 // ht = new CkHashtableT<CkArrayIndex, CkArrayIndex *>; 00034 // */ 00035 //} 00036 // 00037 //void ComlibArrayListener::pup(PUP::er &p) { 00038 // ComlibPrintf("[%d] ComlibArrayListener pupping for %s, why?!?\n",CkMyPe(), 00039 // p.isPacking()?"packing":(p.isUnpacking()?"unpacking":"sizing")); 00040 //} 00041 // 00042 //void ComlibArrayListener::ckEndInserting() { 00043 // CkAssert(0); 00044 // CkAssert(setupFinished==0); 00045 // 00046 // ComlibPrintf("[%d] ComlibArrayListener::ckEndInserting\n",CkMyPe()); 00047 // CProxy_ComlibManager cgproxy(CkpvAccess(cmgrID)); 00048 // for (int i=0; i<userIDs.size(); ++i) { 00049 // cgproxy[0].bracketedFinishSetup(userIDs[i]); 00050 // } 00051 // 00052 // setupFinished = 1; 00053 // 00054 //} 00055 // 00056 //void ComlibArrayListener::ckElementCreating(ArrayElement *elt){ 00057 // ComlibPrintf("[%d] ComlibArrayListener::ckElementCreating\n",CkMyPe()); 00058 // for (int i=0; i<users.size(); ++i) { 00059 // users[i]->newElement(thisArrayID, elt->ckGetArrayIndex()); 00060 // } 00061 // //addElement(elt, CmiFalse); 00062 // //CkPrintf("[%d] Element Created\n", CkMyPe()); 00063 //} 00065 //void ComlibArrayListener::ckElementDied(ArrayElement *elt){ 00066 // deleteElement(elt, CmiFalse); 00067 //} 00068 // 00069 //void ComlibArrayListener::ckElementLeaving(ArrayElement *elt){ 00070 // deleteElement(elt, CmiTrue); 00071 //} 00072 // 00073 //CmiBool ComlibArrayListener::ckElementArriving(ArrayElement *elt){ 00074 // addElement(elt, CmiTrue); 00075 // return CmiTrue; 00076 //} 00077 // 00078 //void ComlibArrayListener::addElement(ArrayElement *elt, 00079 // CmiBool migration_flag){ 00080 // if(nElements == 0) 00081 // thisArrayID = elt->ckGetArrayID(); 00082 // 00083 // ht->put(elt->thisIndexMax) = &(elt->thisIndexMax); 00084 // //elt->thisIndexMax.print(); 00085 // nElements ++; 00086 // 00087 // if(!migration_flag) { 00088 // for(int count = 0; count < strategyList.length(); count++){ 00089 // CharmStrategy *strategy = (CharmStrategy *) 00090 // strategyList[count]->strategy; 00091 // if(isRegistered(elt, strategy)) { 00092 // strategyList[count]->numElements ++; 00093 // } 00094 // } 00095 // } 00096 //} 00097 // 00098 //void ComlibArrayListener::deleteElement(ArrayElement *elt, 00099 // CmiBool migration_flag){ 00100 // ht->remove(elt->thisIndexMax); 00101 // nElements --; 00102 // 00103 // if(!migration_flag) { 00104 // for(int count = 0; count < strategyList.length(); count++){ 00105 // CharmStrategy *strategy = (CharmStrategy *) 00106 // strategyList[count]->strategy; 00107 // if(isRegistered(elt, strategy)) { 00108 // strategyList[count]->numElements --; 00109 // } 00110 // } 00111 // } 00112 //} 00113 // 00114 //int ComlibArrayListener::isRegistered(ArrayElement *elt, 00115 // CharmStrategy *strat){ 00116 // CkArrayIndex idx = elt->thisIndexMax; 00117 // 00118 // CkArrayID st_aid; 00119 // int st_nelements; 00120 // CkArrayIndex *st_elem; 00121 // strat->ainfo.getSourceArray(st_aid, st_elem, st_nelements); 00122 // 00123 // if(st_nelements < 0) 00124 // CkAbort("Not an Array Strategy\n"); 00125 // 00126 // if(st_nelements == 0) 00127 // return 1; 00128 // 00129 // for(int count = 0; count < st_nelements; count ++) 00130 // if(st_elem[count].compare(idx)) 00131 // return 1; 00132 // 00133 // return 0; 00134 //} 00135 // 00137 //void ComlibArrayListener::registerStrategy(StrategyTableEntry *stable_entry) { 00138 // strategyList.insertAtEnd(stable_entry); 00139 // 00140 // CharmStrategy *strat = (CharmStrategy *) stable_entry->strategy; 00141 // 00142 // CkArrayID st_aid; 00143 // int st_nelements; 00144 // CkArrayIndex *st_elem; 00145 // strat->ainfo.getSourceArray(st_aid, st_elem, st_nelements); 00146 // 00147 // if(st_nelements == 0) {//All elements of array in strategy 00148 // stable_entry->numElements += nElements; 00149 // 00157 // 00158 // } 00159 // else if (st_nelements > 0){ //Only some elements belong to strategy 00160 // for(int count = 0; count < st_nelements; count ++) 00161 // if(ht->get(st_elem[count]) != NULL) { 00162 // stable_entry->numElements ++; 00163 // } 00164 // } 00165 // else 00166 // CkAbort("NOT an Array Strategy\n"); 00167 // 00168 //} 00169 // 00170 //void ComlibArrayListener::getLocalIndices(CkVec<CkArrayIndex> &vec){ 00171 // 00172 // CkHashtableIterator *ht_iterator = ht->iterator(); 00173 // ht_iterator->seekStart(); 00174 // while(ht_iterator->hasNext()){ 00175 // CkArrayIndex *idx; 00176 // ht_iterator->next((void **)&idx); 00177 // vec.insertAtEnd(*idx); 00178 // } 00179 //} 00180 //*/ 00181 //
1.5.5