NAMD
Classes | Macros | Functions | Variables
Node.C File Reference
#include <unistd.h>
#include "InfoStream.h"
#include "Node.decl.h"
#include "Node.h"
#include "ProcessorPrivate.h"
#include "Debug.h"
#include <stdio.h>
#include <converse.h>
#include "memusage.h"
#include "IMDOutput.h"
#include "Lattice.h"
#include "ComputeMsmMsa.h"
#include "ComputeMsm.h"
#include "main.decl.h"
#include "main.h"
#include "WorkDistrib.h"
#include "PatchMgr.h"
#include "Patch.h"
#include "Compute.h"
#include "ComputeMap.h"
#include "ComputeMgr.h"
#include "Molecule.h"
#include "HomePatchList.h"
#include "AtomMap.h"
#include "Sequencer.h"
#include "Controller.h"
#include "NamdState.h"
#include "Output.h"
#include "ProxyMgr.h"
#include "PatchMap.h"
#include "PatchMap.inl"
#include "Parameters.h"
#include "SimParameters.h"
#include "Communicate.h"
#include "LdbCoordinator.h"
#include "ScriptTcl.h"
#include "ComputeMgr.decl.h"
#include "ComputePmeMgr.decl.h"
#include "ComputeCUDAMgr.decl.h"
#include "ComputeCUDAMgr.h"
#include "ComputePmeCUDAMgr.decl.h"
#include "ComputePmeCUDAMgr.h"
#include "ComputeGridForceMgr.decl.h"
#include "Sync.h"
#include "BackEnd.h"
#include "PDB.h"
#include "packmsg.h"
#include "CollectionMgr.decl.h"
#include "ParallelIOMgr.decl.h"
#include "Vector.h"
#include "Random.h"
#include "PatchData.h"
#include "DeviceCUDA.h"
#include "Thread.h"
#include "GlobalGPUMgr.h"
#include "SynchronousCollectives.h"
#include "NamdEventsProfiling.h"
#include "DumpBench.h"
#include "CollectionMgr.h"
#include "CollectionMaster.h"
#include "CollectionMaster.decl.h"
#include "Node.def.h"

Go to the source code of this file.

Classes

class  CheckpointMsg
 

Macros

#define MIN_DEBUG_LEVEL   3
 

Functions

void recvCheckpointCReq_handler (envelope *)
 
void recvCheckpointCAck_handler (envelope *)
 
void registerUserEventsForAllComputeObjs (void)
 
void initializeGPUResident ()
 

Variables

__thread DeviceCUDAdeviceCUDA
 
int eventEndOfTimeStep
 
double startupTime
 
SimParametersnode_simParameters
 
Parametersnode_parameters
 
Moleculenode_molecule
 
char * gNAMDBinaryName
 

Macro Definition Documentation

◆ MIN_DEBUG_LEVEL

#define MIN_DEBUG_LEVEL   3

Copyright (c) 1995, 1996, 1997, 1998, 1999, 2000 by The Board of Trustees of the University of Illinois. All rights reserved.

Definition at line 24 of file Node.C.

Function Documentation

◆ initializeGPUResident()

void initializeGPUResident ( )

Definition at line 447 of file Node.C.

References SynchronousCollectives::forceBarrierAll(), GlobalGPUMgr::getDeviceIndex(), GlobalGPUMgr::getDeviceIndexToPeMap(), GlobalGPUMgr::getIsMasterDevice(), GlobalGPUMgr::getIsMasterPe(), GlobalGPUMgr::getNumDevices(), GlobalGPUMgr::initialize(), GlobalGPUMgr::initializeBackends(), SynchronousCollectives::initMasterScope(), GlobalGPUMgr::Object(), and SynchronousCollectives::Object().

Referenced by Node::startup().

