NAMD
Public Member Functions | Static Public Member Functions | Public Attributes | Protected Attributes | List of all members
Node Class Reference

#include <Node.h>

Inheritance diagram for Node:

Public Member Functions

 Node (GroupInitMsg *msg)
 
 ~Node (void)
 
void run ()
 
void enableScriptBarrier ()
 
void scriptBarrier (void)
 
void scriptParam (ScriptParamMsg *)
 
void reloadCharges (const char *filename)
 
void reloadCharges (float charge[], int n)
 
void reloadGridforceGrid (const char *key)
 
void reloadGridforceGrid (int gridnum)
 
void updateGridScale (const char *key, Vector scale)
 
void updateGridScale (int gridnum, float sx, float sy, float sz)
 
void reloadStructure (const char *, const char *)
 
void resendMolecule ()
 
void resendMolecule2 ()
 
void sendCheckpointReq (int remote, const char *key, int task, Lattice &lat, ControllerState &cs)
 
void recvCheckpointReq (CheckpointMsg *)
 
void recvCheckpointAck (CheckpointMsg *)
 
void sendEnableExitScheduler (void)
 
void recvEnableExitScheduler (void)
 
void enableExitScheduler (void)
 
void exitScheduler (void)
 
void sendEnableEarlyExit (void)
 
void recvEnableEarlyExit (void)
 
void enableEarlyExit (void)
 
void earlyExit (void)
 
void startup ()
 
void mallocTest (int)
 
void mallocTestQd (void)
 
float measureMemory ()
 
void BOCCheckIn ()
 
void awaitBOCCheckIn ()
 
void saveMolDataPointers (NamdState *)
 
void startHPM ()
 
void stopHPM ()
 
void traceBarrier (int turnOnTrace, int step)
 
void resumeAfterTraceBarrier (CkReductionMsg *msg)
 
void papiMeasureBarrier (int turnOnMeasure, int step)
 
void resumeAfterPapiMeasureBarrier (CkReductionMsg *msg)
 
void outputPatchComputeMaps (const char *filename, int tag)
 
ScriptTclgetScript ()
 
int myid ()
 
int numNodes ()
 
void setScript (ScriptTcl *s)
 

Static Public Member Functions

static NodeObject ()
 
static NodeObjectOnPe (int pe)
 
static void messageRun ()
 
static void messageStartUp ()
 
static void messageBOCCheckIn ()
 

Public Attributes

int mallocTest_size
 
float initVM
 
float initRSS
 
int curTimeStep
 
int curMFlopStep
 
bool specialTracing
 
WorkDistribworkDistrib
 
ComputeMgrcomputeMgr
 
Randomrand
 
Moleculemolecule
 
Parametersparameters
 
SimParameterssimParameters
 
ConfigListconfigList
 
PDBpdb
 
NamdStatestate
 
Outputoutput
 
IMDOutputimd
 
colvarmodule * colvars
 
Vectorcoords
 

Protected Attributes

AtomMapatomMap
 
PatchMappatchMap
 
ComputeMapcomputeMap
 
LdbCoordinatorldbCoordinator
 

Detailed Description

Definition at line 78 of file Node.h.

Constructor & Destructor Documentation

◆ Node()

Node::Node ( GroupInitMsg msg)

Definition at line 304 of file Node.C.

References atomMap, colvars, configList, DebugM, eventEndOfTimeStep, GroupInitMsg::group, imd, PatchMap::Instance(), AtomMap::Instance(), ComputeMap::Instance(), molecule, NAMD_bug(), output, parameters, patchMap, pdb, recvCheckpointCAck_handler(), recvCheckpointCReq_handler(), simParameters, specialTracing, and state.

305 {
306  DebugM(4,"Creating Node\n");
307 #if(CMK_CCS_AVAILABLE && CMK_WEB_MODE)
308  CApplicationInit();
309 #endif
310  if (CkpvAccess(Node_instance) == 0) {
311  CkpvAccess(Node_instance) = this;
312  eventEndOfTimeStep = traceRegisterUserEvent("EndOfTimeStep", 135);
313  } else {
314  NAMD_bug("Node::Node() - another instance of Node exists!");
315  }
316 
317  CkpvAccess(BOCclass_group) = msg->group;
318  delete msg;
319 
320  CkpvAccess(BOCclass_group).node = thisgroup;
321 
322  recvCheckpointCReq_index = CmiRegisterHandler((CmiHandler)recvCheckpointCReq_handler);
323  recvCheckpointCAck_index = CmiRegisterHandler((CmiHandler)recvCheckpointCAck_handler);
324 
325  startupPhase = 0;
326 
327  molecule = NULL;
328  parameters = NULL;
329  simParameters = NULL;
330  configList = NULL;
331  pdb = NULL;
332  state = NULL;
333  output = NULL;
334  imd = new IMDOutput;
335  colvars = 0;
336 
337 #if USE_HPM
338  // assumes that this will be done only on BG/P
339  TopoManager *tmgr = new TopoManager();
340  int x, y, z;
341  tmgr->rankToCoordinates(CkMyPe(), x, y, z, localRankOnNode);
342  delete tmgr;
343 #endif
344 
345  specialTracing = traceAvailable() && (traceIsOn()==0);
346 
347  DebugM(4,"Creating PatchMap, AtomMap, ComputeMap\n");
350  if ( CkMyRank() == 0 ) ComputeMap::Instance();
351 
352  //Note: Binding BOC vars such as workDistrib has been moved
353  //to the 1st phase of startup because the in-order message delivery
354  //is not always guaranteed --Chao Mei
355 #if defined(CMK_BALANCED_INJECTION_API) && CMK_BALANCED_INJECTION_API != 0
356  if(CkMyRank() == 0){
357  balancedInjectionLevel=ck_get_GNI_BIConfig();
358  // CkPrintf("[%d] get retrieved BI=%d\n",CkMyPe(),balancedInjectionLevel);
359  ck_set_GNI_BIConfig(20);
360  // CkPrintf("[%d] set retrieved BI=%d\n",CkMyPe(),ck_get_GNI_BIConfig());
361  }
362 #endif
363 
364 }
bool specialTracing
Definition: Node.h:166
void recvCheckpointCReq_handler(envelope *)
Definition: Node.C:1397
BOCgroup group
Definition: Node.h:68
IMDOutput * imd
Definition: Node.h:186
static AtomMap * Instance()
Definition: AtomMap.C:125
Output * output
Definition: Node.h:185
SimParameters * simParameters
Definition: Node.h:181
#define DebugM(x, y)
Definition: Debug.h:75
void NAMD_bug(const char *err_msg)
Definition: common.C:196
NamdState * state
Definition: Node.h:184
AtomMap * atomMap
Definition: Node.h:202
PDB * pdb
Definition: Node.h:183
ConfigList * configList
Definition: Node.h:182
Parameters * parameters
Definition: Node.h:180
static ComputeMap * Instance()
Definition: ComputeMap.C:24
void recvCheckpointCAck_handler(envelope *)
Definition: Node.C:1419
PatchMap * patchMap
Definition: Node.h:203
colvarmodule * colvars
Definition: Node.h:187
int eventEndOfTimeStep
Definition: Node.C:299
static PatchMap * Instance()
Definition: PatchMap.C:32
Molecule * molecule
Definition: Node.h:179

◆ ~Node()

Node::~Node ( void  )

Definition at line 369 of file Node.C.

References atomMap, computeMap, imd, output, patchMap, and rand.

370 {
371  delete imd;
372  delete output;
373  delete computeMap;
374  delete atomMap;
375  delete patchMap;
376  delete CkpvAccess(comm);
377  // BEGIN LA
378  delete rand;
379  // END LA
380 #ifdef MEASURE_NAMD_WITH_PAPI
381  delete CkpvAccess(papiEvents);
382 #endif
383 }
IMDOutput * imd
Definition: Node.h:186
Output * output
Definition: Node.h:185
ComputeMap * computeMap
Definition: Node.h:204
AtomMap * atomMap
Definition: Node.h:202
Random * rand
Definition: Node.h:175
PatchMap * patchMap
Definition: Node.h:203

Member Function Documentation

◆ awaitBOCCheckIn()

void Node::awaitBOCCheckIn ( )

◆ BOCCheckIn()

void Node::BOCCheckIn ( )

◆ earlyExit()

void Node::earlyExit ( void  )

Definition at line 1472 of file Node.C.

References NAMD_die().

1472  {
1473  NAMD_die("Exiting prematurely; see error messages above.");
1474 }
void NAMD_die(const char *err_msg)
Definition: common.C:148

◆ enableEarlyExit()

void Node::enableEarlyExit ( void  )

Definition at line 1464 of file Node.C.

References sendEnableEarlyExit().

Referenced by Sequencer::hardWallDrude(), Sequencer::maximumMove(), Sequencer::maximumMove_SOA(), Sequencer::rattle1(), Sequencer::rattle1_SOA(), and recvEnableEarlyExit().

1464  {
1465  if ( CkMyPe() ) {
1467  } else {
1468  CkStartQD(CkIndex_Node::earlyExit(),&thishandle);
1469  }
1470 }
void sendEnableEarlyExit(void)
Definition: Node.C:1455

◆ enableExitScheduler()

void Node::enableExitScheduler ( void  )

Definition at line 1442 of file Node.C.

References sendEnableExitScheduler().

Referenced by BackEnd::awaken(), and recvEnableExitScheduler().

1442  {
1443  if ( CkMyPe() ) {
1445  } else {
1446  CkStartQD(CkIndex_Node::exitScheduler(), &thishandle);
1447  }
1448 }
void sendEnableExitScheduler(void)
Definition: Node.C:1431

◆ enableScriptBarrier()

void Node::enableScriptBarrier ( )

Definition at line 1214 of file Node.C.

1214  {
1215  CkStartQD(CkIndex_Node::scriptBarrier(), &thishandle);
1216 }

◆ exitScheduler()

void Node::exitScheduler ( void  )

Definition at line 1450 of file Node.C.

1450  {
1451  //CmiPrintf("exitScheduler %d\n",CkMyPe());
1452  CsdExitScheduler();
1453 }

◆ getScript()

ScriptTcl * Node::getScript ( void  )

Definition at line 1659 of file Node.C.

References PatchData::script.

Referenced by Output::coordinate(), and Controller::printEnergies().

1659  {
1660 #ifndef NODEGROUP_FORCE_REGISTER
1661  return script;
1662 #else
1663  if(script == NULL){
1664  CProxy_PatchData cpdata(CkpvAccess(BOCclass_group).patchData);
1665  PatchData* patchData = cpdata.ckLocalBranch();
1666  return patchData->script;
1667  }else{
1668  return script;
1669  }
1670 #endif
1671 }
ScriptTcl * script
Definition: PatchData.h:160

◆ mallocTest()

void Node::mallocTest ( int  step)

Definition at line 406 of file Node.C.

References NAMD_die().

Referenced by mallocTestQd().

406  {
407  int MB = 1024*1024;
408  int size = 100;
409  char* foo = (char*) malloc(size*MB);
410  if ( ! foo ) {
411  char buf[256];
412  sprintf(buf,"Malloc fails on Pe %d at %d MB.\n",CkMyPe(),step*size);
413  NAMD_die(buf);
414  }
415  memset(foo,0,size*MB*sizeof(char));
416 }
void NAMD_die(const char *err_msg)
Definition: common.C:148

◆ mallocTestQd()

void Node::mallocTestQd ( void  )

Definition at line 418 of file Node.C.

References mallocTest(), and mallocTest_size.

418  {
419  if ( mallocTest_size ) {
420  CkPrintf("All PEs successfully allocated %d MB.\n", 100*mallocTest_size);
421  } else {
422  CkPrintf("Starting malloc test on all PEs.\n");
423  }
424  fflush(stdout);
425  ++mallocTest_size;
426  CkStartQD(CkIndex_Node::mallocTestQd(), &thishandle);
427  (CProxy_Node(CkpvAccess(BOCclass_group).node)).mallocTest(mallocTest_size);
428 }
void mallocTest(int)
Definition: Node.C:406
int mallocTest_size
Definition: Node.h:130

◆ measureMemory()

float Node::measureMemory ( )

◆ messageBOCCheckIn()

static void Node::messageBOCCheckIn ( )
static

◆ messageRun()

void Node::messageRun ( )
static

Definition at line 1167 of file Node.C.

References run().

Referenced by startup().

1167  {
1168  (CProxy_Node(CkpvAccess(BOCclass_group).node)).run();
1169 }
void run()
Definition: Node.C:1176

◆ messageStartUp()

void Node::messageStartUp ( )
static

Definition at line 433 of file Node.C.

References startup().

433  {
434  (CProxy_Node(CkpvAccess(BOCclass_group).node)).startup();
435 }
void startup()
Definition: Node.C:465

◆ myid()

int Node::myid ( )
inline

Definition at line 191 of file Node.h.

Referenced by ComputeMgr::createComputes(), WorkDistrib::distributeHomePatches(), and LdbCoordinator::initialize().

