STORMM Source Documentation
Loading...
Searching...
No Matches
hpc_minimization.h
1// -*-c++-*-
2#ifndef STORMM_HPC_MINIMIZATION_H
3#define STORMM_HPC_MINIMIZATION_H
4
5#include "copyright.h"
6#include "Accelerator/core_kernel_manager.h"
7#include "Accelerator/gpu_details.h"
8#include "Constants/behavior.h"
9#include "Constants/fixed_precision.h"
10#include "MolecularMechanics/line_minimization.h"
11#include "MolecularMechanics/mm_controls.h"
12#include "Namelists/nml_minimize.h"
13#include "Numerics/split_fixed_precision.h"
14#include "Potential/cacheresource.h"
15#include "Potential/scorecard.h"
16#include "Math/reduction_bridge.h"
17#include "Synthesis/atomgraph_synthesis.h"
18#include "Synthesis/implicit_solvent_workspace.h"
19#include "Synthesis/phasespace_synthesis.h"
20#include "Synthesis/static_mask_synthesis.h"
21#include "UnitTesting/stopwatch.h"
22
23namespace stormm {
24namespace mm {
25
26using card::GpuDetails;
27using card::CoreKlManager;
28using constants::PrecisionModel;
29using energy::CacheResource;
30using energy::ScoreCard;
31using energy::ScoreCardWriter;
32using stmath::ReductionBridge;
33using stmath::ReductionKit;
34using namelist::MinimizeControls;
35using numerics::default_energy_scale_bits;
36using numerics::AccumulationMethod;
37using synthesis::AtomGraphSynthesis;
38using synthesis::ImplicitSolventWorkspace;
39using synthesis::ISWorkspaceKit;
40using synthesis::PhaseSpaceSynthesis;
41using synthesis::PsSynthesisWriter;
42using synthesis::StaticExclusionMaskSynthesis;
43using testing::StopWatch;
44
49cudaFuncAttributes queryMinimizationKernelRequirements(const PrecisionModel prec);
50
63void launchLineAdvance(PrecisionModel prec, PsSynthesisWriter *poly_psw, const ReductionKit &redk,
64 const ScoreCardWriter &scw, LinMinWriter *lmw, int move_number,
65 const int2 redu_lp);
66
67void launchLineAdvance(PrecisionModel prec, PhaseSpaceSynthesis *poly_ps,
68 const AtomGraphSynthesis &poly_ag, ScoreCard *sc,
69 LineMinimization *line_record, int move_number,
70 const CoreKlManager &launcher);
72
122void launchMinimization(PrecisionModel prec, const AtomGraphSynthesis &poly_ag,
123 const StaticExclusionMaskSynthesis &poly_se,
124 PhaseSpaceSynthesis *poly_ps, const MinimizeControls &mincon,
127 MolecularMechanicsControls *mmctrl_cdfe,
128 MolecularMechanicsControls *mmctrl_cdxe, ScoreCard *sc,
129 CacheResource *vale_fe_cache, CacheResource *vale_xe_cache,
130 CacheResource *vale_cdfe_cache, CacheResource *vale_cdxe_cache,
131 CacheResource *nonb_cache, CacheResource *nonb_cd_cache,
133 LineMinimization *line_record, AccumulationMethod acc_meth,
134 const GpuDetails &gpu, const CoreKlManager &launcher,
135 StopWatch *timer = nullptr,
136 const std::string &task_name = std::string(""));
137
138ScoreCard launchMinimization(const AtomGraphSynthesis &poly_ag,
139 const StaticExclusionMaskSynthesis &poly_se,
140 PhaseSpaceSynthesis *poly_ps, const MinimizeControls &mincon,
141 const GpuDetails &gpu, PrecisionModel prec = PrecisionModel::SINGLE,
142 int energy_accumulation_bits = default_energy_scale_bits,
143 StopWatch *timer = nullptr,
144 const std::string &task_name = std::string(""));
145
146ScoreCard launchMinimization(const AtomGraphSynthesis &poly_ag, PhaseSpaceSynthesis *poly_ps,
147 const MinimizeControls &mincon, const GpuDetails &gpu,
148 PrecisionModel prec = PrecisionModel::SINGLE,
149 int energy_accumulation_bits = default_energy_scale_bits,
150 StopWatch *timer = nullptr,
151 const std::string &task_name = std::string(""));
153
154} // namespace mm
155} // namespace stormm
156
157#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
Pertinent aspects of one particular GPU. Condensing the data for each GPU in this manner helps to ens...
Definition gpu_details.h:27
An object to hold temporary data for a particular work unit (whether bonded or non-bonded),...
Definition cacheresource.h:63
Track the energy components of a collection of systems in an HPC-capable array. This object uses the ...
Definition scorecard.h:101
This object serves a synthesis of systems. Hold the move multipliers for all of them and energies obt...
Definition line_minimization.h:85
A collection of contol data for molecular mechanics simulations, conveying the current step number,...
Definition mm_controls.h:100
Object to encapsulate energy minimization control information. Like other namelist encapsualtors,...
Definition nml_minimize.h:38
Allocate space for reduction operations to store temporary accumulations, bridging the gap between ga...
Definition reduction_bridge.h:18
A collection of one or more AtomGraph objects, with similar components arranged in contiguous arrays ...
Definition atomgraph_synthesis.h:55
A small collection of arrays to manage temporary accumulators for computing Born radii and their deri...
Definition implicit_solvent_workspace.h:65
A fixed-precision representation of coordinates, velocities, and forces to manage a set of simulation...
Definition phasespace_synthesis.h:325
An exclusion mask object for a compilation of systems. All systems are represented in full detail,...
Definition static_mask_synthesis.h:54
Object for managing calls to the C-standard function gettimeofday(), calculating deltas and categoriz...
Definition stopwatch.h:23
Writeable abstract for the ScoreCard object, useful for accumulating energies in many kernels.
Definition scorecard.h:64
Abstract for the line minimization object incorporating write access.
Definition line_minimization.h:15
Collect the simple components needed to guide reductions across all systems in a topology synthesis (...
Definition reduction_abstracts.h:24
The writer for a PhaseSpaceSynthesis object, containing all of the data relevant for propagating dyna...
Definition phasespace_synthesis.h:87