Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members

ReductionMgr Class Reference

#include <ReductionMgr.h>

Inheritance diagram for ReductionMgr:

BOCclass List of all members.

Public Member Functions

 ReductionMgr ()
 ~ReductionMgr ()
SubmitReductionwillSubmit (int setID)
RequireReductionwillRequire (int setID)
void remoteRegister (ReductionRegisterMsg *msg)
void remoteUnregister (ReductionRegisterMsg *msg)
void remoteSubmit (ReductionSubmitMsg *msg)

Static Public Member Functions

ReductionMgrObject (void)

Friends

class SubmitReduction
class RequireReduction

Constructor & Destructor Documentation

ReductionMgr::ReductionMgr  ) 
 

Definition at line 111 of file ReductionMgr.C.

References DebugM, and REDUCTION_MAX_CHILDREN.

00111                            {
00112     if (CkpvAccess(ReductionMgr_instance) == 0) {
00113       CkpvAccess(ReductionMgr_instance) = this;
00114     } else {
00115       DebugM(1, "ReductionMgr::ReductionMgr() - another instance exists!\n");
00116     }
00117 
00118     // fill in the spanning tree fields
00119     if (CkMyPe() == 0) {
00120       myParent = -1;
00121     } else {
00122       myParent = (CkMyPe()-1)/REDUCTION_MAX_CHILDREN;
00123     }
00124     firstChild = CkMyPe()*REDUCTION_MAX_CHILDREN + 1;
00125     if (firstChild > CkNumPes()) firstChild = CkNumPes();
00126     lastChild = firstChild + REDUCTION_MAX_CHILDREN;
00127     if (lastChild > CkNumPes()) lastChild = CkNumPes();
00128 
00129     // initialize data
00130     for(int i=0; i<REDUCTION_MAX_SET_ID; i++) {
00131       reductionSets[i] = 0;
00132     }
00133 
00134     DebugM(1,"ReductionMgr() instantiated.\n");
00135 }

ReductionMgr::~ReductionMgr  ) 
 

Definition at line 138 of file ReductionMgr.C.

00138                             {
00139     for(int i=0; i<REDUCTION_MAX_SET_ID; i++) {
00140       delete reductionSets[i];
00141     }
00142 
00143 }


Member Function Documentation

ReductionMgr* ReductionMgr::Object void   )  [inline, static]
 

Definition at line 250 of file ReductionMgr.h.

Referenced by ComputeConsForce::ComputeConsForce(), ComputeConsTorque::ComputeConsTorque(), ComputeCylindricalBC::ComputeCylindricalBC(), ComputeEField::ComputeEField(), ComputeEwald::ComputeEwald(), ComputeExt::ComputeExt(), ComputeFullDirect::ComputeFullDirect(), ComputeGlobal::ComputeGlobal(), ComputeGridForce::ComputeGridForce(), ComputeHomeTuples< BondElem, Bond, BondValue >::ComputeHomeTuples(), ComputeNonbondedPair::ComputeNonbondedPair(), ComputeNonbondedSelf::ComputeNonbondedSelf(), ComputePme::ComputePme(), ComputeRestraints::ComputeRestraints(), ComputeSphericalBC::ComputeSphericalBC(), ComputeStir::ComputeStir(), ComputeTclBC::ComputeTclBC(), Controller::Controller(), GlobalMasterEasy::GlobalMasterEasy(), GlobalMasterTcl::GlobalMasterTcl(), PressureProfileReduction::PressureProfileReduction(), and Sequencer::Sequencer().

00250                                            {
00251     return CkpvAccess(ReductionMgr_instance);
00252   }

void ReductionMgr::remoteRegister ReductionRegisterMsg msg  ) 
 

Definition at line 226 of file ReductionMgr.C.

References ReductionSet::addToRemoteSequenceNumber, ReductionSet::dataQueue, ReductionSet::eventsRegistered, NAMD_die(), ReductionSet::nextSequenceNumber, ReductionRegisterMsg::reductionSetID, and ReductionRegisterMsg::sourceNode.

00226                                                            {
00227 
00228   int setID = msg->reductionSetID;
00229   ReductionSet *set = getSet(setID);
00230   if ( set->dataQueue ) {
00231     NAMD_die("ReductionMgr::willSubmit called while reductions outstanding on parent!");
00232   }
00233 
00234   set->eventsRegistered++;
00235   set->addToRemoteSequenceNumber[msg->sourceNode - firstChild]
00236                                         = set->nextSequenceNumber;
00237   delete msg;
00238 }

void ReductionMgr::remoteSubmit ReductionSubmitMsg msg  ) 
 

Definition at line 256 of file ReductionMgr.C.