447  {
449  GlobalGPUMgr* globalGPUMgr = GlobalGPUMgr::Object();
450  syncColl->forceBarrierAll();
451  globalGPUMgr->initialize();
452  syncColl->initMasterScope(
453  globalGPUMgr->getIsMasterPe(), globalGPUMgr->getIsMasterDevice(),
454  globalGPUMgr->getNumDevices(), globalGPUMgr->getDeviceIndex(),
455  globalGPUMgr->getDeviceIndexToPeMap()
456  );
457  globalGPUMgr->initializeBackends();
458  CthFree(CthSelf());
459 }
bool getIsMasterDevice()
Definition: GlobalGPUMgr.h:124
void initMasterScope(const int isMasterPe, const int isMasterDevice, const int numDevices, const int deviceIndex, const std::vector< int > &masterPeList)
void initialize()
Definition: GlobalGPUMgr.C:58
int getDeviceIndex()
Definition: GlobalGPUMgr.h:101
void initializeBackends()
Definition: GlobalGPUMgr.C:94
int getNumDevices()
Definition: GlobalGPUMgr.h:96
const std::vector< int > & getDeviceIndexToPeMap() const
Definition: GlobalGPUMgr.h:116
static GlobalGPUMgr * Object()
Definition: GlobalGPUMgr.h:61
int getIsMasterPe()
Definition: GlobalGPUMgr.h:106
static SynchronousCollectives * Object()

◆ recvCheckpointCAck_handler()

void recvCheckpointCAck_handler ( envelope *  env)

Definition at line 1416 of file Node.C.

References Node::Object(), and Node::recvCheckpointAck().

Referenced by Node::Node().

1416  {
1417  Node::Object()->recvCheckpointAck(CheckpointMsg::unpack(EnvToUsr(env)));
1418  }
static Node * Object()
Definition: Node.h:86
void recvCheckpointAck(CheckpointMsg *)
Definition: Node.C:1422

◆ recvCheckpointCReq_handler()

void recvCheckpointCReq_handler ( envelope *  env)

Definition at line 1394 of file Node.C.

References Node::Object(), and Node::recvCheckpointReq().

Referenced by Node::Node().

1394  {
1395  Node::Object()->recvCheckpointReq(CheckpointMsg::unpack(EnvToUsr(env)));
1396  }
static Node * Object()
Definition: Node.h:86
void recvCheckpointReq(CheckpointMsg *)
Definition: Node.C:1400

◆ registerUserEventsForAllComputeObjs()

void registerUserEventsForAllComputeObjs ( void  )

Definition at line 853 of file ComputeMgr.C.

References computeAnglesType, computeAnisoType, computeBondsType, computeConsForceType, computeConsTorqueType, computeCrosstermsType, computeCylindricalBCType, computeDihedralsType, computeEFieldType, computeEwaldType, computeExclsType, computeExtType, computeFullDirectType, computeGlobalType, computeGridForceType, computeImpropersType, computeLCPOType, computeNonbondedPairType, computeNonbondedSelfType, computeOneFourNbTholeType, computePmeCUDAType, computePmeType, computeQMType, computeRestraintsType, computeSelfAnglesType, computeSelfAnisoType, computeSelfBondsType, computeSelfCrosstermsType, computeSelfDihedralsType, computeSelfExclsType, computeSelfImpropersType, computeSelfOneFourNbTholeType, computeSelfTholeType, computeSphericalBCType, computeStirType, computeTclBCType, computeTholeType, PatchMap::gridsize_a(), PatchMap::gridsize_b(), PatchMap::gridsize_c(), PatchMap::index_a(), PatchMap::index_b(), PatchMap::index_c(), NAMD_bug(), ComputeMap::numComputes(), PatchMap::Object(), ComputeMap::Object(), Lattice::offset_a(), Lattice::offset_b(), Lattice::offset_c(), ComputeMap::pid(), TRACE_COMPOBJ_IDOFFSET, ComputeMap::trans(), and ComputeMap::type().

Referenced by Node::startup().

