STORMM Source Documentation
Loading...
Searching...
No Matches
hpc_pme_potential.h
1// -*-c++-*-
2#ifndef STORMM_HPC_PME_POTENTIAL_H
3#define STORMM_HPC_PME_POTENTIAL_H
4
5#ifdef STORMM_USE_CUDA
6# include <cuda_runtime.h>
7#endif
8#include "copyright.h"
9#include "Accelerator/core_kernel_manager.h"
10#include "Constants/behavior.h"
11#include "MolecularMechanics/mm_controls.h"
12#include "Synthesis/phasespace_synthesis.h"
13#include "Synthesis/synthesis_abstracts.h"
14#include "energy_enumerators.h"
15#include "local_exclusionmask.h"
16#include "pme_potential.h"
17#include "ppitable.h"
18#include "scorecard.h"
19#include "tile_manager.h"
20
21namespace stormm {
22namespace energy {
23
24using card::CoreKlManager;
25using constants::PrecisionModel;
26using mm::MMControlKit;
27using mm::MolecularMechanicsControls;
28using synthesis::SyNonbondedKit;
29using synthesis::PsSynthesisBorders;
30
31#ifdef STORMM_USE_CUDA
49cudaFuncAttributes
50queryDDPMEPairsKernelRequirements(NeighborListKind neighbor_layout, EvaluateForce eval_frc,
51 EvaluateEnergy eval_nrg, TinyBoxPresence has_tiny_box,
52 ClashResponse clash_handling);
53
54cudaFuncAttributes
55queryDFPMEPairsKernelRequirements(NeighborListKind neighbor_layout, EvaluateForce eval_frc,
56 EvaluateEnergy eval_nrg, TinyBoxPresence has_tiny_box,
57 ClashResponse clash_handling);
58
59cudaFuncAttributes
60queryFDPMEPairsKernelRequirements(NeighborListKind neighbor_layout, EvaluateForce eval_frc,
61 EvaluateEnergy eval_nrg, TinyBoxPresence has_tiny_box,
62 ClashResponse clash_handling);
63
64cudaFuncAttributes
65queryFFPMEPairsKernelRequirements(NeighborListKind neighbor_layout, EvaluateForce eval_frc,
66 EvaluateEnergy eval_nrg, TinyBoxPresence has_tiny_box,
67 ClashResponse clash_handling);
68
69cudaFuncAttributes
70queryPMEPairsKernelRequirements(PrecisionModel coord_prec, PrecisionModel calc_prec,
71 NeighborListKind neighbor_layout, EvaluateForce eval_frc,
72 EvaluateEnergy eval_nrg, TinyBoxPresence has_tiny_box,
73 ClashResponse clash_handling);
75#endif
76
110void launchPMEPairs(const SyNonbondedKit<double, double2> &poly_nbk,
111 const LocalExclusionMaskReader &lemr, const PPIKit<double, double4> &nrg_tab,
113 ScoreCardWriter *scw, MMControlKit<double> *ctrl, EvaluateForce eval_frc,
114 EvaluateEnergy eval_nrg, int2 bt_tp, double clash_distance = 0.0,
115 double clash_ratio = 0.0);
116
117void launchPMEPairs(const SyNonbondedKit<double, double2> &poly_nbk,
118 const LocalExclusionMaskReader &lemr, const PPIKit<double, double4> &nrg_tab,
119 const PsSynthesisBorders &sysbrd,
121 ScoreCardWriter *scw, MMControlKit<double> *ctrl, EvaluateForce eval_frc,
122 EvaluateEnergy eval_nrg, int2 bt_tp, double clash_distance = 0.0,
123 double clash_ratio = 0.0);
124
125void launchPMEPairs(const SyNonbondedKit<double, double2> &poly_nbk,
126 const LocalExclusionMaskReader &lemr, const PPIKit<double, double4> &nrg_tab,
128 ScoreCardWriter *scw, MMControlKit<double> *ctrl, EvaluateForce eval_frc,
129 EvaluateEnergy eval_nrg, int2 bt_tp, double clash_distance = 0.0,
130 double clash_ratio = 0.0);
131
132void launchPMEPairs(const SyNonbondedKit<double, double2> &poly_nbk,
133 const LocalExclusionMaskReader &lemr, const PPIKit<double, double4> &nrg_tab,
134 const PsSynthesisBorders &sysbrd,
136 ScoreCardWriter *scw, MMControlKit<double> *ctrl, EvaluateForce eval_frc,
137 EvaluateEnergy eval_nrg, int2 bt_tp, double clash_distance = 0.0,
138 double clash_ratio = 0.0);
139
140void launchPMEPairs(const SyNonbondedKit<double, double2> &poly_nbk,
141 const LocalExclusionMaskReader &lemr, const PPIKit<double, double4> &nrg_tab,
144 ScoreCardWriter *scw, MMControlKit<double> *ctrl, EvaluateForce eval_frc,
145 EvaluateEnergy eval_nrg, int2 bt_tp, double clash_distance = 0.0,
146 double clash_ratio = 0.0);
147
148void launchPMEPairs(const SyNonbondedKit<double, double2> &poly_nbk,
149 const LocalExclusionMaskReader &lemr, const PPIKit<double, double4> &nrg_tab,
150 const PsSynthesisBorders &sysbrd,
153 ScoreCardWriter *scw, MMControlKit<double> *ctrl, EvaluateForce eval_frc,
154 EvaluateEnergy eval_nrg, int2 bt_tp, double clash_distance = 0.0,
155 double clash_ratio = 0.0);
156
157void launchPMEPairs(const SyNonbondedKit<double, double2> &poly_nbk,
158 const LocalExclusionMaskReader &lemr, const PPIKit<double, double4> &nrg_tab,
161 ScoreCardWriter *scw, MMControlKit<double> *ctrl, EvaluateForce eval_frc,
162 EvaluateEnergy eval_nrg, int2 bt_tp, double clash_distance = 0.0,
163 double clash_ratio = 0.0);
164
165void launchPMEPairs(const SyNonbondedKit<double, double2> &poly_nbk,
166 const LocalExclusionMaskReader &lemr, const PPIKit<double, double4> &nrg_tab,
167 const PsSynthesisBorders &sysbrd,
170 ScoreCardWriter *scw, MMControlKit<double> *ctrl, EvaluateForce eval_frc,
171 EvaluateEnergy eval_nrg, int2 bt_tp, double clash_distance = 0.0,
172 double clash_ratio = 0.0);
173
174void launchPMEPairs(const SyNonbondedKit<float, float2> &poly_nbk,
175 const LocalExclusionMaskReader &lemr, const PPIKit<float, float4> &nrg_tab,
177 ScoreCardWriter *scw, MMControlKit<float> *ctrl, EvaluateForce eval_frc,
178 EvaluateEnergy eval_nrg, int2 bt_tp, double clash_distance = 0.0,
179 double clash_ratio = 0.0);
180
181void launchPMEPairs(const SyNonbondedKit<float, float2> &poly_nbk,
182 const LocalExclusionMaskReader &lemr, const PPIKit<float, float4> &nrg_tab,
183 const PsSynthesisBorders &sysbrd,
185 ScoreCardWriter *scw, MMControlKit<float> *ctrl, EvaluateForce eval_frc,
186 EvaluateEnergy eval_nrg, int2 bt_tp, double clash_distance = 0.0,
187 double clash_ratio = 0.0);
188
189void launchPMEPairs(const SyNonbondedKit<float, float2> &poly_nbk,
190 const LocalExclusionMaskReader &lemr, const PPIKit<float, float4> &nrg_tab,
192 ScoreCardWriter *scw, MMControlKit<float> *ctrl, EvaluateForce eval_frc,
193 EvaluateEnergy eval_nrg, int2 bt_tp, double clash_distance = 0.0,
194 double clash_ratio = 0.0);
195
196void launchPMEPairs(const SyNonbondedKit<float, float2> &poly_nbk,
197 const LocalExclusionMaskReader &lemr, const PPIKit<float, float4> &nrg_tab,
198 const PsSynthesisBorders &sysbrd,
200 ScoreCardWriter *scw, MMControlKit<float> *ctrl, EvaluateForce eval_frc,
201 EvaluateEnergy eval_nrg, int2 bt_tp, double clash_distance = 0.0,
202 double clash_ratio = 0.0);
203
204void launchPMEPairs(const SyNonbondedKit<float, float2> &poly_nbk,
205 const LocalExclusionMaskReader &lemr, const PPIKit<float, float4> &nrg_tab,
208 ScoreCardWriter *scw, MMControlKit<float> *ctrl, EvaluateForce eval_frc,
209 EvaluateEnergy eval_nrg, int2 bt_tp, double clash_distance = 0.0,
210 double clash_ratio = 0.0);
211
212void launchPMEPairs(const SyNonbondedKit<float, float2> &poly_nbk,
213 const LocalExclusionMaskReader &lemr, const PPIKit<float, float4> &nrg_tab,
214 const PsSynthesisBorders &sysbrd,
217 ScoreCardWriter *scw, MMControlKit<float> *ctrl, EvaluateForce eval_frc,
218 EvaluateEnergy eval_nrg, int2 bt_tp, double clash_distance = 0.0,
219 double clash_ratio = 0.0);
220
221void launchPMEPairs(const SyNonbondedKit<float, float2> &poly_nbk,
222 const LocalExclusionMaskReader &lemr, const PPIKit<float, float4> &nrg_tab,
225 ScoreCardWriter *scw, MMControlKit<float> *ctrl, EvaluateForce eval_frc,
226 EvaluateEnergy eval_nrg, int2 bt_tp, double clash_distance = 0.0,
227 double clash_ratio = 0.0);
228
229void launchPMEPairs(const SyNonbondedKit<float, float2> &poly_nbk,
230 const LocalExclusionMaskReader &lemr, const PPIKit<float, float4> &nrg_tab,
231 const PsSynthesisBorders &sysbrd,
234 ScoreCardWriter *scw, MMControlKit<float> *ctrl, EvaluateForce eval_frc,
235 EvaluateEnergy eval_nrg, int2 bt_tp, double clash_distance = 0.0,
236 double clash_ratio = 0.0);
237
238void launchPMEPairs(PrecisionModel prec, const LocalExclusionMask &lem,
241 EvaluateForce eval_frc, EvaluateEnergy eval_nrg,
242 const CoreKlManager &launcher, double clash_distance = 0.0,
243 double clash_ratio = 0.0);
244
245void launchPMEPairs(PrecisionModel prec, const LocalExclusionMask &lem,
246 const PPITable &pairs_tbl, CellGrid<double, llint, double, double4> *cg_qq,
248 ScoreCard *sc, MolecularMechanicsControls *mmctrl, EvaluateForce eval_frc,
249 EvaluateEnergy eval_nrg, const CoreKlManager &launcher,
250 double clash_distance = 0.0, double clash_ratio = 0.0);
251
252void launchPMEPairs(PrecisionModel prec, const LocalExclusionMask &lem,
253 const PPITable &pairs_tbl, CellGrid<float, int, float, float4> *cg,
255 EvaluateForce eval_frc, EvaluateEnergy eval_nrg,
256 const CoreKlManager &launcher, double clash_distance = 0.0,
257 double clash_ratio = 0.0);
258
259void launchPMEPairs(PrecisionModel prec, const LocalExclusionMask &lem,
260 const PPITable &pairs_tbl, CellGrid<float, int, float, float4> *cg_qq,
262 MolecularMechanicsControls *mmctrl, EvaluateForce eval_frc,
263 EvaluateEnergy eval_nrg, const CoreKlManager &launcher,
264 double clash_distance = 0.0, double clash_ratio = 0.0);
266
267} // namespace energy
268} // namespace stormm
269
270#endif
A class to guide the implementation of GPU kernels, with selected thread counts per block and block c...
Definition core_kernel_manager.h:56
An object to manage the spatial decomposition of a system of particles. The general strategy is to ar...
Definition cellgrid.h:562
The local exclusion mask is an generalized form of the ForwardExclusionMask, listing all exclusions i...
Definition local_exclusionmask.h:208
A tabulated non-bonded potential, with or without exclusions, to be used in the context of particle-p...
Definition ppitable.h:163
Track the energy components of a collection of systems in an HPC-capable array. This object uses the ...
Definition scorecard.h:101
When tiles are loaded for what could be partial batches of atoms, it is critical for threads of the w...
Definition tile_manager.h:88
A collection of contol data for molecular mechanics simulations, conveying the current step number,...
Definition mm_controls.h:100
Writeable abstract for the CellGrid object, able to receive new coordinates or accumulate forces.
Definition cellgrid.h:137
A lean, read-only abstract for the LocalExclusionMask class.
Definition local_exclusionmask.h:100
Abstract for the particle-particle interaction table, with pointers to energies and forces and sizing...
Definition ppitable.h:37
Writeable abstract for the ScoreCard object, useful for accumulating energies in many kernels.
Definition scorecard.h:64
The abstract of the TileManager contains pointers to direct the relative indexing of atom reads and t...
Definition tile_manager.h:20
The C-style, always writeable abstract for the MolecularMechanicsControls object. To not be able to m...
Definition mm_controls.h:52
A read-only abstract for the system demarcations in the object. This information is sometimes critica...
Definition phasespace_synthesis.h:61
Collect the critical non-bonded parameters and masking information for work unit-based evaluation of ...
Definition synthesis_abstracts.h:181