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

#include <Compute.h>

Inheritance diagram for Compute:
ComputeHomePatch ComputeHomePatches ComputeHomeTuples< T, S, P > ComputeHomeTuples< AngleElem, Angle, AngleValue > ComputeHomeTuples< AnisoElem, Aniso, AnisoValue > ComputeHomeTuples< BondElem, Bond, BondValue > ComputeHomeTuples< CrosstermElem, Crossterm, CrosstermValue > ComputeHomeTuples< DihedralElem, Dihedral, DihedralValue > ComputeHomeTuples< ExclElem, Exclusion, int > ComputeHomeTuples< GromacsPairElem, GromacsPair, GromacsPairValue > ComputeHomeTuples< ImproperElem, Improper, ImproperValue > ComputeHomeTuples< TholeElem, Thole, TholeValue > ComputeLCPO ComputePatch ComputePatchPair ComputePme ComputePmeCUDA CudaComputeNonbonded

Public Member Functions

 Compute (ComputeID)
 
int type ()
 
virtual ~Compute ()
 
void setNumPatches (int n)
 
int getNumPatches ()
 
virtual void initialize ()
 
virtual void atomUpdate ()
 
virtual void patchReady (PatchID, int doneMigration, int seq)
 
virtual int noWork ()
 
virtual void doWork ()
 
virtual void finishPatch (int)
 
int sequence (void)
 
int priority (void)
 
int getGBISPhase (void)
 
virtual void gbisP2PatchReady (PatchID, int seq)
 
virtual void gbisP3PatchReady (PatchID, int seq)
 

Public Attributes

const ComputeID cid
 
LDObjHandle ldObjHandle
 
LocalWorkMsg *const localWorkMsg
 

Protected Member Functions

void enqueueWork ()
 

Protected Attributes

int computeType
 
int basePriority
 
int gbisPhase
 
int gbisPhasePriority [3]
 

Detailed Description

Definition at line 28 of file Compute.h.

Constructor & Destructor Documentation

◆ Compute()

Compute::Compute ( ComputeID  c)

Definition at line 37 of file Compute.C.

References computeType, gbisPhasePriority, LdbIdField(), ldObjHandle, ComputeMap::Object(), and ComputeMap::type().

37  : gbisPhase(1),basePriority(0), cid(c),
39  gbisPhasePriority[0] = 0;
40  gbisPhasePriority[1] = 0;
41  gbisPhasePriority[2] = 0;
42  doAtomUpdate = false;
44  LdbIdField(ldObjHandle.id, 0) = 0;
45 }
LDObjHandle ldObjHandle
Definition: Compute.h:44
LocalWorkMsg *const localWorkMsg
Definition: Compute.h:46
#define PRIORITY_SIZE
Definition: Priorities.h:13
ComputeType type(ComputeID cid)
Definition: ComputeMap.C:118
int computeType
Definition: Compute.h:36
int gbisPhasePriority[3]
Definition: Compute.h:40
const int & LdbIdField(const LdbId &id, const int index)
int gbisPhase
Definition: Compute.h:39
static ComputeMap * Object()
Definition: ComputeMap.h:89
int basePriority
Definition: Compute.h:37
const ComputeID cid
Definition: Compute.h:43

◆ ~Compute()

Compute::~Compute ( )
virtual

Definition at line 47 of file Compute.C.

References localWorkMsg.

47  {
48  delete localWorkMsg;
49 }
LocalWorkMsg *const localWorkMsg
Definition: Compute.h:46

Member Function Documentation

◆ atomUpdate()

virtual void Compute::atomUpdate ( void  )
inlinevirtual

◆ doWork()

void Compute::doWork ( void  )
virtual

