PPL Logo

NodeGroup Class Reference

#include <ckreduction.h>

Inheritance diagram for NodeGroup:

Inheritance graph
[legend]
Collaboration diagram for NodeGroup:

Collaboration graph
[legend]

Public Member Functions

 NodeGroup ()
 Locking is a big problem in the nodegroup code for smp.
 NodeGroup (CkMigrateMessage *m)
 ~NodeGroup ()
const CkGroupIDckGetGroupID (void) const
CkGroupID CkGetNodeGroupID (void) const
virtual bool isNodeGroup ()
virtual void pup (PUP::er &p)
 Pack/UnPack - tell the runtime how to serialize this class's data for migration, checkpoint, etc.
virtual void flushStates ()
CK_REDUCTION_CONTRIBUTE_METHODS_DECL
void 
contributeWithCounter (CkReductionMsg *msg, int count)

Data Fields

CmiNodeLock __nodelock
const int thisIndex

Protected Attributes

contributorInfo reductionInfo

Detailed Description

Definition at line 601 of file ckreduction.h.


Constructor & Destructor Documentation

NodeGroup::NodeGroup ( void   ) 

Locking is a big problem in the nodegroup code for smp.

So a few assumptions have had to be made. There is one lock called lockEverything. It protects all the data structures of the nodegroup reduction mgr. I tried grabbing it separately for each datastructure, modifying it and then releasing it and then grabbing it again, for the next change. That doesn't really help because the interleaved execution of different threads makes the state of the reduction manager inconsistent.

1. Grab lockEverything before calling finishreduction or startReduction or doRecvMsg 2. lockEverything is grabbed only in entry methods reductionStarting or RecvMesg or addcontribution.nodegroup reduction manager . Most of it is similar to the guy above

Definition at line 2104 of file ckreduction.C.

References __nodelock, BGConverse::CkMyNode(), CmiCreateLock(), CkObjID::data, _ObjectID::group, Chare::mlogData, ChareMlogData::objID, _ObjectID::onPE, CkObjID::type, and TypeNodeGroup.

Here is the call graph for this function:

NodeGroup::NodeGroup ( CkMigrateMessage m  )  [inline]

Definition at line 608 of file ckreduction.h.

References __nodelock, and CmiCreateLock().

Here is the call graph for this function:

NodeGroup::~NodeGroup (  ) 

Definition at line 2112 of file ckreduction.C.

References __nodelock, and CmiDestroyLock().

Here is the call graph for this function:


Member Function Documentation

const CkGroupID& NodeGroup::ckGetGroupID ( void   )  const [inline]

Reimplemented from IrrGroup.

Definition at line 611 of file ckreduction.h.

References IrrGroup::thisgroup.

Referenced by CkCallback::CkCallback().

Here is the caller graph for this function:

CkGroupID NodeGroup::CkGetNodeGroupID ( void   )  const [inline]

Definition at line 612 of file ckreduction.h.

References IrrGroup::thisgroup.

virtual bool NodeGroup::isNodeGroup (  )  [inline, virtual]

Reimplemented from IrrGroup.

Definition at line 613 of file ckreduction.h.

void NodeGroup::pup ( PUP::er p  )  [virtual]

Pack/UnPack - tell the runtime how to serialize this class's data for migration, checkpoint, etc.

Reimplemented from CkNodeReductionMgr.

Definition at line 2116 of file ckreduction.C.

References CkNodeReductionMgr::pup().

Here is the call graph for this function:

virtual void NodeGroup::flushStates (  )  [inline, virtual]

Reimplemented from CkNodeReductionMgr.

Definition at line 616 of file ckreduction.h.

References CkNodeReductionMgr::flushStates().

Here is the call graph for this function:

CK_REDUCTION_CONTRIBUTE_METHODS_DECL void NodeGroup::contributeWithCounter ( CkReductionMsg msg,
int  count 
)


Field Documentation

Definition at line 603 of file ckreduction.h.

Definition at line 605 of file ckreduction.h.

Referenced by NodeGroup(), and ~NodeGroup().

Definition at line 606 of file ckreduction.h.


The documentation for this class was generated from the following files:

Generated on Mon Sep 21 08:28:07 2020 for Charm++ by  doxygen 1.5.5