
00001 #ifndef _CKARRAYREDNMGR_H 00002 #define _CKARRAYREDNMGR_H 00003 class CkArrayReductionMgr : public NodeGroup{ 00008 private: 00009 int size; 00010 int redNo; 00011 int count; 00012 CkGroupID attachedGroup; 00013 CkMsgQ<CkReductionMsg> my_msgs; 00014 CkMsgQ<CkReductionMsg> my_futureMsgs; 00015 CmiNodeLock lockCount; 00016 int alreadyStarted; 00017 void init(); 00018 void collectAllMessages(); 00019 public: 00020 volatile int ctorDoneFlag; 00021 CkArrayReductionMgr(); 00022 CkArrayReductionMgr(int dummy, CkGroupID gid); 00023 CkArrayReductionMgr(CkMigrateMessage *m):NodeGroup(m) {} 00024 void contributeArrayReduction(CkReductionMsg *m); 00025 CkReductionMsg *reduceMessages(void); 00026 void flushStates(); 00027 virtual void pup(PUP::er &p); 00028 void setAttachedGroup(CkGroupID groupID); 00029 void startNodeGroupReduction(int number,CkGroupID groupID); 00030 virtual int startLocalGroupReductions(int number); 00031 virtual int getTotalGCount(); 00032 }; 00033 #endif 00034
1.5.5