#include <ckreduction.h>
Public Member Functions | |
NodeGroup () | |
Locking is a big problem in the nodegroup code for smp. | |
NodeGroup (CkMigrateMessage *m) | |
~NodeGroup () | |
const CkGroupID & | ckGetGroupID (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 |
Definition at line 601 of file ckreduction.h.
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.
NodeGroup::NodeGroup | ( | CkMigrateMessage * | m | ) | [inline] |
Definition at line 608 of file ckreduction.h.
References __nodelock, and CmiCreateLock().
NodeGroup::~NodeGroup | ( | ) |
Definition at line 2112 of file ckreduction.C.
References __nodelock, and CmiDestroyLock().
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().
CkGroupID NodeGroup::CkGetNodeGroupID | ( | void | ) | const [inline] |
virtual bool NodeGroup::isNodeGroup | ( | ) | [inline, virtual] |
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().
virtual void NodeGroup::flushStates | ( | ) | [inline, virtual] |
Reimplemented from CkNodeReductionMgr.
Definition at line 616 of file ckreduction.h.
References CkNodeReductionMgr::flushStates().
CK_REDUCTION_CONTRIBUTE_METHODS_DECL void NodeGroup::contributeWithCounter | ( | CkReductionMsg * | msg, | |
int | count | |||
) |
contributorInfo NodeGroup::reductionInfo [protected] |
Definition at line 603 of file ckreduction.h.
const int NodeGroup::thisIndex |
Definition at line 606 of file ckreduction.h.