1 #ifndef _CKARRAYREDNMGR_H
2 #define _CKARRAYREDNMGR_H
3 class CkArrayReductionMgr
: public NodeGroup
{
4 /** This class receives contributions from all the CkReductionMgr s in a node, after each of them has
5 collected all the contributions on one processor. The data from the different processors in a node
6 is collected and sent to the CkNodeReductionMgr for this node
12 CkGroupID attachedGroup
;
13 CkMsgQ
<CkReductionMsg
> my_msgs
;
14 CkMsgQ
<CkReductionMsg
> my_futureMsgs
;
15 CmiNodeLock lockCount
;
18 void collectAllMessages();
20 CkArrayReductionMgr();
21 CkArrayReductionMgr(int dummy
, CkGroupID gid
);
22 CkArrayReductionMgr(CkMigrateMessage
*m
):NodeGroup(m
) {}
23 void contributeArrayReduction(CkReductionMsg
*m
);
24 CkReductionMsg
*reduceMessages(void);
26 virtual void pup(PUP::er
&p
);
27 void setAttachedGroup(CkGroupID groupID
);
28 void startNodeGroupReduction(int number
,CkGroupID groupID
);
29 virtual int startLocalGroupReductions(int number
);
30 virtual int getTotalGCount();
31 ~CkArrayReductionMgr();