References ReductionSet::addToRemoteSequenceNumber, BigReal, ReductionSubmitMsg::data, ReductionSubmitMsg::dataSize, ReductionSubmitMsg::reductionSetID, ReductionSubmitMsg::sequenceNumber, and ReductionSubmitMsg::sourceNode.

00256                                                        {
00257   int setID = msg->reductionSetID;
00258   ReductionSet *set = reductionSets[setID];
00259   int seqNum = msg->sequenceNumber
00260         + set->addToRemoteSequenceNumber[msg->sourceNode - firstChild];
00261   int size = msg->dataSize;
00262   BigReal *data = msg->data;
00263 
00264   mergeAndDeliver(set,seqNum,data,size);
00265   delete msg;
00266 }

void ReductionMgr::remoteUnregister ReductionRegisterMsg msg  ) 
 

Definition at line 241 of file ReductionMgr.C.

References ReductionSet::dataQueue, ReductionSet::eventsRegistered, NAMD_die(), and ReductionRegisterMsg::reductionSetID.

00241                                                              {
00242 
00243   int setID = msg->reductionSetID;
00244   ReductionSet *set = reductionSets[setID];
00245   if ( set->dataQueue ) {
00246     NAMD_die("SubmitReduction deleted while reductions outstanding on parent!");
00247   }
00248 
00249   set->eventsRegistered--;
00250 
00251   delSet(setID);
00252   delete msg;
00253 }

RequireReduction * ReductionMgr::willRequire int  setID  ) 
 

Definition at line 319 of file ReductionMgr.C.

References ReductionSet::dataQueue, ReductionSet::eventsRegistered, RequireReduction::master, NAMD_die(), ReductionSet::nextSequenceNumber, RequireReduction::reductionSetID, ReductionSet::requireRegistered, and RequireReduction::sequenceNumber.

Referenced by Controller::Controller(), and PressureProfileReduction::PressureProfileReduction().

00319                                                      {
00320   ReductionSet *set = getSet(setID);
00321   set->eventsRegistered++;
00322   set->requireRegistered++;
00323   if ( set->dataQueue ) {
00324     NAMD_die("ReductionMgr::willRequire called while reductions outstanding!");
00325   }
00326 
00327   RequireReduction *handle = new RequireReduction;
00328   handle->reductionSetID = setID;
00329   handle->sequenceNumber = set->nextSequenceNumber;
00330   handle->master = this;
00331 
00332   return handle;
00333 }

SubmitReduction * ReductionMgr::willSubmit int  setID  ) 
 

Definition at line 185 of file ReductionMgr.C.

References ReductionSet::dataQueue, ReductionSet::eventsRegistered, SubmitReduction::master, NAMD_die(), ReductionSet::nextSequenceNumber, SubmitReduction::reductionSetID, and SubmitReduction::sequenceNumber.

Referenced by ComputeConsForce::ComputeConsForce(), ComputeConsTorque::ComputeConsTorque(), ComputeCylindricalBC::ComputeCylindricalBC(), ComputeEField::ComputeEField(), ComputeEwald::ComputeEwald(), ComputeExt::ComputeExt(), ComputeFullDirect::ComputeFullDirect(), ComputeGlobal::ComputeGlobal(), ComputeGridForce::ComputeGridForce(), ComputeHomeTuples< BondElem, Bond, BondValue >::ComputeHomeTuples(), ComputeNonbondedPair::ComputeNonbondedPair(), ComputeNonbondedSelf::ComputeNonbondedSelf(), ComputePme::ComputePme(), ComputeRestraints::ComputeRestraints(), ComputeSphericalBC::ComputeSphericalBC(), ComputeStir::ComputeStir(), ComputeTclBC::ComputeTclBC(), GlobalMasterEasy::GlobalMasterEasy(), GlobalMasterTcl::GlobalMasterTcl(), and Sequencer::Sequencer().

00185                                                    {
00186   ReductionSet *set = getSet(setID);
00187   if ( set->dataQueue ) {
00188     NAMD_die("ReductionMgr::willSubmit called while reductions outstanding!");
00189   }
00190 
00191   set->eventsRegistered++;
00192 
00193   SubmitReduction *handle = new SubmitReduction;
00194   handle->reductionSetID = setID;
00195   handle->sequenceNumber = set->nextSequenceNumber;
00196   handle->master = this;
00197 
00198   return handle;
00199 }


Friends And Related Function Documentation

friend class RequireReduction [friend]
 

Definition at line 224 of file ReductionMgr.h.

friend class SubmitReduction [friend]
 

Definition at line 223 of file ReductionMgr.h.


The documentation for this class was generated from the following files:
Generated on Thu Jul 24 04:07:45 2008 for NAMD by  doxygen 1.3.9.1