STORMM Source Documentation
Loading...
Searching...
No Matches
coordinate_graft.h
1// -*-c++-*-
2#ifndef STORMM_COORDINATE_GRAFT_H
3#define STORMM_COORDINATE_GRAFT_H
4
5#include <vector>
6#include "copyright.h"
7#include "Accelerator/card_utilities.h"
8#include "Accelerator/gpu_details.h"
9#include "Accelerator/gpu_enumerators.h"
10#include "Numerics/split_fixed_precision.h"
11#include "Synthesis/phasespace_synthesis.h"
12#include "Synthesis/condensate.h"
13#include "coordinateframe.h"
14#include "coordinate_util.h"
15#include "phasespace.h"
16#include "coordinate_series.h"
17#include "trajectory_enumerators.h"
18
19namespace stormm {
20namespace trajectory {
21
22using card::GpuDetails;
23using card::HpcKernelSync;
24using card::Hybrid;
25using card::HybridTargetLevel;
26using numerics::hostChangeFPBits;
27using numerics::hostDoubleToInt95;
28using numerics::hostInt95ToDouble;
29using synthesis::Condensate;
30using synthesis::CondensateReader;
31using synthesis::CondensateWriter;
32using synthesis::PhaseSpaceSynthesis;
33using synthesis::PsSynthesisReader;
34using synthesis::PsSynthesisWriter;
35
36#ifdef STORMM_USE_HPC
58void launchGraftCoordXYZ(TrajectoryKind kind, void* xdest, void* ydest, void *zdest,
59 double dest_scale, const void* xorig, const void* yorig,
60 const void* zorig, double orig_scale, const int2* atom_list,
61 const int nxfer, size_t dest_type_index, size_t orig_type_index);
62#endif
63
97template <typename Tdest, typename Torig>
98void graftCoordinateXYZ(TrajectoryKind kind, Tdest* xdest, Tdest* ydest, Tdest* zdest,
99 const double dest_scale, const Torig* xorig, const Torig* yorig,
100 const Torig* zorig, const double orig_scale, const int2* atom_list,
101 const int nxfer);
102
103void graftCoordinateXYZ(const TrajectoryKind kind, llint* xdest, llint* ydest, llint* zdest,
104 const double dest_scale, const llint* xorig, const llint* yorig,
105 const llint* zorig, const double orig_scale, const int2* atom_list,
106 const int nxfer, int* xdest_ovrf, int* ydest_ovrf, int* zdest_ovrf,
107 const int* xorig_ovrf, const int* yorig_ovrf, const int* zorig_ovrf);
109
130void coordGraft(CoordinateFrameWriter *dest, const CoordinateFrameReader &orig,
131 const int2* atom_list, int nxfer,
132 HybridTargetLevel dest_tier = HybridTargetLevel::HOST,
133 HybridTargetLevel orig_tier = HybridTargetLevel::HOST,
134 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
135
136void coordGraft(CoordinateFrame *dest, const CoordinateFrame &orig, const Hybrid<int2> &atom_list,
137 HybridTargetLevel dest_tier = HybridTargetLevel::HOST,
138 HybridTargetLevel orig_tier = HybridTargetLevel::HOST,
139 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
140
141void coordGraft(CoordinateFrameWriter *dest, const PhaseSpaceReader &orig, const int2* atom_list,
142 int nxfer, TrajectoryKind kind,
143 HybridTargetLevel dest_tier = HybridTargetLevel::HOST,
144 HybridTargetLevel orig_tier = HybridTargetLevel::HOST,
145 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
146
147void coordGraft(CoordinateFrame *dest, const PhaseSpace &orig, const Hybrid<int2> &atom_list,
148 TrajectoryKind kind, CoordinateCycle orientation,
149 HybridTargetLevel dest_tier = HybridTargetLevel::HOST,
150 HybridTargetLevel orig_tier = HybridTargetLevel::HOST,
151 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
152
153void coordGraft(CoordinateFrame *dest, const PhaseSpace &orig, const Hybrid<int2> &atom_list,
154 TrajectoryKind kind, HybridTargetLevel dest_tier = HybridTargetLevel::HOST,
155 HybridTargetLevel orig_tier = HybridTargetLevel::HOST,
156 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
157
158void coordGraft(CoordinateFrameWriter *dest, const PhaseSpaceReader &orig, const int2* atom_list,
159 int nxfer, HybridTargetLevel dest_tier = HybridTargetLevel::HOST,
160 HybridTargetLevel orig_tier = HybridTargetLevel::HOST,
161 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
162
163void coordGraft(CoordinateFrame *dest, const PhaseSpace &orig, const Hybrid<int2> &atom_list,
164 HybridTargetLevel dest_tier = HybridTargetLevel::HOST,
165 HybridTargetLevel orig_tier = HybridTargetLevel::HOST,
166 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
167
168template <typename Torig>
169void coordGraft(CoordinateFrameWriter *dest, const CoordinateSeriesReader<Torig> &orig,
170 const int2* atom_list, int nxfer,
171 HybridTargetLevel dest_tier = HybridTargetLevel::HOST,
172 HybridTargetLevel orig_tier = HybridTargetLevel::HOST,
173 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
174
175template <typename Torig>
176void coordGraft(CoordinateFrame *dest, const CoordinateSeries<Torig> &orig,
177 const Hybrid<int2> &atom_list,
178 HybridTargetLevel dest_tier = HybridTargetLevel::HOST,
179 HybridTargetLevel orig_tier = HybridTargetLevel::HOST,
180 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
181
182void coordGraft(CoordinateFrameWriter *dest, const PsSynthesisReader &orig,
183 const int2* atom_list, int nxfer, TrajectoryKind kind,
184 HybridTargetLevel dest_tier = HybridTargetLevel::HOST,
185 HybridTargetLevel orig_tier = HybridTargetLevel::HOST,
186 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
187
188void coordGraft(CoordinateFrame *dest, const PhaseSpaceSynthesis &orig,
189 const Hybrid<int2> &atom_list, TrajectoryKind kind, CoordinateCycle orientation,
190 HybridTargetLevel dest_tier = HybridTargetLevel::HOST,
191 HybridTargetLevel orig_tier = HybridTargetLevel::HOST,
192 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
193
194void coordGraft(CoordinateFrameWriter *dest, const PsSynthesisReader &orig, const int2* atom_list,
195 int nxfer, HybridTargetLevel dest_tier = HybridTargetLevel::HOST,
196 HybridTargetLevel orig_tier = HybridTargetLevel::HOST,
197 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
198
199void coordGraft(CoordinateFrame *dest, const PhaseSpaceSynthesis &orig,
200 const Hybrid<int2> &atom_list, TrajectoryKind kind,
201 HybridTargetLevel dest_tier = HybridTargetLevel::HOST,
202 HybridTargetLevel orig_tier = HybridTargetLevel::HOST,
203 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
204
205void coordGraft(CoordinateFrame *dest, const PhaseSpaceSynthesis &orig,
206 const Hybrid<int2> &atom_list,
207 HybridTargetLevel dest_tier = HybridTargetLevel::HOST,
208 HybridTargetLevel orig_tier = HybridTargetLevel::HOST,
209 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
210
211void coordGraft(CoordinateFrameWriter *dest, const CondensateReader &orig, const int2* atom_list,
212 int nxfer, HybridTargetLevel dest_tier = HybridTargetLevel::HOST,
213 HybridTargetLevel orig_tier = HybridTargetLevel::HOST,
214 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
215
216void coordGraft(CoordinateFrame *dest, const Condensate &orig, const Hybrid<int2> &atom_list,
217 HybridTargetLevel dest_tier = HybridTargetLevel::HOST,
218 HybridTargetLevel orig_tier = HybridTargetLevel::HOST,
219 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
221
222} // namespace trajectory
223} // namespace stormm
224
225#include "coordinate_graft.tpp"
226
227#endif
Pertinent aspects of one particular GPU. Condensing the data for each GPU in this manner helps to ens...
Definition gpu_details.h:27
An evolution of GpuBuffer in pmemd.cuda, the Composite array has elements that are accessible from ei...
Definition hybrid.h:202
Condense the data format, and possibly offer a reduced representation of coordinates,...
Definition condensate.h:146
A fixed-precision representation of coordinates, velocities, and forces to manage a set of simulation...
Definition phasespace_synthesis.h:325
Store the coordinates and box information for a frame, only. This abridged struct can serve when the ...
Definition coordinateframe.h:111
Store the coordinates and box information for a series of frames, in one of several levels of precisi...
Definition coordinate_series.h:137
An object to complement a topology and hold positions, velocities, and forces of all particles in a s...
Definition phasespace.h:141
Read-only abstract for the Condensate class. In most cases, the read-only abstract will be preferred ...
Definition condensate.h:102
The reader for a PhaseSpaceSynthesis object, containing all of the data relevant for propagating dyna...
Definition phasespace_synthesis.h:199
Collect C-style pointers for the elements of a read-only CoordinateFrame object.
Definition coordinateframe.h:65
Collect C-style pointers for the elements of a writable CoordinateFrame object.
Definition coordinateframe.h:30
Collect C-style pointers and critical constants for a read-only CoordinateSeries object.
Definition coordinate_series.h:96
Collect constants and pointers to the components of a read-only PhaseSpace object.
Definition phasespace.h:81