853  {
854 #ifdef TRACE_COMPUTE_OBJECTS
856  PatchMap *pmap = PatchMap::Object();
857  char user_des[50];
858  int p1, p2;
859  int adim, bdim, cdim;
860  int t1, t2;
861  int x1, y1, z1, x2, y2, z2;
862  int dx, dy, dz;
863  for (int i=0; i<map->numComputes(); i++)
864  {
865  memset(user_des, 0, 50);
866  switch ( map->type(i) )
867  {
869  sprintf(user_des, "computeNonBondedSelfType_%d_pid_%d", i, map->pid(i,0));
870  break;
871  case computeLCPOType:
872  sprintf(user_des, "computeLCPOType_%d_pid_%d", i, map->pid(i,0));
873  break;
875  adim = pmap->gridsize_a();
876  bdim = pmap->gridsize_b();
877  cdim = pmap->gridsize_c();
878  p1 = map->pid(i, 0);
879  t1 = map->trans(i, 0);
880  x1 = pmap->index_a(p1) + adim * Lattice::offset_a(t1);
881  y1 = pmap->index_b(p1) + bdim * Lattice::offset_b(t1);
882  z1 = pmap->index_c(p1) + cdim * Lattice::offset_c(t1);
883  p2 = map->pid(i, 1);
884  t2 = map->trans(i, 1);
885  x2 = pmap->index_a(p2) + adim * Lattice::offset_a(t2);
886  y2 = pmap->index_b(p2) + bdim * Lattice::offset_b(t2);
887  z2 = pmap->index_c(p2) + cdim * Lattice::offset_c(t2);
888  dx = abs(x1-x2);
889  dy = abs(y1-y2);
890  dz = abs(z1-z2);
891  sprintf(user_des, "computeNonBondedPairType_%d(%d,%d,%d)", i, dx,dy,dz);
892  break;
893 #if defined(NAMD_CUDA) || defined(NAMD_HIP)
894 #ifdef BONDED_CUDA
895  case computeBondedCUDAType:
896  sprintf(user_des, "computeBondedCUDAType_%d", i);
897  break;
898 #endif
899 #endif
900  case computeExclsType:
901  sprintf(user_des, "computeExclsType_%d", i);
902  break;
903  case computeBondsType:
904  sprintf(user_des, "computeBondsType_%d", i);
905  break;
906  case computeAnglesType:
907  sprintf(user_des, "computeAnglesType_%d", i);
908  break;
910  sprintf(user_des, "computeDihedralsType_%d", i);
911  break;
913  sprintf(user_des, "computeImpropersType_%d", i);
914  break;
915  case computeTholeType:
916  sprintf(user_des, "computeTholeType_%d", i);
917  break;
918  case computeAnisoType:
919  sprintf(user_des, "computeAnisoType_%d", i);
920  break;
922  sprintf(user_des, "computeCrosstermsType_%d", i);
923  break;
925  sprintf(user_des, "computeOneFourNbTholeType_%d", i);
926  break;
928  sprintf(user_des, "computeSelfExclsType_%d", i);
929  break;
931  sprintf(user_des, "computeSelfBondsType_%d", i);
932  break;
934  sprintf(user_des, "computeSelfAnglesType_%d", i);
935  break;
937  sprintf(user_des, "computeSelfDihedralsType_%d", i);
938  break;
940  sprintf(user_des, "computeSelfImpropersType_%d", i);
941  break;
943  sprintf(user_des, "computeSelfTholeType_%d", i);
944  break;
946  sprintf(user_des, "computeSelfAnisoType_%d", i);
947  break;
949  sprintf(user_des, "computeSelfCrosstermsType_%d", i);
950  break;
952  sprintf(user_des, "computeSelfOneFourNbTholeType_%d", i);
953  break;
954 #ifdef DPMTA
955  case computeDPMTAType:
956  sprintf(user_des, "computeDPMTAType_%d", i);
957  break;
958 #endif
959 #ifdef DPME
960  case computeDPMEType:
961  sprintf(user_des, "computeDPMEType_%d", i);
962  break;
963 #endif
964  case computePmeType:
965  sprintf(user_des, "computePMEType_%d", i);
966  break;
967 #if defined(NAMD_CUDA) || defined(NAMD_HIP)
968  case computePmeCUDAType:
969  sprintf(user_des, "computePMECUDAType_%d", i);
970  break;
971 #endif
972  case computeEwaldType:
973  sprintf(user_des, "computeEwaldType_%d", i);
974  break;
976  sprintf(user_des, "computeFullDirectType_%d", i);
977  break;
978  case computeGlobalType:
979  sprintf(user_des, "computeGlobalType_%d", i);
980  break;
981  case computeStirType:
982  sprintf(user_des, "computeStirType_%d", i);
983  break;
984  case computeExtType:
985  sprintf(user_des, "computeExtType_%d", i);
986  break;
987  case computeQMType:
988  sprintf(user_des, "computeQMType_%d", i);
989  break;
990  case computeEFieldType:
991  sprintf(user_des, "computeEFieldType_%d", i);
992  break;
993  /* BEGIN gf */
995  sprintf(user_des, "computeGridForceType_%d", i);
996  break;
997  /* END gf */
999  sprintf(user_des, "computeSphericalBCType_%d", i);
1000  break;
1002  sprintf(user_des, "computeCylindricalBCType_%d", i);
1003  break;
1004  case computeTclBCType:
1005  sprintf(user_des, "computeTclBCType_%d", i);
1006  break;
1007  case computeRestraintsType:
1008  sprintf(user_des, "computeRestraintsType_%d", i);
1009  break;
1010  case computeConsForceType:
1011  sprintf(user_des, "computeConsForceType_%d", i);
1012  break;
1013  case computeConsTorqueType:
1014  sprintf(user_des, "computeConsTorqueType_%d", i);
1015  break;
1016  default:
1017  NAMD_bug("Unknown compute type in ComputeMgr::registerUserEventForAllComputeObjs().");
1018  break;
1019  }
1020  int user_des_len = strlen(user_des);
1021  char *user_des_cst = new char[user_des_len+1];
1022  memcpy(user_des_cst, user_des, user_des_len);
1023  user_des_cst[user_des_len] = 0;
1024  //Since the argument in traceRegisterUserEvent is supposed
1025  //to be a const string which will not be copied inside the
1026  //function when a new user event is created, user_des_cst
1027  //has to be allocated in heap.
1028  int reEvenId = traceRegisterUserEvent(user_des_cst, TRACE_COMPOBJ_IDOFFSET+i);
1029  //printf("Register user event (%s) with id (%d)\n", user_des, reEvenId);
1030  }
1031 #else
1032  return;
1033 #endif
1034 }
int numComputes(void)
Definition: ComputeMap.h:103
#define TRACE_COMPOBJ_IDOFFSET
Definition: Compute.h:77
static PatchMap * Object()
Definition: PatchMap.h:27
int index_a(int pid) const
Definition: PatchMap.h:86
int gridsize_c(void) const
Definition: PatchMap.h:66
int gridsize_a(void) const
Definition: PatchMap.h:64
static NAMD_HOST_DEVICE int offset_b(int i)
Definition: Lattice.h:264
void NAMD_bug(const char *err_msg)
Definition: common.C:195
static NAMD_HOST_DEVICE int offset_c(int i)
Definition: Lattice.h:265
ComputeType type(ComputeID cid)
Definition: ComputeMap.C:118
int index_b(int pid) const
Definition: PatchMap.h:87
int index_c(int pid) const
Definition: PatchMap.h:88
static NAMD_HOST_DEVICE int offset_a(int i)
Definition: Lattice.h:263
static ComputeMap * Object()
Definition: ComputeMap.h:91
int gridsize_b(void) const
Definition: PatchMap.h:65
int pid(ComputeID cid, int i)
Definition: ComputeMap.C:107
int trans(ComputeID cid, int i)
Definition: ComputeMap.C:112

Variable Documentation

◆ deviceCUDA

__thread DeviceCUDA* deviceCUDA

Definition at line 23 of file DeviceCUDA.C.

◆ eventEndOfTimeStep

int eventEndOfTimeStep

Definition at line 296 of file Node.C.

Referenced by Controller::integrate(), Sequencer::integrate(), and Node::Node().

◆ gNAMDBinaryName

char* gNAMDBinaryName

Definition at line 247 of file BackEnd.C.

Referenced by BackEnd::init(), and Node::outputPatchComputeMaps().

◆ node_molecule

Molecule* node_molecule

Definition at line 436 of file Node.C.

Referenced by Node::resendMolecule(), Node::resendMolecule2(), and Node::startup().

◆ node_parameters

Parameters* node_parameters

Definition at line 435 of file Node.C.

Referenced by Node::resendMolecule(), Node::resendMolecule2(), and Node::startup().

◆ node_simParameters

SimParameters* node_simParameters

Definition at line 434 of file Node.C.

Referenced by Node::startup().

◆ startupTime

double startupTime

Definition at line 297 of file Node.C.

Referenced by Node::run(), and Node::startup().