191 { return CkMyPe(); }

◆ numNodes()

int Node::numNodes ( )
inline

Definition at line 192 of file Node.h.

Referenced by WorkDistrib::assignNodeToPatch(), and LdbCoordinator::initialize().

192 { return CkNumPes(); }

◆ Object()

static Node* Node::Object ( )
inlinestatic

Definition at line 86 of file Node.h.

Referenced by HomePatch::addForceToMomentum(), HomePatch::addForceToMomentum3(), Sequencer::addMovDragToPosition(), Sequencer::addRotDragToPosition(), HomePatch::addVelocityToPosition(), after_backend_init(), Controller::algorithm(), CollectionMaster::CollectVectorInstanceDcdSelection::append(), WorkDistrib::assignNodeToPatch(), BackEnd::awaken(), PmeZPencil::backward_fft(), PmeYPencil::backward_fft(), PmeXPencil::backward_fft(), LdbCoordinator::barrier(), HomePatch::boxClosed(), HomePatch::buildRattleList(), HomePatch::buildRattleList_SOA(), ComputeQMMgr::calcMOPAC(), ComputeQMMgr::calcORCA(), Controller::calcPressure(), colvarproxy_namd::calculate(), ComputeQMMgr::calcUSR(), ComputePmeMgr::chargeGridSubmitted(), colvarproxy_namd::check_atom_id(), colvarproxy_namd::check_volmap_by_id(), ComputeGridForce::checkGridForceRatio(), CudaPmeOneDevice::checkPatchLevelLatticeCompatibilityAndComputeOffsets(), SimParameters::close_dcdfile(), SimParameters::close_veldcdfile(), colvarproxy_namd::colvarproxy_namd(), Controller::compareChecksums(), CudaPmeOneDevice::compute(), colvarproxy_namd::compute_volmap(), ComputeCylindricalBC::ComputeCylindricalBC(), ComputeEwald::ComputeEwald(), OneFourNbTholeElem::computeForce(), AngleElem::computeForce(), ImproperElem::computeForce(), CrosstermElem::computeForce(), DihedralElem::computeForce(), TholeElem::computeForce(), AnisoElem::computeForce(), BondElem::computeForce(), ExclElem::computeForce(), GromacsPairElem::computeForce(), ComputeFullDirect::ComputeFullDirect(), ComputeGlobal::ComputeGlobal(), ComputeHomeTuples< TholeElem, Thole, TholeValue >::ComputeHomeTuples(), ComputeLCPO::ComputeLCPO(), LjPmeCompute::computeLJpotential(), ComputeMsm::ComputeMsm(), LjPmeCompute::computeNonbonded(), ComputeNonbondedPair::ComputeNonbondedPair(), ComputeNonbondedSelf::ComputeNonbondedSelf(), ComputePme::ComputePme(), ComputeRestraints::ComputeRestraints(), ComputeSphericalBC::ComputeSphericalBC(), ComputeStir::ComputeStir(), ComputeTclBC::ComputeTclBC(), Controller::Controller(), Output::coordinate(), Output::coordinateNeeded(), ComputeMgr::createComputes(), ComputeCUDAMgr::createCudaComputeNonbonded(), ComputeCUDAMgr::createCudaGlobalMaster(), ComputeCUDAMgr::createCudaPmeOneDevice(), ComputeGridForce::createGridForcedIdxList(), ParallelIOMgr::createHomePatches(), LdbCoordinator::createLoadBalancer(), CudaComputeNonbonded::CudaComputeNonbonded(), CudaPmeOneDevice::CudaPmeOneDevice(), HomePatch::depositMigration(), CollectionMaster::disposeForces(), CollectionMaster::disposePositions(), CollectionMaster::disposeVelocities(), ComputeConsForce::doForce(), ComputeEField::doForce(), ComputeConsTorque::doForce(), ComputeStir::doForce(), ComputeNonbondedPair::doForce(), ComputeNonbondedSelf::doForce(), ComputeGridForce::doForce(), ComputeRestraints::doForce(), HomePatch::doGroupSizeCheck(), HomePatch::doGroupSizeCheck_SOA(), HomePatch::doMarginCheck(), HomePatch::doMarginCheck_SOA(), HomePatch::doPairlistCheck(), ComputePme::doQMWork(), ComputeTclBC::doWork(), ComputeGBISser::doWork(), ComputeGlobal::doWork(), CudaComputeNonbonded::doWork(), ComputeHomeTuples< TholeElem, Thole, TholeValue >::doWork(), dumpbench(), HomePatch::exchangeAtoms(), HomePatch::exchangeCheckpoint(), CudaPmeOneDevice::finishReduction(), Output::force(), Patch::forceBoxClosed(), Output::forceNeeded(), PmeZPencil::forward_fft(), PmeYPencil::forward_fft(), PmeXPencil::forward_fft(), ComputePmeCUDADevice::gatherForce(), ComputePmeCUDADevice::gatherForceDone(), HomePatch::gbisComputeAfterP1(), HomePatch::gbisComputeAfterP2(), GlobalMasterIMD::get_vmd_forces(), GlobalMaster::getCurrentReduction(), CudaComputeNonbonded::getCurrentReduction(), ComputeLjPmeSerialMgr::getLJparameters(), Controller::getTotalPotentialEnergy(), GlobalMaster::GlobalMaster(), GlobalMasterEasy::GlobalMasterEasy(), GlobalMasterFreeEnergy::GlobalMasterFreeEnergy(), GlobalMasterIMD::GlobalMasterIMD(), GlobalMasterServer::GlobalMasterServer(), GlobalMasterSymmetry::GlobalMasterSymmetry(), GlobalMasterTMD::GlobalMasterTMD(), ComputePmeMgr::gridCalc2R(), Sequencer::hardWallDrude(), HomePatch::hardWallDrude(), colvarproxy_namd::init_atom_group(), colvarproxy_namd::init_atoms_map(), colvarproxy_namd::init_tcl_pointers(), colvarproxy_namd::init_volmap_by_name(), ComputeCUDAMgr::initialize(), ComputePmeCUDA::initialize(), LjPmeCompute::initialize(), LdbCoordinator::initialize(), ComputeQM::initialize(), CudaComputeNonbonded::initialize(), ComputeMsmMgr::initialize(), ComputePmeMgr::initialize(), ComputePmeCUDADevice::initialize(), ComputePmeMgr::initialize_computes(), ComputePmeMgr::initialize_pencils(), Controller::integrate(), Sequencer::integrate(), Sequencer::integrate_SOA(), isPmeProcessor(), Sequencer::langevinPiston(), Sequencer::langevinVelocities(), Sequencer::langevinVelocitiesBBK1(), Sequencer::langevinVelocitiesBBK2(), CudaComputeNonbonded::launchWork(), LJTable::LJTable(), ComputeHomeTuples< TholeElem, Thole, TholeValue >::loadTuples(), HomePatch::loweAndersenVelocities(), WorkDistrib::mapComputes(), Sequencer::maximumMove(), Sequencer::maximumMove_SOA(), ScriptTcl::measure(), ComputePmeCUDADevice::mergeForcesOnPatch(), Sequencer::minimize(), HomePatch::minimize_rattle2(), HomePatch::mollyAverage(), HomePatch::mollyMollify(), Controller::monteCarloPressure_accept(), Controller::multigatorCalcEnthalpy(), NAMD_bug(), NAMD_die(), NAMD_err(), NAMD_quit(), NamdHybridLB::NamdHybridLB(), CudaComputeNonbonded::openBoxesOnPe(), PmePencil< CBase_PmeZPencil >::order_init(), Patch::Patch(), PatchDataSOA_set_buffer(), PatchDataSOA_set_size(), WorkDistrib::patchMapInit(), Compute::patchReady(), PmeXPencil::pme_kspace(), Patch::positionsReady(), HomePatch::positionsReady(), HomePatch::positionsReady_SOA(), Controller::printEnergies(), Controller::printMinimizeEnergies(), HomePatch::qmSwapAtoms(), Sequencer::rattle1(), HomePatch::rattle1(), Sequencer::rattle1_SOA(), HomePatch::rattle1_SOA(), HomePatch::rattle1old(), HomePatch::rattle2(), ParallelIOMgr::readInfoForParOutDcdSelection(), LdbCoordinator::rebalance(), Controller::rebalanceLoad(), ProxyPatch::receiveAll(), ProxyPatch::receiveData(), CollectionMaster::receiveDataStream(), CollectionMaster::receiveForces(), CollectionMaster::receivePositions(), CollectionMaster::receivePositionsDcdSelection(), Controller::receivePressure(), CollectionMaster::receiveVelocities(), recursive_bisect_with_curve(), ComputePmeCUDADevice::recvAtoms(), ParallelIOMgr::recvAtomsCntPerPatch(), ComputePmeCUDADevice::recvAtomsFromNeighbor(), recvCheckpointCAck_handler(), recvCheckpointCReq_handler(), HomePatch::recvCheckpointLoad(), ComputeMgr::recvComputeConsForceMsg(), ComputeExtMgr::recvCoord(), ComputeMsmSerialMgr::recvCoord(), ComputeLjPmeSerialMgr::recvCoord(), ComputeFmmSerialMgr::recvCoord(), ComputeGBISserMgr::recvCoord(), ComputeMgr::recvCudaGlobalMasterCreateMsg(), ComputeMgr::recvCudaGlobalMasterRemoveMsg(), ComputeMgr::recvCudaGlobalMasterUpdateMsg(), ParallelIOMgr::recvDcdParams(), HomePatch::recvExchangeMsg(), ComputeQMMgr::recvPartQM(), ComputeQMMgr::recvPntChrg(), recvReplicaDcdData(), recvReplicaDcdInit(), ComputeGlobal::recvResults(), Sequencer::reloadCharges(), Controller::rescaleaccelMD(), Sequencer::rescaleSoluteCharges(), CudaComputeNonbonded::reSortTileLists(), HomePatch::revert(), ScriptTcl::run(), ComputeQM::saveResults(), ComputeGlobal::saveTotalForces(), ComputePmeUtil::select(), ComputeNonbondedUtil::select(), PmeZPencil::send_all_ungrid(), GlobalMasterIMD::send_energies(), GlobalMasterIMD::send_fcoords(), PmeZPencil::send_trans(), PmeYPencil::send_trans(), PmeYPencil::send_untrans(), PmeXPencil::send_untrans(), ComputePmeCUDADevice::sendAtomsToNeighbor(), ComputeMgr::sendComputeGlobalData(), ComputeMgr::sendComputeGlobalResults(), ParallelIOMgr::sendDcdParams(), ComputePmeCUDADevice::sendForcesToNeighbors(), ComputePmeMgr::sendTrans(), ComputePmeMgr::sendUngrid(), ComputePmeMgr::sendUntrans(), HomePatch::setGBISIntrinsicRadii(), PatchMgr::setLattice(), HomePatch::setLcpoType(), ComputeLjPmeSerialMgr::setLJparameters(), ComputePmeCUDAMgr::setupPencils(), SimpleBroadcastObject< Tensor >::SimpleBroadcastObject(), NamdHybridLB::splitComputes(), ComputePmeCUDADevice::spreadCharge(), CollectionMaster::startNextRoundOutputForce(), CollectionMaster::startNextRoundOutputPos(), CollectionMaster::startNextRoundOutputVel(), NamdCentLB::Strategy(), CollectionMgr::submitForces(), CollectionMgr::submitPositions(), ExclElem::submitReductionData(), PmePencilXYZ::submitReductions(), PmePencilZ::submitReductions(), ComputePmeMgr::submitReductions(), CollectionMgr::submitVelocities(), Tcl_centerOfMass(), Tcl_centerOfNumber(), Tcl_loadCoords(), Tcl_radiusOfGyration(), Sequencer::tcoupleVelocities(), ComputePme::ungridForces(), colvarproxy_namd::update_atom_properties(), colvarproxy_namd::update_atoms_map(), colvarproxy_namd::update_group_properties(), ComputeLonepairsCUDA::updateAtoms(), ComputeMgr::updateLocalComputes4(), Output::velocity(), Output::velocityNeeded(), ReductionMgr::willRequire(), ReductionMgr::willSubmit(), wrap_coor_int(), wrap_coor_int_dcd_selection(), and CollectionMaster::wrapCoorFinished().

86 {return CkpvAccess(Node_instance);}

◆ ObjectOnPe()

static Node* Node::ObjectOnPe ( int  pe)
inlinestatic

Definition at line 87 of file Node.h.

87 {return CkpvAccessOther(Node_instance, CmiRankOf(pe));}

◆ outputPatchComputeMaps()

void Node::outputPatchComputeMaps ( const char *  filename,
int  tag 
)

Definition at line 1620 of file Node.C.

