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 301 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.

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

◆ ~Node()

Node::~Node ( void  )

Definition at line 366 of file Node.C.

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

367 {
368  delete imd;
369  delete output;
370  delete computeMap;
371  delete atomMap;
372  delete patchMap;
373  delete CkpvAccess(comm);
374  // BEGIN LA
375  delete rand;
376  // END LA
377 #ifdef MEASURE_NAMD_WITH_PAPI
378  delete CkpvAccess(papiEvents);
379 #endif
380 }
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 1469 of file Node.C.

References NAMD_die().

1469  {
1470  NAMD_die("Exiting prematurely; see error messages above.");
1471 }
void NAMD_die(const char *err_msg)
Definition: common.C:147

◆ enableEarlyExit()

void Node::enableEarlyExit ( void  )

Definition at line 1461 of file Node.C.

References sendEnableEarlyExit().

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

1461  {
1462  if ( CkMyPe() ) {
1464  } else {
1465  CkStartQD(CkIndex_Node::earlyExit(),&thishandle);
1466  }
1467 }
void sendEnableEarlyExit(void)
Definition: Node.C:1452

◆ enableExitScheduler()

void Node::enableExitScheduler ( void  )

Definition at line 1439 of file Node.C.

References sendEnableExitScheduler().

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

1439  {
1440  if ( CkMyPe() ) {
1442  } else {
1443  CkStartQD(CkIndex_Node::exitScheduler(), &thishandle);
1444  }
1445 }
void sendEnableExitScheduler(void)
Definition: Node.C:1428

◆ enableScriptBarrier()

void Node::enableScriptBarrier ( )

Definition at line 1211 of file Node.C.

1211  {
1212  CkStartQD(CkIndex_Node::scriptBarrier(), &thishandle);
1213 }

◆ exitScheduler()

void Node::exitScheduler ( void  )

Definition at line 1447 of file Node.C.

1447  {
1448  //CmiPrintf("exitScheduler %d\n",CkMyPe());
1449  CsdExitScheduler();
1450 }

◆ getScript()

ScriptTcl * Node::getScript ( void  )

Definition at line 1656 of file Node.C.

References PatchData::script.

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

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

◆ mallocTest()

void Node::mallocTest ( int  step)

Definition at line 403 of file Node.C.

References NAMD_die().

Referenced by mallocTestQd().

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

◆ mallocTestQd()

void Node::mallocTestQd ( void  )

Definition at line 415 of file Node.C.

References mallocTest(), and mallocTest_size.

415  {
416  if ( mallocTest_size ) {
417  CkPrintf("All PEs successfully allocated %d MB.\n", 100*mallocTest_size);
418  } else {
419  CkPrintf("Starting malloc test on all PEs.\n");
420  }
421  fflush(stdout);
422  ++mallocTest_size;
423  CkStartQD(CkIndex_Node::mallocTestQd(), &thishandle);
424  (CProxy_Node(CkpvAccess(BOCclass_group).node)).mallocTest(mallocTest_size);
425 }
void mallocTest(int)
Definition: Node.C:403
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 1164 of file Node.C.

References run().

Referenced by startup().

1164  {
1165  (CProxy_Node(CkpvAccess(BOCclass_group).node)).run();
1166 }
void run()
Definition: Node.C:1173

◆ messageStartUp()

void Node::messageStartUp ( )
static

Definition at line 430 of file Node.C.

References startup().

430  {
431  (CProxy_Node(CkpvAccess(BOCclass_group).node)).startup();
432 }
void startup()
Definition: Node.C:462

◆ 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(), ComputeMsmSerialMgr::recvCoord(), ComputeExtMgr::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(), 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 1617 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().

