2#ifndef STORMM_COORDINATE_GRAFT_H
3#define STORMM_COORDINATE_GRAFT_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"
22using card::GpuDetails;
23using card::HpcKernelSync;
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;
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);
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,
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);
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);
137 HybridTargetLevel dest_tier = HybridTargetLevel::HOST,
138 HybridTargetLevel orig_tier = HybridTargetLevel::HOST,
139 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
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);
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);
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);
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);
164 HybridTargetLevel dest_tier = HybridTargetLevel::HOST,
165 HybridTargetLevel orig_tier = HybridTargetLevel::HOST,
166 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
168template <
typename Torig>
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);
175template <
typename Torig>
178 HybridTargetLevel dest_tier = HybridTargetLevel::HOST,
179 HybridTargetLevel orig_tier = HybridTargetLevel::HOST,
180 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
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);
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);
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);
201 HybridTargetLevel dest_tier = HybridTargetLevel::HOST,
202 HybridTargetLevel orig_tier = HybridTargetLevel::HOST,
203 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
207 HybridTargetLevel dest_tier = HybridTargetLevel::HOST,
208 HybridTargetLevel orig_tier = HybridTargetLevel::HOST,
209 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
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);
217 HybridTargetLevel dest_tier = HybridTargetLevel::HOST,
218 HybridTargetLevel orig_tier = HybridTargetLevel::HOST,
219 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
225#include "coordinate_graft.tpp"
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