References Patch::getNumAtoms(), gNAMDBinaryName, PatchMap::gridsize_a(), PatchMap::gridsize_b(), PatchMap::gridsize_c(), NAMD_die(), ComputeMap::node(), PatchMap::node(), ComputeMap::numComputes(), PatchMap::numPatches(), PatchMap::Object(), ComputeMap::Object(), SimParameters::outputMaps, PatchMap::patch(), ComputeMap::pid(), simParameters, SimParameters::simulatedNodeSize, SimParameters::simulatedPEs, SimParameters::simulateInitialMapping, and ComputeMap::type().

Referenced by Controller::rebalanceLoad(), and startup().

1620  {
1622 
1623  int numpes = CkNumPes();
1624  int nodesize = CkMyNodeSize();
1626  numpes = simParameters->simulatedPEs;
1627  nodesize = simParameters->simulatedNodeSize;
1628  }
1629 
1630  char fname[128];
1631  sprintf(fname, "mapdump_%s.%d_%d_%d_%s", filename, numpes, nodesize, tag, gNAMDBinaryName);
1632 
1633  FILE *fp = fopen(fname, "w");
1634  if(fp == NULL) {
1635  NAMD_die("Error in outputing PatchMap and ComputeMap info!\n");
1636  return;
1637  }
1638  PatchMap *pMap = PatchMap::Object();
1639  ComputeMap *cMap = ComputeMap::Object();
1640  int numPatches = pMap->numPatches();
1641  int numComputes = cMap->numComputes();
1642  fprintf(fp, "%d %d %d %d %d %d %d\n", numpes, nodesize, numPatches, numComputes,
1643  pMap->gridsize_a(), pMap->gridsize_b(), pMap->gridsize_c());
1644  //output PatchMap info
1645  for(int i=0; i<numPatches; i++) {
1646  #ifdef MEM_OPT_VERSION
1647  fprintf(fp, "%d %d\n", pMap->numAtoms(i), pMap->node(i));
1648  #else
1649  fprintf(fp, "%d %d\n", pMap->patch(i)->getNumAtoms(), pMap->node(i));
1650  #endif
1651  }
1652 
1653  //output ComputeMap info
1654  for(int i=0; i<numComputes; i++) {
1655  fprintf(fp, "%d %d %d %d\n", cMap->node(i), cMap->type(i), cMap->pid(i,0), cMap->pid(i,1));
1656  }
1657 }
Bool simulateInitialMapping
int getNumAtoms() const
Definition: Patch.h:105
int numComputes(void)
Definition: ComputeMap.h:103
static PatchMap * Object()
Definition: PatchMap.h:27
SimParameters * simParameters
Definition: Node.h:181
Patch * patch(PatchID pid)
Definition: PatchMap.h:244
int gridsize_c(void) const
Definition: PatchMap.h:66
int gridsize_a(void) const
Definition: PatchMap.h:64
int numPatches(void) const
Definition: PatchMap.h:59
char * gNAMDBinaryName
Definition: BackEnd.C:247
ComputeType type(ComputeID cid)
Definition: ComputeMap.C:118
void NAMD_die(const char *err_msg)
Definition: common.C:148
static ComputeMap * Object()
Definition: ComputeMap.h:91
int node(ComputeID cid)
Definition: ComputeMap.h:108
int gridsize_b(void) const
Definition: PatchMap.h:65
int pid(ComputeID cid, int i)
Definition: ComputeMap.C:107
int node(int pid) const
Definition: PatchMap.h:114

◆ papiMeasureBarrier()

void Node::papiMeasureBarrier ( int  turnOnMeasure,
int  step 
)

Definition at line 1525 of file Node.C.

References curMFlopStep.

1525  {
1526 #ifdef MEASURE_NAMD_WITH_PAPI
1527  curMFlopStep = step;
1528  double results[NUM_PAPI_EVENTS+1];
1529 
1530  if(turnOnMeasure){
1531  CkpvAccess(papiEvents)[NUM_PAPI_EVENTS]=CmiWallTimer();
1532 
1533  long long counters[NUM_PAPI_EVENTS+1];
1534  int ret=PAPI_start_counters(CkpvAccess(papiEvents), NUM_PAPI_EVENTS);
1535  if(ret==PAPI_OK)
1536  {
1537  // CkPrintf("traceBarrier start counters (%d) at step %d called on proc %d\n", turnOnMeasure, step, CkMyPe());
1538  }
1539  else
1540  {
1541  CkPrintf("error PAPI_start_counters (%d) at step %d called on proc %d\n",ret , step, CkMyPe());
1542  }
1543  if(PAPI_read_counters(counters, NUM_PAPI_EVENTS)!=PAPI_OK)
1544  {
1545  CkPrintf("error PAPI_read_counters %d\n",PAPI_read_counters(counters, NUM_PAPI_EVENTS));
1546  };
1547  }else{
1548  long long counters[NUM_PAPI_EVENTS+1];
1549  for(int i=0;i<NUM_PAPI_EVENTS;i++) counters[i]=0LL;
1550  if(PAPI_read_counters(counters, NUM_PAPI_EVENTS)==PAPI_OK)
1551  {
1552 #if !MEASURE_PAPI_SPP
1553  results[0] = (double)counters[0]/1e6;
1554  results[1] = (double)counters[1]/1e6;
1555 #else
1556  for(int i=0;i<NUM_PAPI_EVENTS;i++) results[i] = counters[i]/1e6;
1557 #endif
1558  // for(int i=0;i<NUM_PAPI_EVENTS;i++) CkPrintf("[%d] counter %d is %ld\n",CkMyPe(),i,counters[i]);
1559  }
1560  else
1561  {
1562  // CkPrintf("error PAPI_read_counters %d\n",PAPI_read_counters(counters, NUM_PAPI_EVENTS));
1563  }
1564  // CkPrintf("traceBarrier stop counters (%d) at step %d called on proc %d\n", turnOnMeasure, step, CkMyPe());
1565 
1566  PAPI_stop_counters(counters, NUM_PAPI_EVENTS);
1567  }
1568  if(CkMyPe()==0)
1569  // CkPrintf("traceBarrier (%d) at step %d called on proc %d\n", turnOnMeasure, step, CkMyPe());
1570  results[NUM_PAPI_EVENTS]=CkpvAccess(papiEvents)[NUM_PAPI_EVENTS]; //starttime
1571  CProxy_Node nd(CkpvAccess(BOCclass_group).node);
1572  CkCallback cb(CkIndex_Node::resumeAfterPapiMeasureBarrier(NULL), nd[0]);
1573  contribute(sizeof(double)*(NUM_PAPI_EVENTS+1), &results, CkReduction::sum_double, cb);
1574 #endif
1575 }
int curMFlopStep
Definition: Node.h:157

◆ recvCheckpointAck()

void Node::recvCheckpointAck ( CheckpointMsg msg)

Definition at line 1425 of file Node.C.

References CheckpointMsg::checkpoint, Controller::recvCheckpointAck(), and state.

Referenced by recvCheckpointCAck_handler().

1425  {
1426  state->controller->recvCheckpointAck(msg->checkpoint);
1427  delete msg;
1428 }
Controller::checkpoint checkpoint
Definition: Node.C:102
NamdState * state
Definition: Node.h:184
void recvCheckpointAck(checkpoint &cp)
Definition: Controller.C:4976

◆ recvCheckpointReq()

void Node::recvCheckpointReq ( CheckpointMsg msg)

Definition at line 1403 of file Node.C.

References CheckpointMsg::checkpoint, CheckpointMsg::key, Controller::recvCheckpointReq(), CheckpointMsg::replica, state, and CheckpointMsg::task.

Referenced by recvCheckpointCReq_handler().

1403  {
1404  state->controller->recvCheckpointReq(msg->key,msg->task,msg->checkpoint);
1405 
1406  int remote = msg->replica;
1407  msg->replica = CmiMyPartition();
1408  envelope *env = UsrToEnv(CheckpointMsg::pack(msg));
1409  CmiSetHandler(env,recvCheckpointCAck_index);
1410 #if CMK_HAS_PARTITION
1411  CmiInterSyncSendAndFree(CkMyPe(),remote,env->getTotalsize(),(char*)env);
1412 #else
1413  CmiSyncSendAndFree(CkMyPe(),env->getTotalsize(),(char*)env);
1414 #endif
1415 }
void recvCheckpointReq(const char *key, int task, checkpoint &cp)
Definition: Controller.C:4946
int task
Definition: Node.C:100
int replica
Definition: Node.C:101
Controller::checkpoint checkpoint
Definition: Node.C:102
NamdState * state
Definition: Node.h:184
char * key
Definition: Node.C:103

◆ recvEnableEarlyExit()

void Node::recvEnableEarlyExit ( void  )

Definition at line 1460 of file Node.C.

References enableEarlyExit().

1460  {
1461  enableEarlyExit();
1462 }
void enableEarlyExit(void)
Definition: Node.C:1464

◆ recvEnableExitScheduler()

void Node::recvEnableExitScheduler ( void  )

Definition at line 1437 of file Node.C.

References enableExitScheduler().

1437  {
1438  //CmiPrintf("recvEnableExitScheduler\n");
1440 }
void enableExitScheduler(void)
Definition: Node.C:1442

◆ reloadCharges() [1/2]

void Node::reloadCharges ( const char *  filename)

Definition at line 1227 of file Node.C.

References molecule, NAMD_die(), and Molecule::numAtoms.

1227  {
1228  FILE *file = fopen(filename,"r");
1229  if ( ! file ) NAMD_die("node::reloadCharges():Error opening charge file.");
1230 
1231  int n = molecule->numAtoms;
1232  float *charge = new float[n];
1233 
1234  for ( int i = 0; i < n; ++i ) {
1235  if ( ! fscanf(file,"%f",&charge[i]) )
1236  NAMD_die("Node::reloadCharges():Not enough numbers in charge file.");
1237  }
1238 
1239  fclose(file);
1240  CProxy_Node(thisgroup).reloadCharges(charge,n);
1241 #ifdef NODEGROUP_FORCE_REGISTER
1242  if(CkMyPe()==0)
1243  {
1244  CProxy_PatchData cpdata(CkpvAccess(BOCclass_group).patchData);
1245  cpdata.setDeviceKernelUpdateCounter();
1246  }
1247 #endif
1248  delete [] charge;
1249 }
int numAtoms
Definition: Molecule.h:586
void NAMD_die(const char *err_msg)
Definition: common.C:148
Molecule * molecule
Definition: Node.h:179

◆ reloadCharges() [2/2]

void Node::reloadCharges ( float  charge[],
int  n 
)

Definition at line 1251 of file Node.C.

References molecule, and Molecule::reloadCharges().

1251  {
1252  molecule->reloadCharges(charge,n);
1253 }
void reloadCharges(float charge[], int n)
Molecule * molecule
Definition: Node.h:179

◆ reloadGridforceGrid() [1/2]

void Node::reloadGridforceGrid ( const char *  key)

Definition at line 1257 of file Node.C.

References DebugM, endi(), MGridforceParamsList::find_key(), Molecule::get_gridfrc_grid(), MGridforceParamsList::index_for_key(), SimParameters::mgridforcelist, MGRIDFORCEPARAMS_DEFAULTKEY, molecule, NAMD_bug(), NAMD_die(), GridforceGrid::reinitialize(), and simParameters.

1257  {
1258  DebugM(4, "reloadGridforceGrid(const char*) called on node " << CkMyPe() << "\n" << endi);
1259 
1260  int gridnum;
1261  MGridforceParams *mgridParams;
1262  if (key == NULL) {
1265  } else {
1266  gridnum = simParameters->mgridforcelist.index_for_key(key);
1267  mgridParams = simParameters->mgridforcelist.find_key(key);
1268  }
1269 
1270  if (gridnum < 0 || mgridParams == NULL) {
1271  NAMD_die("Node::reloadGridforceGrid(const char*):Could not find grid.");
1272  }
1273 
1274  GridforceGrid *grid = molecule->get_gridfrc_grid(gridnum);
1275  if (grid == NULL) {
1276  NAMD_bug("Node::reloadGridforceGrid(const char*):grid not found");
1277  }
1278  grid->reinitialize(simParameters, mgridParams);
1279 
1280  CProxy_Node(thisgroup).reloadGridforceGrid(gridnum);
1281 #ifdef NODEGROUP_FORCE_REGISTER
1282  if(CkMyPe()==0)
1283  {
1284  CProxy_PatchData cpdata(CkpvAccess(BOCclass_group).patchData);
1285  cpdata.setDeviceKernelUpdateCounter();
1286  }
1287 #endif
1288  DebugM(4, "reloadGridforceGrid(const char*) finished\n" << endi);
1289 }
GridforceGrid * get_gridfrc_grid(int gridnum) const
Definition: Molecule.h:1368
SimParameters * simParameters
Definition: Node.h:181
#define DebugM(x, y)
Definition: Debug.h:75
std::ostream & endi(std::ostream &s)
Definition: InfoStream.C:54
virtual void reinitialize(SimParameters *simParams, MGridforceParams *mgridParams)=0
int index_for_key(const char *key)
void NAMD_bug(const char *err_msg)
Definition: common.C:196
#define MGRIDFORCEPARAMS_DEFAULTKEY
MGridforceParams * find_key(const char *key)
void NAMD_die(const char *err_msg)
Definition: common.C:148
MGridforceParamsList mgridforcelist
Molecule * molecule
Definition: Node.h:179