1617  {
1619 
1620  int numpes = CkNumPes();
1621  int nodesize = CkMyNodeSize();
1623  numpes = simParameters->simulatedPEs;
1624  nodesize = simParameters->simulatedNodeSize;
1625  }
1626 
1627  char fname[128];
1628  sprintf(fname, "mapdump_%s.%d_%d_%d_%s", filename, numpes, nodesize, tag, gNAMDBinaryName);
1629 
1630  FILE *fp = fopen(fname, "w");
1631  if(fp == NULL) {
1632  NAMD_die("Error in outputing PatchMap and ComputeMap info!\n");
1633  return;
1634  }
1635  PatchMap *pMap = PatchMap::Object();
1636  ComputeMap *cMap = ComputeMap::Object();
1637  int numPatches = pMap->numPatches();
1638  int numComputes = cMap->numComputes();
1639  fprintf(fp, "%d %d %d %d %d %d %d\n", numpes, nodesize, numPatches, numComputes,
1640  pMap->gridsize_a(), pMap->gridsize_b(), pMap->gridsize_c());
1641  //output PatchMap info
1642  for(int i=0; i<numPatches; i++) {
1643  #ifdef MEM_OPT_VERSION
1644  fprintf(fp, "%d %d\n", pMap->numAtoms(i), pMap->node(i));
1645  #else
1646  fprintf(fp, "%d %d\n", pMap->patch(i)->getNumAtoms(), pMap->node(i));
1647  #endif
1648  }
1649 
1650  //output ComputeMap info
1651  for(int i=0; i<numComputes; i++) {
1652  fprintf(fp, "%d %d %d %d\n", cMap->node(i), cMap->type(i), cMap->pid(i,0), cMap->pid(i,1));
1653  }
1654 }
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:147
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 1522 of file Node.C.

References curMFlopStep.

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

◆ recvCheckpointAck()

void Node::recvCheckpointAck ( CheckpointMsg msg)

Definition at line 1422 of file Node.C.

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

Referenced by recvCheckpointCAck_handler().

1422  {
1423  state->controller->recvCheckpointAck(msg->checkpoint);
1424  delete msg;
1425 }
Controller::checkpoint checkpoint
Definition: Node.C:99
NamdState * state
Definition: Node.h:184
void recvCheckpointAck(checkpoint &cp)
Definition: Controller.C:4944

◆ recvCheckpointReq()

void Node::recvCheckpointReq ( CheckpointMsg msg)

Definition at line 1400 of file Node.C.

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

Referenced by recvCheckpointCReq_handler().

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

◆ recvEnableEarlyExit()

void Node::recvEnableEarlyExit ( void  )

Definition at line 1457 of file Node.C.

References enableEarlyExit().

1457  {
1458  enableEarlyExit();
1459 }
void enableEarlyExit(void)
Definition: Node.C:1461

◆ recvEnableExitScheduler()

void Node::recvEnableExitScheduler ( void  )

Definition at line 1434 of file Node.C.

References enableExitScheduler().

1434  {
1435  //CmiPrintf("recvEnableExitScheduler\n");
1437 }
void enableExitScheduler(void)
Definition: Node.C:1439

◆ reloadCharges() [1/2]

void Node::reloadCharges ( const char *  filename)

Definition at line 1224 of file Node.C.

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

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

◆ reloadCharges() [2/2]

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

Definition at line 1248 of file Node.C.

References molecule, and Molecule::reloadCharges().

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

◆ reloadGridforceGrid() [1/2]

void Node::reloadGridforceGrid ( const char *  key)

Definition at line 1254 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.