Reimplemented in ComputeHomeTuples< T, S, P >, ComputeHomeTuples< AnisoElem, Aniso, AnisoValue >, ComputeHomeTuples< AngleElem, Angle, AngleValue >, ComputeHomeTuples< GromacsPairElem, GromacsPair, GromacsPairValue >, ComputeHomeTuples< ExclElem, Exclusion, int >, ComputeHomeTuples< DihedralElem, Dihedral, DihedralValue >, ComputeHomeTuples< ImproperElem, Improper, ImproperValue >, ComputeHomeTuples< BondElem, Bond, BondValue >, ComputeHomeTuples< CrosstermElem, Crossterm, CrosstermValue >, ComputeHomeTuples< TholeElem, Thole, TholeValue >, ComputeSelfTuples< T, S, P >, ComputeSelfTuples< AnisoElem, Aniso, AnisoValue >, ComputeSelfTuples< AngleElem, Angle, AngleValue >, ComputeSelfTuples< GromacsPairElem, GromacsPair, GromacsPairValue >, ComputeSelfTuples< ExclElem, Exclusion, int >, ComputeSelfTuples< DihedralElem, Dihedral, DihedralValue >, ComputeSelfTuples< ImproperElem, Improper, ImproperValue >, ComputeSelfTuples< BondElem, Bond, BondValue >, ComputeSelfTuples< CrosstermElem, Crossterm, CrosstermValue >, ComputeSelfTuples< TholeElem, Thole, TholeValue >, CudaComputeNonbonded, ComputeQM, ComputeLCPO, ComputeEwald, ComputeMoa, ComputePme, ComputeGlobal, ComputeHomePatch, ComputePatchPair, ComputePatch, ComputeGBISser, ComputeMsm, ComputeTclBC, ComputePmeCUDA, ComputeExt, ComputeFmmSerial, ComputeFullDirect, ComputeLjPmeSerial, and ComputeMsmSerial.

Definition at line 120 of file Compute.C.

References DebugM.

Referenced by WorkDistrib::enqueueAngles(), WorkDistrib::enqueueAniso(), WorkDistrib::enqueueBonds(), WorkDistrib::enqueueCrossterms(), WorkDistrib::enqueueCUDA(), WorkDistrib::enqueueCUDAP2(), WorkDistrib::enqueueCUDAP3(), WorkDistrib::enqueueDihedrals(), WorkDistrib::enqueueExcls(), WorkDistrib::enqueueGromacsPair(), WorkDistrib::enqueueImpropers(), WorkDistrib::enqueueLCPO(), WorkDistrib::enqueueMIC(), WorkDistrib::enqueuePme(), WorkDistrib::enqueueSelfA1(), WorkDistrib::enqueueSelfA2(), WorkDistrib::enqueueSelfA3(), WorkDistrib::enqueueSelfB1(), WorkDistrib::enqueueSelfB2(), WorkDistrib::enqueueSelfB3(), WorkDistrib::enqueueThole(), WorkDistrib::enqueueWork(), WorkDistrib::enqueueWorkA1(), WorkDistrib::enqueueWorkA2(), WorkDistrib::enqueueWorkA3(), WorkDistrib::enqueueWorkB1(), WorkDistrib::enqueueWorkB2(), WorkDistrib::enqueueWorkB3(), WorkDistrib::enqueueWorkC(), WorkDistrib::finishCUDA(), WorkDistrib::finishCUDAP2(), WorkDistrib::finishCUDAP3(), WorkDistrib::finishMIC(), WorkDistrib::messageEnqueueWork(), WorkDistrib::messageFinishCUDA(), and WorkDistrib::messageFinishMIC().

120  {
121  DebugM(5,"Default Compute::doWork() called.\n");
122 }
#define DebugM(x, y)
Definition: Debug.h:75

◆ enqueueWork()

void Compute::enqueueWork ( )
protected

Definition at line 51 of file Compute.C.

References DebugM, WorkDistrib::messageEnqueueWork(), and noWork().

Referenced by gbisP2PatchReady(), gbisP3PatchReady(), and patchReady().

51  {
52  if (!this) { DebugM(4,"This Compute is NULL!!!\n"); }
53  if ( ! noWork() ) {
54  //gbisPhase = 1; //first phase - this should already be 1
55  WorkDistrib::messageEnqueueWork(this); // should be in ComputeMgr?
56  } else {
57  //don't enqueue work
58  }
59 }
#define DebugM(x, y)
Definition: Debug.h:75
static void messageEnqueueWork(Compute *)
Definition: WorkDistrib.C:2852
virtual int noWork()
Definition: Compute.C:116

◆ finishPatch()

void Compute::finishPatch ( int  )
virtual

Definition at line 124 of file Compute.C.

References DebugM.

Referenced by WorkDistrib::finishCUDAPatch().

124  {
125  DebugM(5,"Default Compute::finishPatch() called.\n");
126 }
#define DebugM(x, y)
Definition: Debug.h:75

◆ gbisP2PatchReady()

void Compute::gbisP2PatchReady ( PatchID  pid,
int  seq 
)
virtual

Reimplemented in CudaComputeNonbonded.

Definition at line 96 of file Compute.C.

References enqueueWork().