◆ reloadGridforceGrid() [2/2]

void Node::reloadGridforceGrid ( int  gridnum)

Definition at line 1338 of file Node.C.

References ALLBUTME, BUFSIZE, DebugM, MOStream::end(), endi(), Molecule::get_gridfrc_grid(), GRIDFORCEGRIDTAG, molecule, NAMD_bug(), GridforceGrid::pack_grid(), Molecule::set_gridfrc_grid(), and GridforceGrid::unpack_grid().

1338  {
1339  if (CmiMyRank()) return;
1340  DebugM(4, "reloadGridforceGrid(int) called on node " << CkMyPe() << "\n" << endi);
1341 
1342  GridforceGrid *grid = molecule->get_gridfrc_grid(gridnum);
1343  if (grid == NULL) {
1344  NAMD_bug("Node::reloadGridforceGrid(int):grid not found");
1345  }
1346 
1347  if (CkMyPe()) {
1348  // not node 0 -> receive grid
1349  DebugM(4, "Receiving grid\n");
1350 
1351  delete grid;
1352 
1353  MIStream *msg = CkpvAccess(comm)->newInputStream(0, GRIDFORCEGRIDTAG);
1354  grid = GridforceGrid::unpack_grid(gridnum, msg);
1355  molecule->set_gridfrc_grid(gridnum, grid);
1356  delete msg;
1357  } else {
1358  // node 0 -> send grid
1359  DebugM(4, "Sending grid\n");
1360 
1361  MOStream *msg = CkpvAccess(comm)->newOutputStream(ALLBUTME, GRIDFORCEGRIDTAG, BUFSIZE);
1362  GridforceGrid::pack_grid(grid, msg);
1363  msg->end();
1364  delete msg;
1365  }
1366 #ifdef NODEGROUP_FORCE_REGISTER
1367  if(CkMyPe()==0)
1368  {
1369  CProxy_PatchData cpdata(CkpvAccess(BOCclass_group).patchData);
1370  cpdata.setDeviceKernelUpdateCounter();
1371  }
1372 #endif
1373  DebugM(4, "reloadGridforceGrid(int) finished\n" << endi);
1374 }
#define GRIDFORCEGRIDTAG
Definition: common.h:183
GridforceGrid * get_gridfrc_grid(int gridnum) const
Definition: Molecule.h:1368
void end(void)
Definition: MStream.C:176
static void pack_grid(GridforceGrid *grid, MOStream *msg)
Definition: GridForceGrid.C:50
#define DebugM(x, y)
Definition: Debug.h:75
std::ostream & endi(std::ostream &s)
Definition: InfoStream.C:54
#define ALLBUTME
Definition: Communicate.h:14
void NAMD_bug(const char *err_msg)
Definition: common.C:196
#define BUFSIZE
Definition: Communicate.h:15
static GridforceGrid * unpack_grid(int gridnum, MIStream *msg)
Definition: GridForceGrid.C:60
int set_gridfrc_grid(int gridnum, GridforceGrid *grid)
Definition: Molecule.h:1377
Molecule * molecule
Definition: Node.h:179

◆ reloadStructure()

void Node::reloadStructure ( const char *  fname,
const char *  pdbname 
)

Definition at line 1071 of file Node.C.

References NamdState::loadStructure(), molecule, pdb, and state.

1071  {
1072  delete molecule;
1073  molecule = state->molecule = 0;
1074  delete pdb;
1075  pdb = state->pdb = 0;
1076  state->loadStructure(fname,pdbname,1);
1077  this->molecule = state->molecule;
1078  this->pdb = state->pdb;
1079  CProxy_Node nodeProxy(thisgroup);
1080  nodeProxy.resendMolecule();
1081 }
int loadStructure(const char *, const char *, int)
Definition: NamdState.C:165
NamdState * state
Definition: Node.h:184
PDB * pdb
Definition: Node.h:183
Molecule * molecule
Definition: Node.h:179

◆ resendMolecule()

void Node::resendMolecule ( )

Definition at line 1084 of file Node.C.

References ALLBUTME, BUFSIZE, molecule, MOLECULETAG, node_molecule, node_parameters, SimParameters::nonbonded_select(), Molecule::numAtoms, parameters, SimParameters::pme_select(), SimParameters::PMEOn, Molecule::receive_Molecule(), Parameters::receive_Parameters(), Molecule::send_Molecule(), Parameters::send_Parameters(), simParameters, and STATICPARAMSTAG.

1084  {
1085  if ( CmiMyRank() ) {
1086  return;
1087  }
1088  if ( CmiMyPe() == 0 ) {
1089  int bufSize = BUFSIZE;
1090  MOStream *conv_msg;
1091  conv_msg = CkpvAccess(comm)->newOutputStream(ALLBUTME, STATICPARAMSTAG, bufSize);
1092  parameters->send_Parameters(conv_msg);
1093  if(molecule->numAtoms>=1000000) bufSize = 16*BUFSIZE;
1094  conv_msg = CkpvAccess(comm)->newOutputStream(ALLBUTME, MOLECULETAG, bufSize);
1095  molecule->send_Molecule(conv_msg);
1096  } else {
1097  MIStream *conv_msg;
1098  delete parameters;
1099  parameters = new Parameters;
1100  conv_msg = CkpvAccess(comm)->newInputStream(0, STATICPARAMSTAG);
1101  parameters->receive_Parameters(conv_msg);
1102  delete molecule;
1104  conv_msg = CkpvAccess(comm)->newInputStream(0, MOLECULETAG);
1105  molecule->receive_Molecule(conv_msg);
1106  }
1111  CProxy_Node nodeProxy(thisgroup);
1112  for ( int i=0; i<CmiMyNodeSize(); ++i ) {
1113  nodeProxy[CmiMyPe()+i].resendMolecule2();
1114  }
1115 }
void send_Molecule(MOStream *)
Definition: Molecule.C:5665
SimParameters * simParameters
Definition: Node.h:181
#define ALLBUTME
Definition: Communicate.h:14
#define STATICPARAMSTAG
Definition: common.h:178
Molecule * node_molecule
Definition: Node.C:439
Molecule stores the structural information for the system.
Definition: Molecule.h:174
static void pme_select()
int numAtoms
Definition: Molecule.h:586
#define BUFSIZE
Definition: Communicate.h:15
static void nonbonded_select()
void send_Parameters(MOStream *)
Definition: Parameters.C:6560
Parameters * parameters
Definition: Node.h:180
Parameters * node_parameters
Definition: Node.C:438
#define MOLECULETAG
Definition: common.h:179
void receive_Molecule(MIStream *)
Definition: Molecule.C:6031
Molecule * molecule
Definition: Node.h:179
void receive_Parameters(MIStream *)
Definition: Parameters.C:6936

◆ resendMolecule2()

void Node::resendMolecule2 ( )

Definition at line 1117 of file Node.C.

References AtomMap::allocateMap(), molecule, node_molecule, node_parameters, Molecule::numAtoms, AtomMap::Object(), and parameters.

1117  {
1121 }
void allocateMap(int nAtomIDs)
Definition: AtomMap.C:161
Molecule * node_molecule
Definition: Node.C:439
int numAtoms
Definition: Molecule.h:586
static AtomMap * Object()
Definition: AtomMap.h:37
Parameters * parameters
Definition: Node.h:180
Parameters * node_parameters
Definition: Node.C:438
Molecule * molecule
Definition: Node.h:179

◆ resumeAfterPapiMeasureBarrier()

void Node::resumeAfterPapiMeasureBarrier ( CkReductionMsg *  msg)

Definition at line 1577 of file Node.C.

References curMFlopStep, simParameters, and state.

1577  {
1578 #ifdef MEASURE_NAMD_WITH_PAPI
1579 
1580  if(simParameters->papiMeasureStartStep != curMFlopStep) {
1581  double *results = (double *)msg->getData();
1582  double endtime=CmiWallTimer();
1583  int bstep = simParameters->papiMeasureStartStep;
1584  int estep = bstep + simParameters->numPapiMeasureSteps;
1585 #if MEASURE_PAPI_SPP
1586  CkPrintf("SPP INFO: PAPI_FP_OPS timestep %d to %d is %lf(1e6)\n", bstep,estep,results[0]);
1587  CkPrintf("SPP INFO: PAPI_TOT_INS timestep %d to %d is %lf(1e6)\n", bstep,estep,results[1]);
1588  CkPrintf("SPP INFO: perf::PERF_COUNT_HW_CACHE_LL:MISS timestep %d to %d is %lf(1e6)\n", bstep,estep,results[2]);
1589  CkPrintf("SPP INFO: DATA_PREFETCHER:ALL timestep %d to %d is %lf(1e6)\n", bstep,estep,results[3]);
1590  CkPrintf("SPP INFO: PAPI_L1_DCA timestep %d to %d is %lf(1e6)\n", bstep,estep,results[4]);
1591  CkPrintf("SPP INFO: PAPI_TOT_CYC timestep %d to % is %lf(1e6)\n", bstep,estep,results[5]);
1592  // CkPrintf("SPP INFO: INSTRUCTION_FETCH_STALL timestep %d to %d is %lf(1e6)\n", bstep,estep,results[6]);
1593  // CkPrintf("SPP INFO: WALLtime timestep %d to %d is %lf\n", bstep,estep,endtime-results[NUM_PAPI_EVENTS]/CkNumPes());
1594  CkPrintf("SPP INFO: WALLtime timestep %d to %d is %lf\n", bstep,estep,endtime-results[NUM_PAPI_EVENTS]);
1595  CkPrintf("SPP INFO: endtime %lf avgtime %lf tottime %lf\n", endtime,results[NUM_PAPI_EVENTS]/CkNumPes(),results[NUM_PAPI_EVENTS] );
1596 #else
1597  if(CkpvAccess(papiEvents)[0] == PAPI_FP_INS){
1598  double totalFPIns = results[0];
1599  if(CkpvAccess(papiEvents)[1] == PAPI_FMA_INS) totalFPIns += (results[1]*2);
1600  CkPrintf("FLOPS INFO: from timestep %d to %d, the total FP instruction of NAMD is %lf(x1e6) per processor\n",
1601  bstep, estep, totalFPIns/CkNumPes());
1602  }else{
1603  char nameBuf[PAPI_MAX_STR_LEN];
1604  CkPrintf("PAPI COUNTERS INFO: from timestep %d to %d, ",
1605  bstep, estep);
1606  for(int i=0; i<NUM_PAPI_EVENTS; i++) {
1607  PAPI_event_code_to_name(CkpvAccess(papiEvents)[i], nameBuf);
1608  CkPrintf("%s is %lf(x1e6), ", nameBuf, results[i]/CkNumPes());
1609  }
1610  CkPrintf("per processor\n");
1611  }
1612 #endif
1613  }
1614  delete msg;
1615  state->controller->resumeAfterPapiMeasureBarrier(curMFlopStep);
1616 #endif
1617 }
SimParameters * simParameters
Definition: Node.h:181
int curMFlopStep
Definition: Node.h:157
NamdState * state
Definition: Node.h:184

◆ resumeAfterTraceBarrier()

void Node::resumeAfterTraceBarrier ( CkReductionMsg *  msg)

Definition at line 1519 of file Node.C.

References curTimeStep, Controller::resumeAfterTraceBarrier(), and state.

1519  {
1520  CmiAssert(CmiMyPe()==0);
1521  delete msg;
1523 }
int curTimeStep
Definition: Node.h:152
NamdState * state
Definition: Node.h:184
void resumeAfterTraceBarrier(int)
Definition: Controller.C:5016

◆ run()

void Node::run ( void  )

Definition at line 1176 of file Node.C.

References ResizeArrayIter< T >::begin(), DebugM, ResizeArrayIter< T >::end(), endi(), PatchMap::homePatchList(), iINFO(), iout, memusage_MB(), PatchMap::Object(), NamdState::runController(), HomePatch::runSequencer(), startupTime, and state.

Referenced by messageRun().