1254  {
1255  DebugM(4, "reloadGridforceGrid(const char*) called on node " << CkMyPe() << "\n" << endi);
1256 
1257  int gridnum;
1258  MGridforceParams *mgridParams;
1259  if (key == NULL) {
1262  } else {
1263  gridnum = simParameters->mgridforcelist.index_for_key(key);
1264  mgridParams = simParameters->mgridforcelist.find_key(key);
1265  }
1266 
1267  if (gridnum < 0 || mgridParams == NULL) {
1268  NAMD_die("Node::reloadGridforceGrid(const char*):Could not find grid.");
1269  }
1270 
1271  GridforceGrid *grid = molecule->get_gridfrc_grid(gridnum);
1272  if (grid == NULL) {
1273  NAMD_bug("Node::reloadGridforceGrid(const char*):grid not found");
1274  }
1275  grid->reinitialize(simParameters, mgridParams);
1276 
1277  CProxy_Node(thisgroup).reloadGridforceGrid(gridnum);
1278 #ifdef NODEGROUP_FORCE_REGISTER
1279  if(CkMyPe()==0)
1280  {
1281  CProxy_PatchData cpdata(CkpvAccess(BOCclass_group).patchData);
1282  cpdata.setDeviceKernelUpdateCounter();
1283  }
1284 #endif
1285  DebugM(4, "reloadGridforceGrid(const char*) finished\n" << endi);
1286 }
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:195
#define MGRIDFORCEPARAMS_DEFAULTKEY
MGridforceParams * find_key(const char *key)
void NAMD_die(const char *err_msg)
Definition: common.C:147
MGridforceParamsList mgridforcelist
Molecule * molecule
Definition: Node.h:179

◆ reloadGridforceGrid() [2/2]

void Node::reloadGridforceGrid ( int  gridnum)

Definition at line 1335 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().

1335  {
1336  if (CmiMyRank()) return;
1337  DebugM(4, "reloadGridforceGrid(int) called on node " << CkMyPe() << "\n" << endi);
1338 
1339  GridforceGrid *grid = molecule->get_gridfrc_grid(gridnum);
1340  if (grid == NULL) {
1341  NAMD_bug("Node::reloadGridforceGrid(int):grid not found");
1342  }
1343 
1344  if (CkMyPe()) {
1345  // not node 0 -> receive grid
1346  DebugM(4, "Receiving grid\n");
1347 
1348  delete grid;
1349 
1350  MIStream *msg = CkpvAccess(comm)->newInputStream(0, GRIDFORCEGRIDTAG);
1351  grid = GridforceGrid::unpack_grid(gridnum, msg);
1352  molecule->set_gridfrc_grid(gridnum, grid);
1353  delete msg;
1354  } else {
1355  // node 0 -> send grid
1356  DebugM(4, "Sending grid\n");
1357 
1358  MOStream *msg = CkpvAccess(comm)->newOutputStream(ALLBUTME, GRIDFORCEGRIDTAG, BUFSIZE);
1359  GridforceGrid::pack_grid(grid, msg);
1360  msg->end();
1361  delete msg;
1362  }
1363 #ifdef NODEGROUP_FORCE_REGISTER
1364  if(CkMyPe()==0)
1365  {
1366  CProxy_PatchData cpdata(CkpvAccess(BOCclass_group).patchData);
1367  cpdata.setDeviceKernelUpdateCounter();
1368  }
1369 #endif
1370  DebugM(4, "reloadGridforceGrid(int) finished\n" << endi);
1371 }
#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:195
#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 1068 of file Node.C.

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

1068  {
1069  delete molecule;
1070  molecule = state->molecule = 0;
1071  delete pdb;
1072  pdb = state->pdb = 0;
1073  state->loadStructure(fname,pdbname,1);
1074  this->molecule = state->molecule;
1075  this->pdb = state->pdb;
1076  CProxy_Node nodeProxy(thisgroup);
1077  nodeProxy.resendMolecule();
1078 }
int loadStructure(const char *, const char *, int)
Definition: NamdState.C:163
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 1081 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.

