1 #ifndef CUDACOMPUTENONBONDED_H
2 #define CUDACOMPUTENONBONDED_H
19 #define MAX_EXCLUSIONS (1<<27)
89 size_t maxShmemPerBlock;
102 int2 *exclusionsByAtom;
113 int2* exclIndexMaxDiff;
114 int exclIndexMaxDiffSize;
131 float4* h_forcesSlow;
132 int h_forcesSlowSize;
136 float4* d_forcesSlow;
137 int d_forcesSlowSize;
165 cudaEvent_t forceDoneEvent;
166 bool forceDoneEventRecord;
173 std::vector<int> pes;
175 std::vector< std::vector<int> > rankPatches;
183 std::vector<ComputeRecord> computes;
184 std::vector<PatchRecord> patches;
194 float pairlistTolerance;
207 double beforeForceCompute;
209 static inline void updateVdwTypesExclLoop(
int first,
int last,
void *result,
int paraNum,
void *param);
210 void updateVdwTypesExclSubset(
int first,
int last);
212 static inline void copyAtomsLoop(
int first,
int last,
void *result,
int paraNum,
void *param);
213 void copyAtomsSubset(
int first,
int last);
217 void updatePatches();
218 int calcNumTileLists();
219 void getMaxMovementTolerance(
float& maxAtomMovement,
float& maxPatchTolerance);
220 void updateVdwTypesExcl();
221 void buildNeighborlist();
227 void finishSetOfPatchesOnPe(std::vector<int>& patchSet);
228 void finishPatches();
229 void finishGBISPhase(
int i);
231 void reSortTileLists();
233 static void forceDoneCheck(
void *arg,
double walltime);
234 void forceDoneSetCallback();
235 void updateComputes();
236 void buildExclusions();
237 void skipPatch(
int i);
239 void reallocateArrays();
240 void copyGBISphase(
int i);
241 void updatePatch(
int i);
243 void assignPatch(
int i);
247 const bool doStreaming;
248 int* patchReadyQueue;
249 int patchReadyQueueNext, patchReadyQueueLen;
251 void finishPatch(
int i);
252 void unregisterBox(
int i);
282 #endif // CUDACOMPUTENONBONDED_H
void finishPatchOnPe(int i)
virtual void initialize()
Box< Patch, Real > * dHdrPrefixBox
Box< Patch, Real > * intRadBox
virtual void gbisP2PatchReady(PatchID, int seq)
void messageEnqueueWork()
Box< Patch, GBReal > * dEdaSumBox
Box< Patch, Real > * bornRadBox
virtual void gbisP3PatchReady(PatchID, int seq)
CudaComputeNonbonded(ComputeID c, int deviceID, CudaNonbondedTables &cudaNonbondedTables, bool doStreaming)
void unregisterBoxesOnPe()
PatchRecord(PatchID patchID)
void registerComputeSelf(ComputeID cid, PatchID pid)
Box< Patch, Results > * forceBox
bool operator<(const PatchRecord &pr) const
virtual void patchReady(PatchID, int doneMigration, int seq)
Box< Patch, CompAtom > * positionBox
Box< Patch, GBReal > * psiSumBox
int reversePriorityRankInPe
void registerComputePair(ComputeID cid, PatchID *pid, int *trans)
void assignPatches(ComputeMgr *computeMgrIn)
virtual void atomUpdate()
bool operator==(const PatchRecord &pr) const