1177 {
1178 // NAMD_EVENT_START(1, NamdProfileEvent::NODE_RUN);
1179 
1180  // Start Controller (aka scalar Sequencer) on Pe(0)
1181 // printf("\n\n I am in Node.C in run method about to call state->runController\n\n");
1182  if ( ! CkMyPe() ) {
1183  state->runController();
1184  }
1185 
1186  DebugM(4, "Starting Sequencers\n");
1187  // Run Sequencer on each HomePatch - i.e. start simulation
1190  for (ai=ai.begin(); ai != ai.end(); ai++) {
1191  HomePatch *patch = (*ai).patch;
1192 //CkPrintf("Proc#%d in Node calling Sequencer ",CkMyPe());
1193  patch->runSequencer();
1194  }
1195 
1196  if (!CkMyPe()) {
1197  double newTime = CmiWallTimer();
1198  iout << iINFO << "Startup phase " << startupPhase-1 << " took "
1199  << newTime - startupTime << " s, "
1200  << memusage_MB() << " MB of memory in use\n";
1201  iout << iINFO << "Finished startup at " << newTime << " s, "
1202  << memusage_MB() << " MB of memory in use\n\n" << endi;
1203  fflush(stdout);
1204  }
1205 
1206 // NAMD_EVENT_STOP(1, NamdProfileEvent::NODE_RUN);
1207 }
std::ostream & iINFO(std::ostream &s)
Definition: InfoStream.C:81
void runSequencer(void)
Definition: HomePatch.C:305
static PatchMap * Object()
Definition: PatchMap.h:27
#define DebugM(x, y)
Definition: Debug.h:75
double startupTime
Definition: Node.C:300
HomePatchList * homePatchList()
Definition: PatchMap.C:438
std::ostream & endi(std::ostream &s)
Definition: InfoStream.C:54
#define iout
Definition: InfoStream.h:51
void runController(void)
Definition: NamdState.C:83
double memusage_MB()
Definition: memusage.h:13
NamdState * state
Definition: Node.h:184

◆ saveMolDataPointers()

void Node::saveMolDataPointers ( NamdState state)

Definition at line 1480 of file Node.C.

References configList, molecule, parameters, pdb, simParameters, and state.

1481 {
1482  this->molecule = state->molecule;
1483  this->parameters = state->parameters;
1484  this->simParameters = state->simParameters;
1485  this->configList = state->configList;
1486  this->pdb = state->pdb;
1487  this->state = state;
1488 }
SimParameters * simParameters
Definition: Node.h:181
NamdState * state
Definition: Node.h:184
PDB * pdb
Definition: Node.h:183
ConfigList * configList
Definition: Node.h:182
Parameters * parameters
Definition: Node.h:180
Molecule * molecule
Definition: Node.h:179

◆ scriptBarrier()

void Node::scriptBarrier ( void  )

Definition at line 1218 of file Node.C.

1218  {
1219  //script->awaken();
1220 }

◆ scriptParam()

void Node::scriptParam ( ScriptParamMsg msg)

Definition at line 1222 of file Node.C.

References ScriptParamMsg::param, SimParameters::scriptSet(), simParameters, and ScriptParamMsg::value.

1222  {
1223  simParameters->scriptSet(msg->param,msg->value);
1224  delete msg;
1225 }
SimParameters * simParameters
Definition: Node.h:181
void scriptSet(const char *, const char *)
char value[MAX_SCRIPT_PARAM_SIZE]
Definition: Node.h:75
char param[MAX_SCRIPT_PARAM_SIZE]
Definition: Node.h:74

◆ sendCheckpointReq()

void Node::sendCheckpointReq ( int  remote,
const char *  key,
int  task,
Lattice lat,
ControllerState cs 
)

Definition at line 1379 of file Node.C.

References CheckpointMsg::checkpoint, CheckpointMsg::key, Controller::checkpoint::lattice, CheckpointMsg::replica, Controller::checkpoint::state, and CheckpointMsg::task.

Referenced by Controller::algorithm().

1379  {
1380  CheckpointMsg *msg = new (1+strlen(key),0) CheckpointMsg;
1381  msg->replica = CmiMyPartition();
1382  msg->task = task;
1383  msg->checkpoint.lattice = lat;
1384  msg->checkpoint.state = cs;
1385  strcpy(msg->key,key);
1386  envelope *env = UsrToEnv(CheckpointMsg::pack(msg));
1387  CmiSetHandler(env,recvCheckpointCReq_index);
1388 #if CMK_HAS_PARTITION
1389  CmiInterSyncSendAndFree(CkMyPe(),remote,env->getTotalsize(),(char*)env);
1390 #else
1391  CmiSyncSendAndFree(CkMyPe(),env->getTotalsize(),(char*)env);
1392 #endif
1393 }
ControllerState state
Definition: Controller.h:388
int task
Definition: Node.C:100
int replica
Definition: Node.C:101
Controller::checkpoint checkpoint
Definition: Node.C:102
char * key
Definition: Node.C:103

◆ sendEnableEarlyExit()

void Node::sendEnableEarlyExit ( void  )

Definition at line 1455 of file Node.C.

Referenced by enableEarlyExit().

1455  {
1456  CProxy_Node nodeProxy(thisgroup);
1457  nodeProxy[0].recvEnableEarlyExit();
1458 }

◆ sendEnableExitScheduler()

void Node::sendEnableExitScheduler ( void  )

Definition at line 1431 of file Node.C.

Referenced by enableExitScheduler().

1431  {
1432  //CmiPrintf("sendEnableExitScheduler\n");
1433  CProxy_Node nodeProxy(thisgroup);
1434  nodeProxy[0].recvEnableExitScheduler();
1435 }

◆ setScript()

void Node::setScript ( ScriptTcl s)
inline

Definition at line 194 of file Node.h.

Referenced by after_backend_init().

194 { script = s; }

◆ startHPM()

void Node::startHPM ( )

Definition at line 1491 of file Node.C.

1491  {
1492 #if USE_HPM
1493  HPM_Start("500 steps", localRankOnNode);
1494 #endif
1495 }

◆ startup()

void Node::startup ( )

Definition at line 465 of file Node.C.

References Lattice::a_p(), AtomMap::allocateMap(), WorkDistrib::assignNodeToPatch(), Lattice::b_p(), ProxyMgr::buildProxySpanningTree(), Lattice::c_p(), computeMap, computeMgr, ComputeMgr::createComputes(), WorkDistrib::createHomePatches(), LdbCoordinator::createLoadBalancer(), ProxyMgr::createProxies(), SimParameters::CUDASOAintegrate, SimParameters::dcdSelectionOn, DebugM, WorkDistrib::distributeHomePatches(), endi(), BackEnd::exit(), PDB::get_extremes(), ProxyMgr::getRecvSpanning(), ProxyMgr::getSendSpanning(), iINFO(), SynchronousCollectives::initAllScope(), LdbCoordinator::initialize(), initializeGPUResident(), iout, SimParameters::isRecvSpanningTreeOn(), SimParameters::isSendSpanningTreeOn(), SimParameters::lattice, SimParameters::mallocTest, mallocTest_size, WorkDistrib::mapComputes(), memusage_MB(), messageRun(), molecule, SimParameters::MSMOn, SimParameters::MsmSerialOn, NAMD_bug(), NAMD_EVENT_START, NAMD_EVENT_STOP, node_molecule, node_parameters, node_simParameters, SimParameters::nonbonded_select(), Molecule::numAtoms, ComputeMap::numComputes(), PatchMap::Object(), AtomMap::Object(), Sync::Object(), SynchronousCollectives::Object(), ComputeMap::Object(), LdbCoordinator::Object(), ProxyMgr::Object(), Sync::openSync(), output, outputPatchComputeMaps(), parameters, WorkDistrib::patchMapInit(), pdb, SimParameters::pme_select(), SimParameters::PMEOn, PRIORITY_SIZE, proxyRecvSpanning, proxySendSpanning, SimParameters::proxyTreeBranchFactor, rand, SimParameters::randomSeed, registerUserEventsForAllComputeObjs(), WorkDistrib::sendComputeMap(), WorkDistrib::sendPatchMap(), SEQ_STK_SZ, WorkDistrib::setPatchMapArrived(), ProxyMgr::setProxyTreeBranchFactor(), ProxyMgr::setRecvSpanning(), ProxyMgr::setSendSpanning(), simParameters, SimParameters::simulatedNodeSize, SimParameters::simulatedPEs, SimParameters::simulateInitialMapping, MsmInitMsg::smax, MsmInitMsg::smin, Random::split(), startupTime, SimParameters::useCkLoop, SimParameters::usePMECUDA, and workDistrib.

Referenced by messageStartUp().