1081  {
1082  if ( CmiMyRank() ) {
1083  return;
1084  }
1085  if ( CmiMyPe() == 0 ) {
1086  int bufSize = BUFSIZE;
1087  MOStream *conv_msg;
1088  conv_msg = CkpvAccess(comm)->newOutputStream(ALLBUTME, STATICPARAMSTAG, bufSize);
1089  parameters->send_Parameters(conv_msg);
1090  if(molecule->numAtoms>=1000000) bufSize = 16*BUFSIZE;
1091  conv_msg = CkpvAccess(comm)->newOutputStream(ALLBUTME, MOLECULETAG, bufSize);
1092  molecule->send_Molecule(conv_msg);
1093  } else {
1094  MIStream *conv_msg;
1095  delete parameters;
1096  parameters = new Parameters;
1097  conv_msg = CkpvAccess(comm)->newInputStream(0, STATICPARAMSTAG);
1098  parameters->receive_Parameters(conv_msg);
1099  delete molecule;
1101  conv_msg = CkpvAccess(comm)->newInputStream(0, MOLECULETAG);
1102  molecule->receive_Molecule(conv_msg);
1103  }
1108  CProxy_Node nodeProxy(thisgroup);
1109  for ( int i=0; i<CmiMyNodeSize(); ++i ) {
1110  nodeProxy[CmiMyPe()+i].resendMolecule2();
1111  }
1112 }
void send_Molecule(MOStream *)
Definition: Molecule.C:5662
SimParameters * simParameters
Definition: Node.h:181
#define ALLBUTME
Definition: Communicate.h:14
#define STATICPARAMSTAG
Definition: common.h:178
Molecule * node_molecule
Definition: Node.C:436
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:435
#define MOLECULETAG
Definition: common.h:179
void receive_Molecule(MIStream *)
Definition: Molecule.C:6028
Molecule * molecule
Definition: Node.h:179
void receive_Parameters(MIStream *)
Definition: Parameters.C:6936

◆ resendMolecule2()

void Node::resendMolecule2 ( )

Definition at line 1114 of file Node.C.

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

1114  {
1118 }
void allocateMap(int nAtomIDs)
Definition: AtomMap.C:161
Molecule * node_molecule
Definition: Node.C:436
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:435
Molecule * molecule
Definition: Node.h:179

◆ resumeAfterPapiMeasureBarrier()

void Node::resumeAfterPapiMeasureBarrier ( CkReductionMsg *  msg)

Definition at line 1574 of file Node.C.

References curMFlopStep, simParameters, and state.

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

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

1516  {
1517  CmiAssert(CmiMyPe()==0);
1518  delete msg;
1520 }
int curTimeStep
Definition: Node.h:152
NamdState * state
Definition: Node.h:184
void resumeAfterTraceBarrier(int)
Definition: Controller.C:4984

◆ run()

void Node::run ( void  )

Definition at line 1173 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().

1174 {
1175 // NAMD_EVENT_START(1, NamdProfileEvent::NODE_RUN);
1176 
1177  // Start Controller (aka scalar Sequencer) on Pe(0)
1178 // printf("\n\n I am in Node.C in run method about to call state->runController\n\n");
1179  if ( ! CkMyPe() ) {
1180  state->runController();
1181  }
1182 
1183  DebugM(4, "Starting Sequencers\n");
1184  // Run Sequencer on each HomePatch - i.e. start simulation
1187  for (ai=ai.begin(); ai != ai.end(); ai++) {
1188  HomePatch *patch = (*ai).patch;
1189 //CkPrintf("Proc#%d in Node calling Sequencer ",CkMyPe());
1190  patch->runSequencer();
1191  }
1192 
1193  if (!CkMyPe()) {
1194  double newTime = CmiWallTimer();
1195  iout << iINFO << "Startup phase " << startupPhase-1 << " took "
1196  << newTime - startupTime << " s, "
1197  << memusage_MB() << " MB of memory in use\n";
1198  iout << iINFO << "Finished startup at " << newTime << " s, "
1199  << memusage_MB() << " MB of memory in use\n\n" << endi;
1200  fflush(stdout);
1201  }
1202 
1203 // NAMD_EVENT_STOP(1, NamdProfileEvent::NODE_RUN);
1204 }
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:297
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 1477 of file Node.C.

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

1478 {
1479  this->molecule = state->molecule;
1480  this->parameters = state->parameters;
1481  this->simParameters = state->simParameters;
1482  this->configList = state->configList;
1483  this->pdb = state->pdb;
1484  this->state = state;
1485 }
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 1215 of file Node.C.