Referenced by CudaComputeNonbonded::gbisP2PatchReady().

96  {
97 
98  if (! --patchReadyCounter) {
99  patchReadyCounter = numPatches;
100  //gbisPhase = 2;
101  sequenceNumber = seq;
102  enqueueWork();
103  }
104 }
void enqueueWork()
Definition: Compute.C:51

◆ gbisP3PatchReady()

void Compute::gbisP3PatchReady ( PatchID  pid,
int  seq 
)
virtual

Reimplemented in CudaComputeNonbonded.

Definition at line 106 of file Compute.C.

References enqueueWork().

Referenced by CudaComputeNonbonded::gbisP3PatchReady().

106  {
107  if (! --patchReadyCounter) {
108  patchReadyCounter = numPatches;
109  //gbisPhase = 3;
110  sequenceNumber = seq;
111  enqueueWork();
112  }
113 }
void enqueueWork()
Definition: Compute.C:51

◆ getGBISPhase()

int Compute::getGBISPhase ( void  )
inline

Definition at line 66 of file Compute.h.

References gbisPhase.

Referenced by WorkDistrib::messageEnqueueWork(), WorkDistrib::messageFinishCUDA(), and WorkDistrib::messageFinishMIC().

66 {return gbisPhase;}
int gbisPhase
Definition: Compute.h:39

◆ getNumPatches()

int Compute::getNumPatches ( )
inline

◆ initialize()

virtual void Compute::initialize ( void  )
inlinevirtual

◆ noWork()

int Compute::noWork ( )
virtual

Reimplemented in CudaComputeNonbonded, ComputeLCPO, ComputePme, ComputeNonbondedSelf, ComputeNonbondedPair, and ComputePmeCUDA.

Definition at line 116 of file Compute.C.

Referenced by enqueueWork().

116  {
117  return 0;
118 }

◆ patchReady()

void Compute::patchReady ( PatchID  patchID,
int  doneMigration,
int  seq 
)
virtual

Reimplemented in CudaComputeNonbonded.

Definition at line 67 of file Compute.C.

References atomUpdate(), DebugM, enqueueWork(), Node::Object(), Node::simParameters, and simParams.

Referenced by CudaComputeNonbonded::patchReady().

67  {
68  if (doneMigration) { // If any patch has done migration - we must remap
69  doAtomUpdate = true;
70  }
71 
72  if (numPatches <= 0) {
73  DebugM(5,"Compute::patchReady("<<patchID<<")-call not valid!\n");
74  } else {
75  if (! --patchReadyCounter) {
76  patchReadyCounter = numPatches;
77  //gbisPhase = 1;
78  sequenceNumber = seq; // breaks CUDA priority if done earlier
79  //fprintf(stderr, "Sequence number %d\n", sequenceNumber);
80  if (doAtomUpdate) {
81  atomUpdate();
82  doAtomUpdate = false;
83  }
84 #ifdef NODEGROUP_FORCE_REGISTER
86  if(!simParams->CUDASOAintegrate){
87  enqueueWork();
88  }
89 #else
90  enqueueWork();
91 #endif
92  }
93  }
94 }
static Node * Object()
Definition: Node.h:86
SimParameters * simParameters
Definition: Node.h:181
#define DebugM(x, y)
Definition: Debug.h:75
#define simParams
Definition: Output.C:129
void enqueueWork()
Definition: Compute.C:51
virtual void atomUpdate()
Definition: Compute.h:59

◆ priority()

int Compute::priority ( void  )
inline

◆ sequence()

int Compute::sequence ( void  )
inline

◆ setNumPatches()

void Compute::setNumPatches ( int  n)
inline

◆ type()

int Compute::type ( )
inline

Definition at line 48 of file Compute.h.

References computeType.

Referenced by WorkDistrib::messageEnqueueWork().

48 { return computeType; };
int computeType
Definition: Compute.h:36

Member Data Documentation

◆ basePriority

int Compute::basePriority
protected

◆ cid

const ComputeID Compute::cid

◆ computeType

int Compute::computeType
protected

Definition at line 36 of file Compute.h.

Referenced by Compute(), ComputePatch::doWork(), ComputePatchPair::doWork(), and type().

◆ gbisPhase

int Compute::gbisPhase
protected

◆ gbisPhasePriority

int Compute::gbisPhasePriority[3]
protected

◆ ldObjHandle

LDObjHandle Compute::ldObjHandle

◆ localWorkMsg

LocalWorkMsg* const Compute::localWorkMsg

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