465  {
466  NAMD_EVENT_START(1, NamdProfileEvent::NAMD_STARTUP);
467 
468  int gotoRun = false;
469  double newTime;
470 
471  if (!CkMyPe()) {
472  if (!startupPhase) {
473  iout << iINFO << "\n";
474  startupTime = CmiWallTimer();
475  iout << iINFO << "Entering startup at " << startupTime << " s, ";
476  } else {
477  newTime = CmiWallTimer();
478  iout << iINFO << "Startup phase " << startupPhase-1 << " took "
479  << newTime - startupTime << " s, ";
480  startupTime = newTime;
481  }
482  iout << memusage_MB() << " MB of memory in use\n" << endi;
483  fflush(stdout);
484  }
485  switch (startupPhase) {
486 
487  case 0:
489  namdOneCommInit(); // Namd1.X style
490  break;
491 
492  case 1:
493  bindBocVars();
494 
495  // send & receive molecule, simparameters... (Namd1.X style)
496  if (CkMyPe()) {
497  namdOneRecv();
498  } else {
499  namdOneSend();
500  }
501  break;
502 
503  case 2:
504  // fix up one-per-node objects (for SMP version)
508 
511 
512  #if !CMK_SMP || ! USE_CKLOOP
513  //the CkLoop library should be only used in SMP mode
515  #else
516  if ( CkNumPes() < 2 * CkNumNodes() ) simParameters->useCkLoop = 0;
517  #endif
518 
519 
520  if ( simParameters->mallocTest ) {
521  if (!CkMyPe()) {
522  mallocTest_size = 0;
523  CkStartQD(CkIndex_Node::mallocTestQd(), &thishandle);
524  }
525  return;
526  }
527 
528 
529  #ifdef MEASURE_NAMD_WITH_PAPI
530  if(simParameters->papiMeasure) namdInitPapiCounters();
531  #endif
532 
533  #ifdef MEM_OPT_VERSION
534  //At this point, each Node object has received the simParameters,
535  //parameters and the atom signatures info from the master Node
536  //(proc 0). It's time to initialize the parallel IO manager and
537  //read the binary per-atom file --Chao Mei
538 
539  //Step 1: initialize the parallel IO manager per Node
540  ioMgr->initialize(this);
541  #endif
542 
543  break;
544 
545  case 3:
546 
547  #ifdef MEM_OPT_VERSION
548  //Step 2: read the binary per-atom files (signater index, coordinates etc.)
549  ioMgr->readPerAtomInfo();
551  if(!CkMyPe())
552  ioMgr->sendDcdParams();
553  #endif
554 
555  break;
556 
557  case 4:
558 
559  #ifdef MEM_OPT_VERSION
560  //Step 3: update counters of tuples and exclusions inside Molecule object
561  ioMgr->updateMolInfo();
562 
563  //Step 4: prepare distributing the atoms to neighboring procs if necessary
564  ioMgr->migrateAtomsMGrp();
565 
566  //step 5: initialize patchMap and send it to every other processors
567  //to decide atoms to patch distribution on every input processor
568  if(!CkMyPe()) {
569  workDistrib->patchMapInit(); // create space division
571  }
572  #endif
573 
574  #if USE_HPM
575  HPM_Init(localRankOnNode);
576  #endif
577 
578  // take care of inital thread setting
579  threadInit();
580 
581  // create blank AtomMap
583 
584  if (!CkMyPe()) {
585 #if defined(NAMD_CUDA) || defined(NAMD_HIP)
586  if (simParameters->usePMECUDA) {
587  // computePmeCUDAMgr was created in BackEnd.C
588  // This empty branch is to avoid initializing ComputePmeMgr
589  } else
590 #endif
591  if (simParameters->PMEOn) {
592  CkpvAccess(BOCclass_group).computePmeMgr = CProxy_ComputePmeMgr::ckNew();
593  }
594  #ifdef OPENATOM_VERSION
595  if ( simParameters->openatomOn ) {
596  CkpvAccess(BOCclass_group).computeMoaMgr = CProxy_ComputeMoaMgr::ckNew();
597  }
598  #endif // OPENATOM_VERSION
599 
600  }
601 
602  #ifdef OPENATOM_VERSION
603  if ( simParameters->openatomOn ) {
604  // if ( ! CkMyPe() ) {
605  CkCallback doneMoaStart(CkIndexmain::doneMoaSetup(), thishandle);
606  startOA(simParameters->moaDriverFile, simParameters->moaPhysicsFile, doneMoaStart);
607  // }
608  }
609  #endif // OPENATOM_VERSION
610 
611  // BEGIN LA
613  rand->split(CkMyPe(), CkNumPes());
614  // END LA
615 
616  break;
617 
618  case 5:
619  #ifdef MEM_OPT_VERSION
620  //Now, every input proc has received all the atoms necessary
621  //to decide the patches those atoms belong to
622 
623  //step 1: integrate the migrated atoms into the atom list that
624  //contains the initally distributed atoms, and sort the atoms
625  //based on hydrogenList value
626  ioMgr->integrateMigratedAtoms();
627 
628  //step 2: integrate the cluster size of each atom on each output proc
629  ioMgr->integrateClusterSize();
630 
631  //step 3: calculate the number of atoms in each patch on every
632  //input procs (atoms belonging to a patch may lie on different
633  //procs), and reduce such info on proc 0. Such info is required
634  //for determing which node a particular patch is assigned to.
635  ioMgr->calcAtomsInEachPatch();
636 
637  //set to false to re-send PatchMap later
639  #endif
640  break;
641  case 6:
644  }
647  }
650  }
651  #ifdef PROCTRACE_DEBUG
652  DebugFileTrace::Instance("procTrace");
653  #endif
654 
655  if (!CkMyPe()) {
656  output = new Output; // create output object just on PE(0)
657 
658  #ifndef MEM_OPT_VERSION
659  workDistrib->patchMapInit(); // create space division
660  workDistrib->createHomePatches(); // load atoms into HomePatch(es)
661  #endif
662 
665  //ComputeMap::Object()->printComputeMap();
666 
667  // For MIC runs, take the additional step after the compute map has been created to
668  // assign the various computes to either the host or the device. This info will
669  // be distributed across the PEs.
670  #if defined(NAMD_MIC)
671  mic_initHostDeviceLDB();
672  #endif
673 
675  iout << iINFO << "Simulating initial mapping with " << simParameters->simulatedPEs
676  << " PEs with " << simParameters->simulatedNodeSize << " PEs per node\n" << endi;
677  outputPatchComputeMaps("init_mapping", 0);
678  iout << iINFO << "Simulating initial mapping is done, now NAMD exits\n" << endi;
679  BackEnd::exit();
680  }
681 
683 
684  //in MEM_OPT_VERSION, patchMap is resent
685  //because they have been updated since creation including
686  //#atoms per patch, the proc a patch should stay etc. --Chao Mei
688  #if defined(NODEAWARE_PROXY_SPANNINGTREE) && defined(USE_NODEPATCHMGR)
689  CProxy_NodeProxyMgr npm(CkpvAccess(BOCclass_group).nodeProxyMgr);
690  //a node broadcast
691  npm.createProxyInfo(PatchMap::Object()->numPatches());
692  #endif
693  }
694  {
695  #if defined(NODEAWARE_PROXY_SPANNINGTREE) && defined(USE_NODEPATCHMGR)
696  CProxy_NodeProxyMgr npm(CkpvAccess(BOCclass_group).nodeProxyMgr);
697  if(CkMyRank()==0) {
698  //just need to register once
699  npm[CkMyNode()].ckLocalBranch()->registerLocalProxyMgr(CkpvAccess(BOCclass_group).proxyMgr);
700  }
701  npm[CkMyNode()].ckLocalBranch()->registerLocalPatchMap(CkMyRank(), PatchMap::Object());
702  #endif
703  }
704  break;
705 
706  case 7:
707 #ifdef CHARM_HAS_MSA
709  CProxy_ComputeMsmMsaMgr msm(CkpvAccess(BOCclass_group).computeMsmMsaMgr);
710  msm[CkMyPe()].initialize(new CkQdMsg);
711  }
712 #else
714  CProxy_ComputeMsmMgr msm(CkpvAccess(BOCclass_group).computeMsmMgr);
715  MsmInitMsg *msg = new MsmInitMsg;
716  Lattice lattice = simParameters->lattice; // system lattice vectors
717  ScaledPosition smin=0, smax=0;
718  if (lattice.a_p() && lattice.b_p() && lattice.c_p()) {
719  msg->smin = smin;
720  msg->smax = smax;
721  msm[CkMyPe()].initialize(msg); // call from my own PE
722  }
723  else if ( ! CkMyPe() ) {
724  pdb->get_extremes(smin, smax); // only available on PE 0
725  msg->smin = smin;
726  msg->smax = smax;
727  msm.initialize(msg); // broadcast to chare group
728  }
729 
730  /*
731  CProxy_Node nd(CkpvAccess(BOCclass_group).node);
732  Node *node = nd.ckLocalBranch();
733  ScaledPosition smin, smax;
734  node->pdb->get_extremes(smin, smax);
735  msg->smin = smin; // extreme positions in system
736  msg->smax = smax;
737  msm[CkMyPe()].initialize(msg);
738  */
739  }
740 #endif
741 
742  if ( simParameters->PMEOn ) {
743  #ifdef OPENATOM_VERSION
744  if ( simParameters->openatomOn ) {
745  CProxy_ComputeMoaMgr moa(CkpvAccess(BOCclass_group).computeMoaMgr);
746  moa[CkMyPe()].initialize(new CkQdMsg);
747  }
748  #endif // OPENATOM_VERSION
749 #if defined(NAMD_CUDA) || defined(NAMD_HIP)
750  if ( simParameters->usePMECUDA ) {
751  if(CkMyRank()==0) {
752  CProxy_ComputePmeCUDAMgr pme(CkpvAccess(BOCclass_group).computePmeCUDAMgr);
753  pme.ckLocalBranch()->initialize(new CkQdMsg); // must run on pe 0 to call ckNew
754  }
755  } else
756 #endif
757  {
758  CProxy_ComputePmeMgr pme(CkpvAccess(BOCclass_group).computePmeMgr);
759  pme[CkMyPe()].initialize(new CkQdMsg);
760  }
761  }
762  break;
763 
764  case 8:
765 #if defined(NAMD_CUDA) || defined(NAMD_HIP)
766  if ( CkMyRank()==0 ) {
767  CProxy_ComputeCUDAMgr nb(CkpvAccess(BOCclass_group).computeCUDAMgr);
768  nb.ckLocalBranch()->initialize(new CkQdMsg);
769  }
770 #endif
771  break;
772 
773  case 9:
775  break;
776 
777  case 10:
778  #ifdef MEM_OPT_VERSION
779  //migrate atoms to HomePatch processors
780  ioMgr->sendAtomsToHomePatchProcs();
781  #endif
782  break;
783 
784  case 11:
785  // part 2 of MSM init
787  CProxy_ComputeMsmMgr msm(CkpvAccess(BOCclass_group).computeMsmMgr);
788  msm[CkMyPe()].initialize_create(); // call from my own PE
789  }
790 
791  if ( simParameters->PMEOn ) {
792  #ifdef OPENATOM_VERSION
793  if ( simParameters->openatomOn ) {
794  CProxy_ComputeMoaMgr moa(CkpvAccess(BOCclass_group).computeMoaMgr);
795  moa[CkMyPe()].initWorkers(new CkQdMsg);
796  }
797  #endif // OPENATOM_VERSION
798 #if defined(NAMD_CUDA) || defined(NAMD_HIP)
799  if ( simParameters->usePMECUDA ) {
800  if(CkMyRank()==0) {
801  CProxy_ComputePmeCUDAMgr pme(CkpvAccess(BOCclass_group).computePmeCUDAMgr);
802  pme[CkMyNode()].initialize_pencils(new CkQdMsg);
803  }
804  } else
805 #endif
806  {
807  CProxy_ComputePmeMgr pme(CkpvAccess(BOCclass_group).computePmeMgr);
808  pme[CkMyPe()].initialize_pencils(new CkQdMsg);
809  }
810  }
811 #ifdef CHARM_HAS_MSA
812  else if ( simParameters->MSMOn && ! simParameters->MsmSerialOn ) {
813  CProxy_ComputeMsmMsaMgr msm(CkpvAccess(BOCclass_group).computeMsmMsaMgr);
814  msm[CkMyPe()].initWorkers(new CkQdMsg);
815  }
816 #else
817  else if ( simParameters->MSMOn && ! simParameters->MsmSerialOn ) {
818  CProxy_ComputeMsmMgr msm(CkpvAccess(BOCclass_group).computeMsmMgr);
819  msm[CkMyPe()].update(new CkQdMsg);
820  }
821 #endif
822 
823  #ifdef MEM_OPT_VERSION
824  //Now every processor has all the atoms it needs to create the HomePatches.
825  //The HomePatches are created in parallel on every home patch procs.
826  ioMgr->createHomePatches();
827  #else
828  if (!CkMyPe()) {
830  }
831  #endif
832  break;
833 
834  case 12:
835  if ( simParameters->PMEOn ) {
836  #ifdef OPENATOM_VERSION
837  if ( simParameters->openatomOn ) {
838  CProxy_ComputeMoaMgr moa(CkpvAccess(BOCclass_group).computeMoaMgr);
839  moa[CkMyPe()].startWorkers(new CkQdMsg);
840  }
841  #endif // OPENATOM_VERSION
842 #if defined(NAMD_CUDA) || defined(NAMD_HIP)
843  if ( simParameters->usePMECUDA ) {
844  if(CkMyRank()==0) {
845  CProxy_ComputePmeCUDAMgr pme(CkpvAccess(BOCclass_group).computePmeCUDAMgr);
846  pme[CkMyNode()].activate_pencils(new CkQdMsg);
847  }
848  } else
849 #endif
850  {
851  CProxy_ComputePmeMgr pme(CkpvAccess(BOCclass_group).computePmeMgr);
852  pme[CkMyPe()].activate_pencils(new CkQdMsg);
853  }
854  }
855 #ifdef CHARM_HAS_MSA
856  else if ( simParameters->MSMOn && ! simParameters->MsmSerialOn ) {
857  CProxy_ComputeMsmMsaMgr msm(CkpvAccess(BOCclass_group).computeMsmMsaMgr);
858  msm[CkMyPe()].startWorkers(new CkQdMsg);
859  }
860 #else
861  /*
862  else if ( simParameters->MSMOn && ! simParameters->MsmSerialOn ) {
863  CProxy_ComputeMsmMgr msm(CkpvAccess(BOCclass_group).computeMsmMgr);
864  //msm[CkMyPe()].startWorkers(new CkQdMsg);
865  }
866  */
867 #endif
868 
869  proxyMgr->createProxies(); // need Home patches before this
870  if (!CkMyPe()) LdbCoordinator::Object()->createLoadBalancer();
871 
872 #ifdef NAMD_TCL
873  // TclInitSubsystems() has a race condition so we create one interp per node here
874  if (CkMyPe() && CkMyNodeSize() > 1 && ! CkMyRank()) Tcl_DeleteInterp(Tcl_CreateInterp());
875 #endif
876 
877 #ifdef USE_NODEPATCHMGR
878  //at this point, PatchMap info has been recved on PEs. It is time to create
879  //the home patch spanning tree for receiving proxy list info
880  if(proxyMgr->getSendSpanning() || proxyMgr->getRecvSpanning()) {
881  if(CkMyRank()==0) {
882  CProxy_NodeProxyMgr npm(CkpvAccess(BOCclass_group).nodeProxyMgr);
883  npm[CkMyNode()].ckLocalBranch()->createSTForHomePatches(PatchMap::Object());
884  }
885  }
886 #endif
887 
888  break;
889 
890  case 13:
891 #if defined(NAMD_CUDA) || defined(NAMD_HIP)
892  // Initialize the collective synchronization object before the sequencers are created
895  syncColl->initAllScope();
896  // Sync between all PEs so that expectedBarrierAll and currentBarrierAll are set
897  }
898 #endif
899  break;
900 
901  case 14:
902 #if defined(NAMD_CUDA) || defined(NAMD_HIP)
904  gpuResInitThread = CthCreate((CthVoidFn) &(initializeGPUResident), nullptr, SEQ_STK_SZ);
905  gpuResInitThreadPriority = 0;
906  CthSetStrategyDefault(gpuResInitThread);
907  CthAwakenPrio(gpuResInitThread, CK_QUEUEING_IFIFO, PRIORITY_SIZE, &gpuResInitThreadPriority);
908  CthSuspend();
909  }
910 #endif
911  break;
912 
913  case 15:
914  // Make sure that the GPU resident initialization threads have finished
915  break;
916 
917  case 16:
918 
919  // DMK - DEBUG - If, in MIC runs, the debug option to dump all the compute maps to files
920  // for debugging/verification purposes has been enabled, have each PE do so now.
921  #if defined(NAMD_MIC)
922  mic_dumpHostDeviceComputeMap();
923  #endif
924 
925  if (!CkMyPe()) {
926  iout << iINFO << "CREATING " << ComputeMap::Object()->numComputes()
927  << " COMPUTE OBJECTS\n" << endi;
928  }
929  DebugM(4,"Creating Computes\n");
931  DebugM(4,"Building Sequencers\n");
932  buildSequencers();
933  DebugM(4,"Initializing LDB\n");
935  break;
936 
937  case 17:
938  // computes may create proxies on the fly so put these in separate phase
939  Sync::Object()->openSync(); // decide if to open local Sync
941 #if defined(CMK_BALANCED_INJECTION_API) && CMK_BALANCED_INJECTION_API != 0
942  if(CkMyRank() == 0){
943  // CkPrintf("[%d] get retrieved BI=%d\n",CkMyPe(),balancedInjectionLevel);
944  ck_set_GNI_BIConfig(balancedInjectionLevel);
945  // CkPrintf("[%d] set retrieved BI=%d\n",CkMyPe(),ck_get_GNI_BIConfig());
946  }
947 #endif
948 
949  break;
950 
951  case 18:
952  {
953  //For debugging
954  /*if(!CkMyPe()){
955  FILE *dumpFile = fopen("/tmp/NAMD_Bench.dump", "w");
956  dumpbench(dumpFile);
957  NAMD_die("Normal execution\n");
958  }*/
959  }
960  #ifdef MEM_OPT_VERSION
962  ioMgr->readInfoForParOutDcdSelection();
963  //free space in the Molecule object that are not used anymore
964  ioMgr->freeMolSpace();
965  #endif
966  gotoRun = true;
967  break;
968 
969  default:
970  NAMD_bug("Startup Phase has a bug - check case statement");
971  break;
972 
973  }
974 
975  startupPhase++;
976  if (!CkMyPe()) {
977  if (!gotoRun) {
978  CkStartQD(CkCallback(CkIndex_Node::startup(), thisgroup));
979  } else {
981  }
982  }
983 
984  NAMD_EVENT_STOP(1, NamdProfileEvent::NAMD_STARTUP);
985 }
void allocateMap(int nAtomIDs)
Definition: AtomMap.C:161
#define NAMD_EVENT_STOP(eon, id)
std::ostream & iINFO(std::ostream &s)
Definition: InfoStream.C:81
Bool simulateInitialMapping
void setPatchMapArrived(bool s)
Definition: WorkDistrib.h:108
void createProxies(void)
Definition: ProxyMgr.C:416
void setRecvSpanning()
Definition: ProxyMgr.C:370
int proxyRecvSpanning
Definition: ProxyMgr.C:45
int numComputes(void)
Definition: ComputeMap.h:103
int getRecvSpanning()
Definition: ProxyMgr.C:375
static ProxyMgr * Object()
Definition: ProxyMgr.h:394
NAMD_HOST_DEVICE int c_p() const
Definition: Lattice.h:291
static PatchMap * Object()
Definition: PatchMap.h:27
static void exit(int status=0)
Definition: BackEnd.C:284
Definition: Vector.h:72
Output * output
Definition: Node.h:185
SimParameters * simParameters
Definition: Node.h:181
void setSendSpanning()
Definition: ProxyMgr.C:361
#define DebugM(x, y)
Definition: Debug.h:75
void createLoadBalancer()
double startupTime
Definition: Node.C:300
std::ostream & endi(std::ostream &s)
Definition: InfoStream.C:54
int getSendSpanning()
Definition: ProxyMgr.C:366
void initializeGPUResident()
Definition: Node.C:450
#define iout
Definition: InfoStream.h:51
Molecule * node_molecule
Definition: Node.C:439
void outputPatchComputeMaps(const char *filename, int tag)
Definition: Node.C:1620
void createComputes(ComputeMap *map)
Definition: ComputeMgr.C:1037
NAMD_HOST_DEVICE int b_p() const
Definition: Lattice.h:290
void split(int iStream, int numStreams)
Definition: Random.h:77
void patchMapInit(void)
Definition: WorkDistrib.C:1238
void openSync()
Definition: Sync.C:63
ComputeMap * computeMap
Definition: Node.h:204
double memusage_MB()
Definition: memusage.h:13
#define SEQ_STK_SZ
Definition: Thread.h:11
void sendComputeMap(void)
Definition: WorkDistrib.C:1211
#define PRIORITY_SIZE
Definition: Priorities.h:13
Definition: Output.h:35
void initialize(PatchMap *pmap, ComputeMap *cmap, int reinit=0)
Definition: Random.h:37
#define NAMD_EVENT_START(eon, id)
void buildProxySpanningTree()
Definition: ProxyMgr.C:558
void createHomePatches(void)
Definition: WorkDistrib.C:989
void NAMD_bug(const char *err_msg)
Definition: common.C:196
ScaledPosition smax
Definition: ComputeMsm.h:21
static void pme_select()
static void messageRun()
Definition: Node.C:1167
static Sync * Object()
Definition: Sync.h:52
void get_extremes(ScaledPosition &xmin, ScaledPosition &xmax) const
Definition: PDB.h:104
NAMD_HOST_DEVICE int a_p() const
Definition: Lattice.h:289
int numAtoms
Definition: Molecule.h:586
PDB * pdb
Definition: Node.h:183
static LdbCoordinator * Object()
static AtomMap * Object()
Definition: AtomMap.h:37
static void nonbonded_select()
void sendPatchMap(void)
Definition: WorkDistrib.C:1111
int isRecvSpanningTreeOn()
Parameters * parameters
Definition: Node.h:180
unsigned int randomSeed
WorkDistrib * workDistrib
Definition: Node.h:169
Parameters * node_parameters
Definition: Node.C:438
SimParameters * node_simParameters
Definition: Node.C:437
Random * rand
Definition: Node.h:175
void mapComputes(void)
Definition: WorkDistrib.C:2407
void registerUserEventsForAllComputeObjs(void)
Definition: ComputeMgr.C:853
static ComputeMap * Object()
Definition: ComputeMap.h:91
ScaledPosition smin
Definition: ComputeMsm.h:21
void distributeHomePatches(void)
Definition: WorkDistrib.C:1063
void setProxyTreeBranchFactor(int dim)
Definition: ProxyMgr.C:379
int isSendSpanningTreeOn()
ComputeMgr * computeMgr
Definition: Node.h:172
int mallocTest_size
Definition: Node.h:130
Molecule * molecule
Definition: Node.h:179
static SynchronousCollectives * Object()
void assignNodeToPatch(void)
Definition: WorkDistrib.C:1456
int proxySendSpanning
Definition: ProxyMgr.C:44