1215  {
1216  //script->awaken();
1217 }

◆ scriptParam()

void Node::scriptParam ( ScriptParamMsg msg)

Definition at line 1219 of file Node.C.

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

1219  {
1220  simParameters->scriptSet(msg->param,msg->value);
1221  delete msg;
1222 }
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 1376 of file Node.C.

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

Referenced by Controller::algorithm().

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

◆ sendEnableEarlyExit()

void Node::sendEnableEarlyExit ( void  )

Definition at line 1452 of file Node.C.

Referenced by enableEarlyExit().

1452  {
1453  CProxy_Node nodeProxy(thisgroup);
1454  nodeProxy[0].recvEnableEarlyExit();
1455 }

◆ sendEnableExitScheduler()

void Node::sendEnableExitScheduler ( void  )

Definition at line 1428 of file Node.C.

Referenced by enableExitScheduler().

1428  {
1429  //CmiPrintf("sendEnableExitScheduler\n");
1430  CProxy_Node nodeProxy(thisgroup);
1431  nodeProxy[0].recvEnableExitScheduler();
1432 }

◆ 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 1488 of file Node.C.

1488  {
1489 #if USE_HPM
1490  HPM_Start("500 steps", localRankOnNode);
1491 #endif
1492 }

◆ startup()

void Node::startup ( )

Definition at line 462 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().

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

1494  {
1495 #if USE_HPM
1496  HPM_Stop("500 steps", localRankOnNode);
1497  HPM_Print(CkMyPe(), localRankOnNode);
1498 #endif
1499 }

◆ traceBarrier()

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

Definition at line 1501 of file Node.C.

References curTimeStep.

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

◆ updateGridScale() [1/2]

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

Definition at line 1288 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.

1288  {
1289  DebugM(4, "updateGridScale(char*, Vector) called on node " << CkMyPe() << "\n" << endi);
1290 
1291  int gridnum;
1292  MGridforceParams* mgridParams;
1293  if (key == NULL) {
1296  } else {
1297  gridnum = simParameters->mgridforcelist.index_for_key(key);
1298  mgridParams = simParameters->mgridforcelist.find_key(key);
1299  }
1300 
1301  if (gridnum < 0 || mgridParams == NULL) {
1302  NAMD_die("Node::updateGridScale(char*, Vector): Could not find grid.");
1303  }
1304 
1305  GridforceGrid* grid = molecule->get_gridfrc_grid(gridnum);
1306  if (grid == NULL) {
1307  NAMD_bug("Node::updateGridScale(char*, Vector): grid not found");
1308  }
1309  CProxy_Node(thisgroup).updateGridScale(gridnum, scale.x, scale.y, scale.z);
1310 
1311  DebugM(4, "updateGridScale(char*, Vector) finished\n" << endi);
1312 }
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:195
#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:147
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 1313 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.

1313  {
1314  if (CmiMyRank()) return;
1315  DebugM(4, "updateGridScale(char*, int, float, float, float) called on node " << CkMyPe() << "\n" << endi);
1316 
1317  GridforceGrid *grid = molecule->get_gridfrc_grid(gridnum);
1318  if (grid == NULL) {
1319  NAMD_bug("Node::updateGridScale(char*, int, float, float, float):grid not found");
1320  }
1321 
1322  Vector scale(sx,sy,sz);
1324  grid->set_scale( scale );
1325 #ifdef NODEGROUP_FORCE_REGISTER
1326  if(CkMyPe()==0)
1327  {
1328  CProxy_PatchData cpdata(CkpvAccess(BOCclass_group).patchData);
1329  cpdata.setDeviceKernelUpdateCounter();
1330  }
1331 #endif
1332  DebugM(4, "updateGridScale(char*, int, float, float, float) finished\n" << endi);
1333 }
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:195
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(), ComputeCUDAMgr::initialize(), ComputePmeCUDA::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(), ComputeExtMgr::recvCoord(), ComputeMsmSerialMgr::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(), 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: