STORMM Source Documentation
Loading...
Searching...
No Matches
hpc_integration.h
1// -*-c++-*-
2#ifndef STORMM_HPC_INTEGRATION_H
3#define STORMM_HPC_INTEGRATION_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 "DataTypes/common_types.h"
12#include "DataTypes/stormm_vector_types.h"
13#include "MolecularMechanics/mm_controls.h"
14#include "Numerics/numeric_enumerators.h"
15#include "Potential/cacheresource.h"
16#include "Potential/cellgrid.h"
17#include "Potential/energy_enumerators.h"
18#include "Synthesis/atomgraph_synthesis.h"
19#include "Synthesis/phasespace_synthesis.h"
20#include "thermostat.h"
21#include "trajectory_enumerators.h"
22
23namespace stormm {
24namespace trajectory {
25
26using card::CoreKlManager;
27using constants::PrecisionModel;
28using energy::CacheResource;
29using energy::CacheResourceKit;
30using energy::CellGrid;
31using energy::CellGridReader;
32using energy::ValenceKernelSize;
33using mm::MolecularMechanicsControls;
34using mm::MMControlKit;
35using numerics::AccumulationMethod;
36using synthesis::AtomGraphSynthesis;
37using synthesis::PhaseSpaceSynthesis;
38using synthesis::PsSynthesisWriter;
39using synthesis::SyAtomUpdateKit;
40using synthesis::SyValenceKit;
41
65cudaFuncAttributes queryIntegrationKernelRequirements(PrecisionModel calc_prec,
66 PrecisionModel neighbor_prec,
67 UnitCellType unit_cell,
68 AccumulationMethod acc_meth,
69 ValenceKernelSize kwidth,
70 IntegrationStage process);
71
72cudaFuncAttributes queryIntegrationKernelRequirements(PrecisionModel calc_prec,
73 AccumulationMethod acc_meth,
74 ValenceKernelSize kwidth,
75 IntegrationStage process);
77
109void launchIntegrationProcess(PsSynthesisWriter *poly_psw, CacheResourceKit<double> *tb_resw,
110 MMControlKit<double> *ctrl, const SyValenceKit<double> &poly_vk,
112 const ThermostatWriter<double> &tstw, const int2 lp,
113 IntegrationStage process);
114
115void launchIntegrationProcess(PsSynthesisWriter *poly_psw, CacheResourceKit<float> *tb_resw,
116 MMControlKit<float> *ctrl, const SyValenceKit<float> &poly_vk,
118 const ThermostatWriter<float> &tstw, const int2 lp,
119 AccumulationMethod acc_meth, ValenceKernelSize kwidth,
120 IntegrationStage process);
121
122void launchIntegrationProcess(PsSynthesisWriter *poly_psw, CacheResourceKit<double> *tb_resw,
125 const SyValenceKit<double> &poly_vk,
127 const ThermostatWriter<double> &tstw, const int2 lp,
128 IntegrationStage process);
129
130void launchIntegrationProcess(PsSynthesisWriter *poly_psw, CacheResourceKit<double> *tb_resw,
133 const SyValenceKit<double> &poly_vk,
135 const ThermostatWriter<double> &tstw, const int2 lp,
136 IntegrationStage process);
137
138void launchIntegrationProcess(PsSynthesisWriter *poly_psw, CacheResourceKit<double> *tb_resw,
142 const SyValenceKit<double> &poly_vk,
144 const ThermostatWriter<double> &tstw, const int2 lp,
145 IntegrationStage process);
146
147void launchIntegrationProcess(PsSynthesisWriter *poly_psw, CacheResourceKit<double> *tb_resw,
151 const SyValenceKit<double> &poly_vk,
153 const ThermostatWriter<double> &tstw, const int2 lp,
154 IntegrationStage process);
155
156void launchIntegrationProcess(PsSynthesisWriter *poly_psw, CacheResourceKit<float> *tb_resw,
159 const SyValenceKit<float> &poly_vk,
161 const ThermostatWriter<float> &tstw, const int2 lp,
162 AccumulationMethod acc_meth, IntegrationStage process);
163
164void launchIntegrationProcess(PsSynthesisWriter *poly_psw, CacheResourceKit<float> *tb_resw,
167 const SyValenceKit<float> &poly_vk,
169 const ThermostatWriter<float> &tstw, const int2 lp,
170 AccumulationMethod acc_meth, IntegrationStage process);
171
172void launchIntegrationProcess(PsSynthesisWriter *poly_psw, CacheResourceKit<float> *tb_resw,
176 const SyValenceKit<float> &poly_vk,
178 const ThermostatWriter<float> &tstw, const int2 lp,
179 AccumulationMethod acc_meth, IntegrationStage process);
180
181void launchIntegrationProcess(PsSynthesisWriter *poly_psw, CacheResourceKit<float> *tb_resw,
185 const SyValenceKit<float> &poly_vk,
187 const ThermostatWriter<float> &tstw, const int2 lp,
188 AccumulationMethod acc_meth, IntegrationStage process);
189
190void launchIntegrationProcess(PhaseSpaceSynthesis *poly_ps, CacheResource *tb_res, Thermostat *tst,
192 const AtomGraphSynthesis &poly_ag, const CoreKlManager &launcher,
193 PrecisionModel prec, AccumulationMethod acc_meth,
194 IntegrationStage process);
195
196void launchIntegrationProcess(PhaseSpaceSynthesis *poly_ps, CacheResource *tb_res, Thermostat *tst,
199 const AtomGraphSynthesis &poly_ag, const CoreKlManager &launcher,
200 PrecisionModel prec, AccumulationMethod acc_meth,
201 IntegrationStage process);
202
203void launchIntegrationProcess(PhaseSpaceSynthesis *poly_ps, CacheResource *tb_res, Thermostat *tst,
206 const AtomGraphSynthesis &poly_ag, const CoreKlManager &launcher,
207 PrecisionModel prec, AccumulationMethod acc_meth,
208 IntegrationStage process);
209
210void launchIntegrationProcess(PhaseSpaceSynthesis *poly_ps, CacheResource *tb_res, Thermostat *tst,
214 const AtomGraphSynthesis &poly_ag, const CoreKlManager &launcher,
215 PrecisionModel prec, AccumulationMethod acc_meth,
216 IntegrationStage process);
217
218void launchIntegrationProcess(PhaseSpaceSynthesis *poly_ps, CacheResource *tb_res, Thermostat *tst,
222 const AtomGraphSynthesis &poly_ag, const CoreKlManager &launcher,
223 PrecisionModel prec, AccumulationMethod acc_meth,
224 IntegrationStage process);
226
227} // namespace trajectory
228} // namespace stormm
229
230#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 hold temporary data for a particular work unit (whether bonded or non-bonded),...
Definition cacheresource.h:63
An object to manage the spatial decomposition of a system of particles. The general strategy is to ar...
Definition cellgrid.h:562
A collection of contol data for molecular mechanics simulations, conveying the current step number,...
Definition mm_controls.h:100
A collection of one or more AtomGraph objects, with similar components arranged in contiguous arrays ...
Definition atomgraph_synthesis.h:55
A fixed-precision representation of coordinates, velocities, and forces to manage a set of simulation...
Definition phasespace_synthesis.h:325
Store the parameters for a simulation thermostat. Includes Berendsen, Andersen, and Langevin methods....
Definition thermostat.h:221
Abstract for the CacheResource object, accessible as a C-style struct and suitable for passing to GPU...
Definition cacheresource.h:17
Read-only abstract for the CellGrid object. This is unused in typical MD applications,...
Definition cellgrid.h:296
The C-style, always writeable abstract for the MolecularMechanicsControls object. To not be able to m...
Definition mm_controls.h:52
The writer for a PhaseSpaceSynthesis object, containing all of the data relevant for propagating dyna...
Definition phasespace_synthesis.h:87
Collect the virtual site details and constraint parameters of the topology synthesis into a single ab...
Definition synthesis_abstracts.h:257
Collect the critical valence parameters and indexing information for work unit-based evaluation of th...
Definition synthesis_abstracts.h:19
Partially writeable abstract for the Thermostat object. As with the MMControlKit struct (see the libr...
Definition thermostat.h:58