◆ stopHPM()

void Node::stopHPM ( )

Definition at line 1497 of file Node.C.

1497  {
1498 #if USE_HPM
1499  HPM_Stop("500 steps", localRankOnNode);
1500  HPM_Print(CkMyPe(), localRankOnNode);
1501 #endif
1502 }

◆ traceBarrier()

void Node::traceBarrier ( int  turnOnTrace,
int  step 
)

Definition at line 1504 of file Node.C.

References curTimeStep.

1504  {
1505  curTimeStep = step;
1506  if(turnOnTrace) traceBegin();
1507  else traceEnd();
1508 
1509  if(turnOnTrace) CmiTurnOnStats();
1510  else CmiTurnOffStats();
1511 
1512  //CkPrintf("traceBarrier (%d) at step %d called on proc %d\n", turnOnTrace, step, CkMyPe());
1513  CProxy_Node nd(CkpvAccess(BOCclass_group).node);
1514  CkCallback cb(CkIndex_Node::resumeAfterTraceBarrier(NULL), nd[0]);
1515  contribute(0, NULL, CkReduction::sum_int, cb);
1516 
1517 }
int curTimeStep
Definition: Node.h:152

◆ updateGridScale() [1/2]

void Node::updateGridScale ( const char *  key,
Vector  scale 
)

Definition at line 1291 of file Node.C.

References DebugM, endi(), MGridforceParamsList::find_key(), Molecule::get_gridfrc_grid(), MGridforceParamsList::index_for_key(), SimParameters::mgridforcelist, MGRIDFORCEPARAMS_DEFAULTKEY, molecule, NAMD_bug(), NAMD_die(), simParameters, Vector::x, Vector::y, and Vector::z.

1291  {
1292  DebugM(4, "updateGridScale(char*, Vector) called on node " << CkMyPe() << "\n" << endi);
1293 
1294  int gridnum;
1295  MGridforceParams* mgridParams;
1296  if (key == NULL) {
1299  } else {
1300  gridnum = simParameters->mgridforcelist.index_for_key(key);
1301  mgridParams = simParameters->mgridforcelist.find_key(key);
1302  }
1303 
1304  if (gridnum < 0 || mgridParams == NULL) {
1305  NAMD_die("Node::updateGridScale(char*, Vector): Could not find grid.");
1306  }
1307 
1308  GridforceGrid* grid = molecule->get_gridfrc_grid(gridnum);
1309  if (grid == NULL) {
1310  NAMD_bug("Node::updateGridScale(char*, Vector): grid not found");
1311  }
1312  CProxy_Node(thisgroup).updateGridScale(gridnum, scale.x, scale.y, scale.z);
1313 
1314  DebugM(4, "updateGridScale(char*, Vector) finished\n" << endi);
1315 }
GridforceGrid * get_gridfrc_grid(int gridnum) const
Definition: Molecule.h:1368
SimParameters * simParameters
Definition: Node.h:181
#define DebugM(x, y)
Definition: Debug.h:75
std::ostream & endi(std::ostream &s)
Definition: InfoStream.C:54
BigReal z
Definition: Vector.h:74
int index_for_key(const char *key)
void NAMD_bug(const char *err_msg)
Definition: common.C:196
#define MGRIDFORCEPARAMS_DEFAULTKEY
MGridforceParams * find_key(const char *key)
BigReal x
Definition: Vector.h:74
void NAMD_die(const char *err_msg)
Definition: common.C:148
MGridforceParamsList mgridforcelist
BigReal y
Definition: Vector.h:74
Molecule * molecule
Definition: Node.h:179

◆ updateGridScale() [2/2]

void Node::updateGridScale ( int  gridnum,
float  sx,
float  sy,
float  sz 
)

Definition at line 1316 of file Node.C.

References MGridforceParamsList::at_index(), DebugM, endi(), Molecule::get_gridfrc_grid(), MGridforceParams::gridforceScale, SimParameters::mgridforcelist, molecule, NAMD_bug(), GridforceGrid::set_scale(), and simParameters.

1316  {
1317  if (CmiMyRank()) return;
1318  DebugM(4, "updateGridScale(char*, int, float, float, float) called on node " << CkMyPe() << "\n" << endi);
1319 
1320  GridforceGrid *grid = molecule->get_gridfrc_grid(gridnum);
1321  if (grid == NULL) {
1322  NAMD_bug("Node::updateGridScale(char*, int, float, float, float):grid not found");
1323  }
1324 
1325  Vector scale(sx,sy,sz);
1327  grid->set_scale( scale );
1328 #ifdef NODEGROUP_FORCE_REGISTER
1329  if(CkMyPe()==0)
1330  {
1331  CProxy_PatchData cpdata(CkpvAccess(BOCclass_group).patchData);
1332  cpdata.setDeviceKernelUpdateCounter();
1333  }
1334 #endif
1335  DebugM(4, "updateGridScale(char*, int, float, float, float) finished\n" << endi);
1336 }
GridforceGrid * get_gridfrc_grid(int gridnum) const
Definition: Molecule.h:1368
Definition: Vector.h:72
SimParameters * simParameters
Definition: Node.h:181
#define DebugM(x, y)
Definition: Debug.h:75
std::ostream & endi(std::ostream &s)
Definition: InfoStream.C:54
void NAMD_bug(const char *err_msg)
Definition: common.C:196
MGridforceParamsList mgridforcelist
MGridforceParams * at_index(int idx)
Molecule * molecule
Definition: Node.h:179
virtual void set_scale(Vector s)=0

Member Data Documentation

◆ atomMap

AtomMap* Node::atomMap
protected

Definition at line 202 of file Node.h.

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

◆ colvars

colvarmodule* Node::colvars

Definition at line 187 of file Node.h.

Referenced by colvarproxy_namd::colvarproxy_namd(), and Node().

◆ computeMap

ComputeMap* Node::computeMap
protected

Definition at line 204 of file Node.h.

Referenced by startup(), and ~Node().

◆ computeMgr

ComputeMgr* Node::computeMgr

◆ configList

ConfigList* Node::configList

◆ coords

Vector* Node::coords

◆ curMFlopStep

int Node::curMFlopStep

Definition at line 157 of file Node.h.

Referenced by papiMeasureBarrier(), and resumeAfterPapiMeasureBarrier().

◆ curTimeStep

int Node::curTimeStep

Definition at line 152 of file Node.h.

Referenced by resumeAfterTraceBarrier(), and traceBarrier().

◆ imd

IMDOutput* Node::imd

◆ initRSS

float Node::initRSS

Definition at line 136 of file Node.h.

◆ initVM

float Node::initVM

Definition at line 136 of file Node.h.

◆ ldbCoordinator

LdbCoordinator* Node::ldbCoordinator
protected

Definition at line 205 of file Node.h.

◆ mallocTest_size

int Node::mallocTest_size

Definition at line 130 of file Node.h.

Referenced by mallocTestQd(), and startup().

◆ molecule

Molecule* Node::molecule

Definition at line 179 of file Node.h.

Referenced by Sequencer::addMovDragToPosition(), Sequencer::addRotDragToPosition(), CollectionMaster::CollectVectorInstanceDcdSelection::append(), WorkDistrib::assignNodeToPatch(), ComputeQMMgr::calcMOPAC(), ComputeQMMgr::calcORCA(), colvarproxy_namd::calculate(), ComputeQMMgr::calcUSR(), colvarproxy_namd::check_atom_id(), colvarproxy_namd::check_volmap_by_id(), ComputeGridForce::checkGridForceRatio(), SimParameters::close_dcdfile(), Controller::compareChecksums(), colvarproxy_namd::compute_volmap(), AngleElem::computeForce(), CrosstermElem::computeForce(), DihedralElem::computeForce(), ImproperElem::computeForce(), TholeElem::computeForce(), AnisoElem::computeForce(), BondElem::computeForce(), LjPmeCompute::computeNonbonded(), Controller::Controller(), Output::coordinate(), Output::coordinateNeeded(), WorkDistrib::createAtomLists(), ComputeMgr::createComputes(), ComputeGridForce::createGridForcedIdxList(), CudaPmeOneDevice::CudaPmeOneDevice(), ComputeConsForce::doForce(), ComputeConsTorque::doForce(), ComputeStir::doForce(), ComputeGridForce::doForce(), ComputeRestraints::doForce(), ComputePme::doQMWork(), dumpbench(), ComputeLjPmeSerialMgr::getLJparameters(), Controller::getTotalPotentialEnergy(), GlobalMasterEasy::GlobalMasterEasy(), GlobalMasterFreeEnergy::GlobalMasterFreeEnergy(), GlobalMasterSymmetry::GlobalMasterSymmetry(), GlobalMasterTMD::GlobalMasterTMD(), HomePatch::hardWallDrude(), colvarproxy_namd::init_atom_group(), colvarproxy_namd::init_atoms_map(), colvarproxy_namd::init_volmap_by_name(), ComputeQM::initialize(), ParallelIOMgr::initialize(), Sequencer::integrate_SOA(), Sequencer::langevinPiston(), Sequencer::langevinVelocities(), Sequencer::langevinVelocitiesBBK1(), Sequencer::langevinVelocitiesBBK2(), LJTable::LJTable(), ComputeHomeTuples< TholeElem, Thole, TholeValue >::loadTuples(), HomePatch::loweAndersenVelocities(), HomePatch::minimize_rattle2(), HomePatch::mollyAverage(), HomePatch::mollyMollify(), Controller::monteCarloPressure_accept(), Controller::multigatorCalcEnthalpy(), Node(), WorkDistrib::patchMapInit(), Controller::printEnergies(), Controller::printMinimizeEnergies(), HomePatch::qmSwapAtoms(), HomePatch::rattle1old(), HomePatch::rattle2(), ParallelIOMgr::readInfoForParOutDcdSelection(), Controller::receivePressure(), ComputeMgr::recvComputeConsForceMsg(), ComputeMsmSerialMgr::recvCoord(), ComputeExtMgr::recvCoord(), ComputeLjPmeSerialMgr::recvCoord(), ComputeFmmSerialMgr::recvCoord(), ComputeGBISserMgr::recvCoord(), ParallelIOMgr::recvDcdParams(), ComputeQMMgr::recvPartQM(), reloadCharges(), Sequencer::reloadCharges(), reloadGridforceGrid(), reloadStructure(), Controller::rescaleaccelMD(), Sequencer::rescaleSoluteCharges(), resendMolecule(), resendMolecule2(), saveMolDataPointers(), ComputeQM::saveResults(), ComputeNonbondedUtil::select(), ParallelIOMgr::sendDcdParams(), HomePatch::setGBISIntrinsicRadii(), HomePatch::setLcpoType(), startup(), Tcl_centerOfMass(), Tcl_centerOfNumber(), Tcl_loadCoords(), Tcl_radiusOfGyration(), Sequencer::tcoupleVelocities(), colvarproxy_namd::update_atom_properties(), colvarproxy_namd::update_atoms_map(), colvarproxy_namd::update_group_properties(), ComputeLonepairsCUDA::updateAtoms(), updateGridScale(), wrap_coor_int(), and wrap_coor_int_dcd_selection().

◆ output

Output* Node::output

◆ parameters

Parameters* Node::parameters

◆ patchMap

PatchMap* Node::patchMap
protected

Definition at line 203 of file Node.h.

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

◆ pdb

PDB* Node::pdb

◆ rand

Random* Node::rand

◆ simParameters

SimParameters* Node::simParameters

Definition at line 181 of file Node.h.

Referenced by HomePatch::addForceToMomentum(), HomePatch::addForceToMomentum3(), HomePatch::addVelocityToPosition(), WorkDistrib::assignNodeToPatch(), PmeZPencil::backward_fft(), PmeYPencil::backward_fft(), PmeXPencil::backward_fft(), LdbCoordinator::barrier(), HomePatch::boxClosed(), HomePatch::buildRattleList(), HomePatch::buildRattleList_SOA(), ComputePmeMgr::chargeGridSubmitted(), CudaPmeOneDevice::checkPatchLevelLatticeCompatibilityAndComputeOffsets(), colvarproxy_namd::colvarproxy_namd(), CudaPmeOneDevice::compute(), ComputeCylindricalBC::ComputeCylindricalBC(), ComputeEwald::ComputeEwald(), OneFourNbTholeElem::computeForce(), AngleElem::computeForce(), ImproperElem::computeForce(), DihedralElem::computeForce(), CrosstermElem::computeForce(), AnisoElem::computeForce(), TholeElem::computeForce(), BondElem::computeForce(), ExclElem::computeForce(), GromacsPairElem::computeForce(), ComputeFullDirect::ComputeFullDirect(), ComputeGlobal::ComputeGlobal(), ComputeHomeTuples< TholeElem, Thole, TholeValue >::ComputeHomeTuples(), ComputeLCPO::ComputeLCPO(), LjPmeCompute::computeLJpotential(), ComputeMsm::ComputeMsm(), ComputeNonbondedPair::ComputeNonbondedPair(), ComputeNonbondedSelf::ComputeNonbondedSelf(), ComputePme::ComputePme(), ComputeRestraints::ComputeRestraints(), ComputeSphericalBC::ComputeSphericalBC(), ComputeStir::ComputeStir(), ComputeTclBC::ComputeTclBC(), Output::coordinate(), Output::coordinateNeeded(), WorkDistrib::createAtomLists(), ComputeMgr::createComputes(), ComputeCUDAMgr::createCudaComputeNonbonded(), ComputeCUDAMgr::createCudaGlobalMaster(), ComputeCUDAMgr::createCudaPmeOneDevice(), LdbCoordinator::createLoadBalancer(), CudaComputeNonbonded::CudaComputeNonbonded(), CudaPmeOneDevice::CudaPmeOneDevice(), HomePatch::depositMigration(), CollectionMaster::disposePositions(), ComputeConsForce::doForce(), ComputeEField::doForce(), ComputeConsTorque::doForce(), ComputeStir::doForce(), ComputeNonbondedPair::doForce(), ComputeNonbondedSelf::doForce(), ComputeGridForce::doForce(), ComputeRestraints::doForce(), HomePatch::doGroupSizeCheck(), HomePatch::doGroupSizeCheck_SOA(), HomePatch::doMarginCheck(), HomePatch::doMarginCheck_SOA(), HomePatch::doPairlistCheck(), ComputeTclBC::doWork(), ComputeGBISser::doWork(), ComputeGlobal::doWork(), CudaComputeNonbonded::doWork(), dumpbench(), HomePatch::exchangeAtoms(), HomePatch::exchangeCheckpoint(), PmeZPencil::fft_init(), PmeYPencil::fft_init(), PmeXPencil::fft_init(), CudaPmeOneDevice::finishReduction(), Output::force(), Output::forceNeeded(), PmeZPencil::forward_fft(), PmeYPencil::forward_fft(), PmeXPencil::forward_fft(), ComputePmeCUDADevice::gatherForce(), ComputePmeCUDADevice::gatherForceDone(), HomePatch::gbisComputeAfterP1(), HomePatch::gbisComputeAfterP2(), GlobalMasterIMD::get_vmd_forces(), GlobalMaster::getCurrentReduction(), CudaComputeNonbonded::getCurrentReduction(), ComputeLjPmeSerialMgr::getLJparameters(), GlobalMaster::GlobalMaster(), GlobalMasterFreeEnergy::GlobalMasterFreeEnergy(), GlobalMasterIMD::GlobalMasterIMD(), GlobalMasterServer::GlobalMasterServer(), GlobalMasterSymmetry::GlobalMasterSymmetry(), GlobalMasterTMD::GlobalMasterTMD(), HomePatch::hardWallDrude(), ComputePmeCUDA::initialize(), ComputeCUDAMgr::initialize(), LjPmeCompute::initialize(), LdbCoordinator::initialize(), ComputeQM::initialize(), CudaComputeNonbonded::initialize(), ParallelIOMgr::initialize(), ComputeMsmMgr::initialize(), ComputePmeMgr::initialize(), ComputePmeCUDADevice::initialize(), ComputePmeMgr::initialize_computes(), ComputePmeMgr::initialize_pencils(), isPmeProcessor(), CudaComputeNonbonded::launchWork(), LJTable::LJTable(), ComputeHomeTuples< TholeElem, Thole, TholeValue >::loadTuples(), HomePatch::loweAndersenVelocities(), WorkDistrib::mapComputes(), ComputePmeCUDADevice::mergeForcesOnPatch(), HomePatch::minimize_rattle2(), HomePatch::mollyAverage(), HomePatch::mollyMollify(), Controller::multigatorCalcEnthalpy(), NamdHybridLB::NamdHybridLB(), Node(), PmePencil< CBase_PmeZPencil >::order_init(), outputPatchComputeMaps(), Patch::Patch(), PatchDataSOA_set_buffer(), PatchDataSOA_set_size(), WorkDistrib::patchMapInit(), Compute::patchReady(), Patch::positionsReady(), HomePatch::positionsReady(), HomePatch::positionsReady_SOA(), HomePatch::qmSwapAtoms(), HomePatch::rattle1(), HomePatch::rattle1_SOA(), HomePatch::rattle1old(), HomePatch::rattle2(), ProxyPatch::receiveAll(), ProxyPatch::receiveData(), CollectionMaster::receiveDataStream(), recursive_bisect_with_curve(), ComputePmeCUDADevice::recvAtoms(), ComputePmeCUDADevice::recvAtomsFromNeighbor(), HomePatch::recvCheckpointLoad(), ComputeMsmSerialMgr::recvCoord(), ComputeExtMgr::recvCoord(), ComputeLjPmeSerialMgr::recvCoord(), ComputeFmmSerialMgr::recvCoord(), ComputeMgr::recvCudaGlobalMasterCreateMsg(), ComputeMgr::recvCudaGlobalMasterRemoveMsg(), ComputeMgr::recvCudaGlobalMasterUpdateMsg(), HomePatch::recvExchangeMsg(), ComputeQMMgr::recvPartQM(), ComputeGlobal::recvResults(), reloadGridforceGrid(), resendMolecule(), CudaComputeNonbonded::reSortTileLists(), resumeAfterPapiMeasureBarrier(), HomePatch::revert(), ScriptTcl::run(), saveMolDataPointers(), WorkDistrib::savePatchMap(), ComputeGlobal::saveTotalForces(), scriptParam(), ComputePmeUtil::select(), ComputeNonbondedUtil::select(), PmeZPencil::send_all_ungrid(), GlobalMasterIMD::send_energies(), GlobalMasterIMD::send_fcoords(), PmeZPencil::send_trans(), PmeYPencil::send_trans(), PmeYPencil::send_untrans(), PmeXPencil::send_untrans(), ComputePmeCUDADevice::sendAtomsToNeighbor(), ComputeMgr::sendComputeGlobalData(), ComputeMgr::sendComputeGlobalResults(), ComputePmeCUDADevice::sendForcesToNeighbors(), WorkDistrib::sendPatchMap(), ComputePmeMgr::sendTrans(), ComputePmeMgr::sendUngrid(), ComputePmeMgr::sendUntrans(), HomePatch::setGBISIntrinsicRadii(), PatchMgr::setLattice(), ComputeLjPmeSerialMgr::setLJparameters(), ComputePmeCUDAMgr::setupPencils(), SimpleBroadcastObject< Tensor >::SimpleBroadcastObject(), NamdHybridLB::splitComputes(), ComputePmeCUDADevice::spreadCharge(), startup(), NamdCentLB::Strategy(), CollectionMgr::submitForces(), CollectionMgr::submitPositions(), ExclElem::submitReductionData(), PmePencilXYZ::submitReductions(), PmePencilZ::submitReductions(), ComputePmeMgr::submitReductions(), CollectionMgr::submitVelocities(), ComputePme::ungridForces(), updateGridScale(), ComputeMgr::updateLocalComputes4(), Output::velocity(), Output::velocityNeeded(), ReductionMgr::willRequire(), ReductionMgr::willSubmit(), wrap_coor_int(), and wrap_coor_int_dcd_selection().

◆ specialTracing

bool Node::specialTracing

Definition at line 166 of file Node.h.

Referenced by Node().

◆ state

NamdState* Node::state

◆ workDistrib

WorkDistrib* Node::workDistrib

Definition at line 169 of file Node.h.

Referenced by ParallelIOMgr::createHomePatches(), and startup().


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