STORMM Source Documentation
Loading...
Searching...
No Matches
coordinate_copy.h
1// -*-c++-*-
2#ifndef STORMM_COORDINATE_COPY_H
3#define STORMM_COORDINATE_COPY_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 "Accelerator/hybrid_util.h"
11#include "Constants/behavior.h"
12#include "DataTypes/common_types.h"
13#include "DataTypes/stormm_vector_types.h"
14#include "Math/matrix_ops.h"
15#include "Math/rounding.h"
16#include "Numerics/split_fixed_precision.h"
17#include "Synthesis/condensate.h"
18#include "Synthesis/phasespace_synthesis.h"
19#include "Synthesis/synthesis_enumerators.h"
20#include "coordinateframe.h"
21#include "coordinate_series.h"
22#include "coordinate_util.h"
23#include "phasespace.h"
24#include "trajectory_enumerators.h"
25#ifdef STORMM_USE_HPC
26# include "hpc_coordinate_copy.h"
27#endif
28
29namespace stormm {
30namespace trajectory {
31
32using card::GpuDetails;
33using card::HpcKernelSync;
34using card::HybridFormat;
35using card::HybridTargetLevel;
36using constants::PrecisionModel;
37using data_types::isFloatingPointScalarType;
38using data_types::isSignedIntegralScalarType;
39using data_types::getStormmScalarTypeName;
40using stmath::extractBoxDimensions;
41using stmath::roundUp;
42using numerics::hostDoubleToInt95;
43using numerics::hostChangeFPBits;
44using synthesis::Condensate;
45using synthesis::CondensateReader;
46using synthesis::CondensateWriter;
47using synthesis::StructureSource;
48using synthesis::CondensateWriter;
49using synthesis::PhaseSpaceSynthesis;
50using synthesis::PsSynthesisReader;
51using synthesis::PsSynthesisWriter;
52
63template <typename Tdest, typename Torig>
64void checkCopyValidity(const Tdest *destination, const Torig &origin,
65 HybridTargetLevel destination_tier, HybridTargetLevel origin_tier);
66
72void coordCopyValidateAtomCounts(int destination_atoms, int origin_atoms);
73
79void coordCopyValidateFrameIndex(int frame_index, int frame_count);
80
86void coordCopyValidateSystemIndex(int system_index, int system_count);
87
119void copyBoxInformation(double* dest_boxdim, double* dest_umat, double* dest_invu,
120 int index_dest, const double* orig_boxdim, const double* orig_umat,
121 const double* orig_invu, int index_orig, llint* dest_boxvecs = nullptr,
122 int* dest_boxvec_ovrf = nullptr, const double dest_scale = 1.0,
123 const llint* orig_boxvecs = nullptr, const int* orig_boxvec_ovrf = nullptr,
124 const int dest_bits = 0, const int orig_bits = 0);
125
126void copyBoxInformation(double* dest_boxdim, double* dest_umat, double* dest_invu,
127 int index_dest, const double* orig_boxdim, const double* orig_umat,
128 const double* orig_invu, llint* dest_boxvecs = nullptr,
129 int* dest_boxvec_ovrf = nullptr);
130
131void copyBoxInformation(double* dest_boxdim, double* dest_umat, double* dest_invu,
132 const double* orig_boxdim, const double* orig_umat,
133 const double* orig_invu, int index_orig = 0);
135
162template <typename Tdest, typename Torig>
163void copyCoordinateXYZ(Tdest* xdest, Tdest* ydest, Tdest* zdest, const Torig* xorig,
164 const Torig* yorig, const Torig* zorig, int natom);
165
166template <typename Tdest, typename Torig>
167void copyCoordinateXYZ(Tdest* xdest, Tdest* ydest, Tdest* zdest, double dest_scale,
168 const Torig* xorig, const Torig* yorig, const Torig* zorig,
169 double orig_scale, int natom);
170
171template <typename Tdest, typename Torig>
172void copyCoordinateXYZ(Tdest* xdest, Tdest* ydest, Tdest* zdest, const Torig* xorig,
173 const Torig* yorig, const Torig* zorig, double orig_scale, int natom);
174
175template <typename Tdest, typename Torig>
176void copyCoordinateXYZ(Tdest* xdest, Tdest* ydest, Tdest* zdest, double dest_scale,
177 const Torig* xorig, const Torig* yorig, const Torig* zorig,
178 double orig_scale, int natom);
179
180template <typename Tdest>
181void copyCoordinateXYZ(Tdest* xdest, Tdest* ydest, Tdest* zdest,
182 const llint* xorig, const int* xorig_ovrf, const llint* yorig,
183 const int* yorig_ovrf, const llint* zorig, const int* zorig_ovrf,
184 double orig_scale, int natom);
185
186template <typename Tdest>
187void copyCoordinateXYZ(Tdest* xdest, Tdest* ydest, Tdest* zdest, double dest_scale,
188 const llint* xorig, const int* xorig_ovrf, const llint* yorig,
189 const int* yorig_ovrf, const llint* zorig, const int* zorig_ovrf,
190 double orig_scale, int natom);
191
192template <typename Torig>
193void copyCoordinateXYZ(llint* xdest, int* xdest_ovrf, llint* ydest, int* ydest_ovrf, llint* zdest,
194 int* zdest_ovrf, double dest_scale, const Torig* xorig, const Torig* yorig,
195 const Torig* zorig, int natom);
196
197template <typename Torig>
198void copyCoordinateXYZ(llint* xdest, int* xdest_ovrf, llint* ydest, int* ydest_ovrf, llint* zdest,
199 int* zdest_ovrf, double dest_scale, const Torig* xorig, const Torig* yorig,
200 const Torig* zorig, double orig_scale, int natom);
201
202void copyCoordinateXYZ(llint* xdest, int* xdest_ovrf, llint* ydest, int* ydest_ovrf, llint* zdest,
203 int* zdest_ovrf, double dest_scale, const llint* xorig,
204 const int* xorig_ovrf, const llint* yorig, const int* yorig_ovrf,
205 const llint* zorig, const int* zorig_ovrf, double orig_scale, int natom);
207
267void coordCopy(CoordinateFrameWriter *destination, const CoordinateFrameReader &origin,
268 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
269 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
270 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
271
272void coordCopy(CoordinateFrame *destination, const CoordinateFrame &origin,
273 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
274 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
275 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
276
277void coordCopy(CoordinateFrameWriter *destination, const PhaseSpaceReader &origin,
278 TrajectoryKind kind, HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
279 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
280 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
281
282void coordCopy(CoordinateFrameWriter *destination, const PhaseSpaceReader &origin,
283 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
284 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
285 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
286
287void coordCopy(CoordinateFrame *destination, const PhaseSpace &origin, TrajectoryKind kind,
288 CoordinateCycle orientation,
289 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
290 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
291 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
292
293void coordCopy(CoordinateFrame *destination, const PhaseSpace &origin, TrajectoryKind kind,
294 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
295 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
296 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
297
298void coordCopy(CoordinateFrame *destination, const PhaseSpace &origin,
299 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
300 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
301 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
302
303template <typename T>
304void coordCopy(CoordinateFrame *destination, const CoordinateSeries<T> &origin,
305 int frame_orig, HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
306 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
307 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
308
309void coordCopy(CoordinateFrameWriter *destination, const PsSynthesisReader &origin,
310 int orig_atom_start, int index_orig, TrajectoryKind kind,
311 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
312 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
313 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
314
315void coordCopy(CoordinateFrame *destination, const PhaseSpaceSynthesis &origin, int index_orig,
316 TrajectoryKind kind, CoordinateCycle orientation,
317 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
318 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
319 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
320
321void coordCopy(CoordinateFrame *destination, const PhaseSpaceSynthesis &origin, int index_orig,
322 TrajectoryKind kind, HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
323 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
324 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
325
326void coordCopy(CoordinateFrame *destination, const PhaseSpaceSynthesis &origin, int index_orig,
327 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
328 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
329 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
330
331void coordCopy(CoordinateFrameWriter *destination, const CondensateReader &origin,
332 int orig_atom_start, int index_orig,
333 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
334 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
335 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
336
337void coordCopy(CoordinateFrame *destination, const Condensate &origin, int index_orig,
338 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
339 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
340 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
341
342void coordCopy(PhaseSpaceWriter *destination, TrajectoryKind kind,
343 const CoordinateFrameReader &origin,
344 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
345 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
346 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
347
348void coordCopy(PhaseSpaceWriter *destination, const CoordinateFrameReader &origin,
349 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
350 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
351 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
352
353void coordCopy(PhaseSpace *destination, TrajectoryKind kind, CoordinateCycle orientation,
354 const CoordinateFrame &origin,
355 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
356 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
357 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
358
359void coordCopy(PhaseSpace *destination, TrajectoryKind kind, const CoordinateFrame &origin,
360 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
361 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
362 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
363
364void coordCopy(PhaseSpace *destination, const CoordinateFrame &origin,
365 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
366 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
367 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
368
369void coordCopy(PhaseSpaceWriter *destination, const PhaseSpaceReader &origin,
370 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
371 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
372 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
373
374void coordCopy(PhaseSpace *destination, const PhaseSpace &origin,
375 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
376 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
377 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
378
379template <typename T>
380void coordCopy(PhaseSpace *destination, TrajectoryKind kind, CoordinateCycle orientation,
381 const CoordinateSeries<T> &origin, int frame_orig,
382 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
383 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
384 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
385
386template <typename T>
387void coordCopy(PhaseSpace *destination, TrajectoryKind kind, const CoordinateSeries<T> &origin,
388 int frame_orig, HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
389 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
390 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
391
392template <typename T>
393void coordCopy(PhaseSpace *destination, const CoordinateSeries<T> &origin, int frame_orig,
394 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
395 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
396 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
397
398void coordCopy(PhaseSpaceWriter *destination, const PsSynthesisReader &origin, int orig_atom_start,
399 int index_orig, HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
400 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
401 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
402
403void coordCopy(PhaseSpace *destination, const PhaseSpaceSynthesis &origin, int index_orig,
404 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
405 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
406 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
407
408void coordCopy(PhaseSpaceWriter *destination, TrajectoryKind kind, const CondensateReader &origin,
409 int orig_atom_start, int index_orig,
410 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
411 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
412 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
413
414void coordCopy(PhaseSpaceWriter *destination, const CondensateReader &origin, int orig_atom_start,
415 int index_orig, HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
416 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
417 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
418
419void coordCopy(PhaseSpace *destination, TrajectoryKind kind, CoordinateCycle orientation,
420 const Condensate &origin, int index_orig,
421 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
422 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
423 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
424
425void coordCopy(PhaseSpace *destination, TrajectoryKind kind, const Condensate &origin,
426 int index_orig, HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
427 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
428 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
429
430void coordCopy(PhaseSpace *destination, const Condensate &origin, int index_orig,
431 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
432 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
433 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
434
435template <typename T>
436void coordCopy(CoordinateSeries<T> *destination, int frame_dest,
437 const CoordinateFrameReader &origin,
438 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
439 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
440 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
441
442template <typename T>
443void coordCopy(CoordinateSeries<T> *destination, int frame_dest, const CoordinateFrame &origin,
444 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
445 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
446 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
447
448template <typename T>
449void coordCopy(CoordinateSeries<T> *destination, int frame_dest, const PhaseSpaceReader &origin,
450 const TrajectoryKind kind,
451 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
452 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
453 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
454
455template <typename T>
456void coordCopy(CoordinateSeries<T> *destination, int frame_dest, const PhaseSpaceReader &origin,
457 HybridTargetLevel destination_tier, HybridTargetLevel origin_tier,
458 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
459
460template <typename T>
461void coordCopy(CoordinateSeries<T> *destination, int frame_dest, const PhaseSpace &origin,
462 TrajectoryKind kind, CoordinateCycle orientation,
463 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
464 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
465 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
466
467template <typename T>
468void coordCopy(CoordinateSeries<T> *destination, int frame_dest, const PhaseSpace &origin,
469 TrajectoryKind kind, HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
470 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
471 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
472
473template <typename T>
474void coordCopy(CoordinateSeries<T> *destination, int frame_dest, const PhaseSpace &origin,
475 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
476 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
477 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
478
479template <typename Tdest, typename Torig>
480void coordCopy(CoordinateSeriesWriter<Tdest> *destination, size_t frame_dest,
481 const CoordinateSeriesReader<Torig> &origin, size_t frame_orig,
482 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
483 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
484 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
485
486template <typename Tdest, typename Torig>
487void coordCopy(CoordinateSeries<Tdest> *destination, size_t frame_dest,
488 const CoordinateSeries<Torig> &origin, size_t frame_orig,
489 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
490 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
491 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
492
493template <typename T>
494void coordCopy(CoordinateSeriesWriter<T> *destination, size_t frame_dest,
495 const PsSynthesisReader &origin, int orig_atom_start, int index_orig,
496 TrajectoryKind kind,
497 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
498 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
499 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
500
501template <typename T>
502void coordCopy(CoordinateSeriesWriter<T> *destination, size_t frame_dest,
503 const PsSynthesisReader &origin, int orig_atom_start, int index_orig,
504 HybridTargetLevel destination_tier, HybridTargetLevel origin_tier,
505 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
506
507template <typename T>
508void coordCopy(CoordinateSeries<T> *destination, size_t frame_dest,
509 const PhaseSpaceSynthesis &origin, int index_orig, TrajectoryKind kind,
510 CoordinateCycle orientation,
511 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
512 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
513 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
514
515template <typename T>
516void coordCopy(CoordinateSeries<T> *destination, size_t frame_dest,
517 const PhaseSpaceSynthesis &origin, int index_orig,
518 TrajectoryKind kind, HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
519 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
520 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
521
522template <typename T>
523void coordCopy(CoordinateSeries<T> *destination, size_t frame_dest,
524 const PhaseSpaceSynthesis &origin, int index_orig,
525 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
526 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
527 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
528
529template <typename T>
530void coordCopy(CoordinateSeriesWriter<T> *destination, size_t frame_dest,
531 const CondensateReader &origin, size_t orig_atom_start, size_t index_orig,
532 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
533 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
534 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
535
536template <typename T>
537void coordCopy(CoordinateSeries<T> *destination, int frame_dest, const Condensate &origin,
538 int index_orig, HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
539 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
540 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
541
542void coordCopy(PhaseSpaceSynthesis *destination, int index_dest, TrajectoryKind kind,
543 CoordinateCycle orientation, const CoordinateFrameReader &origin,
544 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
545 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
546 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
547
548void coordCopy(PhaseSpaceSynthesis *destination, int index_dest, TrajectoryKind kind,
549 const CoordinateFrameReader &origin,
550 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
551 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
552 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
553
554void coordCopy(PhaseSpaceSynthesis *destination, int index_dest,
555 const CoordinateFrameReader &origin,
556 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
557 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
558 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
559
560void coordCopy(PhaseSpaceSynthesis *destination, int index_dest, TrajectoryKind kind,
561 CoordinateCycle orientation, const CoordinateFrame &origin,
562 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
563 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
564 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
565
566void coordCopy(PhaseSpaceSynthesis *destination, int index_dest, TrajectoryKind kind,
567 const CoordinateFrame &origin,
568 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
569 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
570 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
571
572void coordCopy(PhaseSpaceSynthesis *destination, int index_dest, const CoordinateFrame &origin,
573 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
574 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
575 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
576
577void coordCopy(PhaseSpaceSynthesis *destination, int index_dest, const PhaseSpaceReader &origin,
578 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
579 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
580 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
581
582void coordCopy(PhaseSpaceSynthesis *destination, int index_dest, const PhaseSpace &origin,
583 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
584 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
585 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
586
587template <typename T>
588void coordCopy(PsSynthesisWriter *destination, int dest_atom_start, int index_dest,
589 const TrajectoryKind kind, const CoordinateSeriesReader<T> &origin, int frame_orig,
590 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
591 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
592 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
593
594template <typename T>
595void coordCopy(PsSynthesisWriter *destination, int dest_atom_start, int index_dest,
596 const CoordinateSeriesReader<T> &origin, int frame_orig,
597 HybridTargetLevel destination_tier, HybridTargetLevel origin_tier,
598 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
599
600template <typename T>
601void coordCopy(PhaseSpaceSynthesis *destination, int index_dest, TrajectoryKind kind,
602 CoordinateCycle orientation, const CoordinateSeries<T> &origin, int frame_orig,
603 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
604 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
605 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
606
607template <typename T>
608void coordCopy(PhaseSpaceSynthesis *destination, int index_dest, TrajectoryKind kind,
609 const CoordinateSeries<T> &origin, int frame_orig,
610 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
611 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
612 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
613
614template <typename T>
615void coordCopy(PhaseSpaceSynthesis *destination, int index_dest,
616 const CoordinateSeries<T> &origin, int frame_orig,
617 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
618 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
619 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
620
621void coordCopy(PsSynthesisWriter *destination, int dest_atom_start, int index_dest,
622 TrajectoryKind kind, const CondensateReader &origin, int orig_atom_start,
623 int index_orig, int natom,
624 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
625 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
626 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
627
628void coordCopy(PsSynthesisWriter *destination, int dest_atom_start, int index_dest,
629 const CondensateReader &origin, int orig_atom_start, int index_orig, int natom,
630 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
631 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
632 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
633
634void coordCopy(PhaseSpaceSynthesis *destination, int index_dest, TrajectoryKind kind,
635 CoordinateCycle orientation, const Condensate &origin, int index_orig,
636 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
637 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
638 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
639
640void coordCopy(PhaseSpaceSynthesis *destination, int index_dest, TrajectoryKind kind,
641 const Condensate &origin, int index_orig,
642 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
643 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
644 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
645
646void coordCopy(PhaseSpaceSynthesis *destination, int index_dest, const Condensate &origin,
647 int index_orig, HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
648 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
649 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
650
651void coordCopy(PsSynthesisWriter *destination, int dest_atom_start, int index_dest,
652 const PsSynthesisReader &origin, int orig_atom_start, int index_orig, int natom,
653 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
654 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
655 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
656
657void coordCopy(PhaseSpaceSynthesis *destination, int index_dest,
658 const PhaseSpaceSynthesis &origin, int index_orig,
659 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
660 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
661 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
662
663void coordCopy(CondensateWriter *destination, int dest_atom_start, int index_dest,
664 const CoordinateFrameReader &origin,
665 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
666 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
667 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
668
669void coordCopy(Condensate *destination, int index_dest, const CoordinateFrame &origin,
670 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
671 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
672 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
673
674void coordCopy(CondensateWriter *destination, int dest_atom_start, int index_dest,
675 const PhaseSpaceReader &origin, TrajectoryKind kind,
676 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
677 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
678 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
679
680void coordCopy(CondensateWriter *destination, int dest_atom_start, int index_dest,
681 const PhaseSpaceReader &origin, HybridTargetLevel destination_tier,
682 HybridTargetLevel origin_tier, const GpuDetails &gpu = null_gpu,
683 HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
684
685void coordCopy(Condensate *destination, int index_dest, const PhaseSpace &origin,
686 TrajectoryKind kind, CoordinateCycle orientation,
687 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
688 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
689 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
690
691void coordCopy(Condensate *destination, int index_dest, const PhaseSpace &origin,
692 TrajectoryKind kind, HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
693 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
694 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
695
696void coordCopy(Condensate *destination, int index_dest, const PhaseSpace &origin,
697 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
698 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
699 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
700
701template <typename T>
702void coordCopy(CondensateWriter *destination, size_t dest_atom_start, int index_dest,
703 const CoordinateSeriesReader<T> &origin, size_t frame_orig,
704 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
705 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
706 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
707
708template <typename T>
709void coordCopy(Condensate *destination, int index_dest, const CoordinateSeries<T> &origin,
710 size_t frame_orig, HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
711 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
712 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
713
714void coordCopy(CondensateWriter *destination, int dest_atom_start, int index_dest,
715 const PsSynthesisReader &origin, int orig_atom_start, int index_orig, int natom,
716 TrajectoryKind kind, HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
717 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
718 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
719
720void coordCopy(CondensateWriter *destination, int dest_atom_start, int index_dest,
721 const PsSynthesisReader &origin, int orig_atom_start, int index_orig, int natom,
722 HybridTargetLevel destination_tier, HybridTargetLevel origin_tier,
723 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
724
725void coordCopy(Condensate *destination, int index_dest, const PhaseSpaceSynthesis &origin,
726 int index_orig, TrajectoryKind kind, CoordinateCycle orientation,
727 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
728 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
729 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
730
731void coordCopy(Condensate *destination, int index_dest, const PhaseSpaceSynthesis &origin,
732 int index_orig, TrajectoryKind kind,
733 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
734 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
735 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
736
737void coordCopy(Condensate *destination, int index_dest, const PhaseSpaceSynthesis &origin,
738 int index_orig, HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
739 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
740 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
741
742void coordCopy(CondensateWriter *destination, int dest_atom_start, int index_dest,
743 const CondensateReader &origin, int orig_atom_start, int index_orig, int natom,
744 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
745 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
746 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
747
748void coordCopy(Condensate *destination, int index_dest, const Condensate &origin, int index_orig,
749 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
750 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
751 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
752
753void coordCopy(CoordinateSeriesWriter<void> *destination, size_t ct_dest,
754 const CoordinateSeriesReader<void> &origin, size_t ct_orig,
755 const int2* system_pairs, int copy_count,
756 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
757 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
758 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
759
760template <typename Tdest, typename Torig>
761void coordCopy(CoordinateSeries<Tdest> *destination, const CoordinateSeries<Torig> &origin,
762 const std::vector<int2> &system_pairs,
763 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
764 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
765 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
766
767template <typename Tdest, typename Torig>
768void coordCopy(CoordinateSeries<Tdest> *destination, const CoordinateSeries<Torig> &origin,
769 const Hybrid<int2> &system_pairs,
770 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
771 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
772 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
773
774void coordCopy(CoordinateSeriesWriter<void> *destination, size_t ct_dest,
775 const PsSynthesisReader &origin, TrajectoryKind kind, const int2* system_pairs,
776 int copy_count, HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
777 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
778 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
779
780template <typename Tdest>
781void coordCopy(CoordinateSeries<Tdest> *destination, const PhaseSpaceSynthesis &origin,
782 TrajectoryKind kind, CoordinateCycle orientation,
783 const std::vector<int2> &system_pairs,
784 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
785 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
786 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
787
788template <typename Tdest>
789void coordCopy(CoordinateSeries<Tdest> *destination, const PhaseSpaceSynthesis &origin,
790 TrajectoryKind kind, const std::vector<int2> &system_pairs,
791 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
792 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
793 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
794
795template <typename Tdest>
796void coordCopy(CoordinateSeries<Tdest> *destination, const PhaseSpaceSynthesis &origin,
797 const std::vector<int2> &system_pairs,
798 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
799 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
800 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
801
802template <typename Tdest>
803void coordCopy(CoordinateSeries<Tdest> *destination, const PhaseSpaceSynthesis &origin,
804 TrajectoryKind kind, const CoordinateCycle orientation,
805 const Hybrid<int2> &system_pairs,
806 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
807 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
808 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
809
810template <typename Tdest>
811void coordCopy(CoordinateSeries<Tdest> *destination, const PhaseSpaceSynthesis &origin,
812 TrajectoryKind kind, const Hybrid<int2> &system_pairs,
813 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
814 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
815 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
816
817template <typename Tdest>
818void coordCopy(CoordinateSeries<Tdest> *destination, const PhaseSpaceSynthesis &origin,
819 const Hybrid<int2> &system_pairs,
820 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
821 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
822 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
823
824void coordCopy(CoordinateSeriesWriter<void> *destination, size_t ct_dest,
825 const CondensateReader &origin, const int2* system_pairs, int copy_count,
826 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
827 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
828 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
829
830template <typename Tdest>
831void coordCopy(CoordinateSeries<Tdest> *destination, const Condensate &origin,
832 const std::vector<int2> &system_pairs,
833 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
834 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
835 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
836
837template <typename Tdest>
838void coordCopy(CoordinateSeries<Tdest> *destination, const Condensate &origin,
839 const Hybrid<int2> &system_pairs,
840 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
841 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
842 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
843
844void coordCopy(PsSynthesisWriter *destination, const TrajectoryKind kind,
845 const CoordinateSeriesReader<void> &origin, size_t ct_orig,
846 const int2* system_pairs, int copy_count,
847 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
848 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
849 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
850
851template <typename Torig>
852void coordCopy(PhaseSpaceSynthesis *destination, TrajectoryKind kind,
853 CoordinateCycle orientation, const CoordinateSeries<Torig> &origin,
854 const std::vector<int2> &system_pairs,
855 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
856 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
857 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
858
859template <typename Torig>
860void coordCopy(PhaseSpaceSynthesis *destination, TrajectoryKind kind,
861 const CoordinateSeries<Torig> &origin, const std::vector<int2> &system_pairs,
862 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
863 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
864 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
865
866template <typename Torig>
867void coordCopy(PhaseSpaceSynthesis *destination, const CoordinateSeries<Torig> &origin,
868 const std::vector<int2> &system_pairs,
869 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
870 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
871 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
872
873template <typename Torig>
874void coordCopy(PhaseSpaceSynthesis *destination, TrajectoryKind kind, CoordinateCycle orientation,
875 const CoordinateSeries<Torig> &origin, const Hybrid<int2> &system_pairs,
876 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
877 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
878 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
879
880template <typename Torig>
881void coordCopy(PhaseSpaceSynthesis *destination, TrajectoryKind kind,
882 const CoordinateSeries<Torig> &origin, const Hybrid<int2> &system_pairs,
883 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
884 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
885 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
886
887template <typename Torig>
888void coordCopy(PhaseSpaceSynthesis *destination, const CoordinateSeries<Torig> &origin,
889 const Hybrid<int2> &system_pairs,
890 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
891 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
892 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
893
894void coordCopy(PsSynthesisReader *destination, const PsSynthesisReader &origin,
895 const int2* system_pairs, int copy_count,
896 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
897 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
898 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
899
900void coordCopy(PhaseSpaceSynthesis *destination, const PhaseSpaceSynthesis &origin,
901 const std::vector<int2> &system_pairs,
902 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
903 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
904 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
905
906void coordCopy(PhaseSpaceSynthesis *destination, const PhaseSpaceSynthesis &origin,
907 const Hybrid<int2> &system_pairs,
908 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
909 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
910 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
911
912void coordCopy(PsSynthesisWriter *destination, TrajectoryKind kind, const CondensateReader &origin,
913 const int2* system_pairs, int copy_count,
914 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
915 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
916 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
917
918void coordCopy(PhaseSpaceSynthesis *destination, TrajectoryKind kind, CoordinateCycle orientation,
919 const Condensate &origin, const std::vector<int2> &system_pairs,
920 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
921 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
922 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
923
924void coordCopy(PhaseSpaceSynthesis *destination, TrajectoryKind kind, const Condensate &origin,
925 const std::vector<int2> &system_pairs,
926 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
927 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
928 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
929
930void coordCopy(PhaseSpaceSynthesis *destination, const Condensate &origin,
931 const std::vector<int2> &system_pairs,
932 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
933 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
934 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
935
936void coordCopy(PhaseSpaceSynthesis *destination, TrajectoryKind kind, CoordinateCycle orientation,
937 const Condensate &origin, const Hybrid<int2> &system_pairs,
938 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
939 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
940 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
941
942void coordCopy(PhaseSpaceSynthesis *destination, TrajectoryKind kind, const Condensate &origin,
943 const Hybrid<int2> &system_pairs,
944 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
945 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
946 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
947
948void coordCopy(PhaseSpaceSynthesis *destination, const Condensate &origin,
949 const Hybrid<int2> &system_pairs,
950 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
951 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
952 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
953
954void coordCopy(CondensateWriter *destination, const CoordinateSeriesReader<void> &origin,
955 size_t ct_orig, const int2* system_pairs, int copy_count,
956 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
957 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
958 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
959
960template <typename Torig>
961void coordCopy(Condensate *destination, const CoordinateSeries<Torig> &origin,
962 const std::vector<int2> &system_pairs,
963 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
964 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
965 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
966
967template <typename Torig>
968void coordCopy(Condensate *destination, const CoordinateSeries<Torig> &origin,
969 const Hybrid<int2> &system_pairs,
970 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
971 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
972 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
973
974void coordCopy(CondensateWriter *destination, const PsSynthesisReader &origin,
975 TrajectoryKind kind, const int2* system_pairs, int copy_count,
976 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
977 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
978 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
979
980void coordCopy(Condensate *destination, const PhaseSpaceSynthesis &origin, TrajectoryKind kind,
981 CoordinateCycle orientation, const std::vector<int2> &system_pairs,
982 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
983 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
984 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
985
986void coordCopy(Condensate *destination, const PhaseSpaceSynthesis &origin, TrajectoryKind kind,
987 const std::vector<int2> &system_pairs,
988 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
989 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
990 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
991
992void coordCopy(Condensate *destination, const PhaseSpaceSynthesis &origin,
993 const std::vector<int2> &system_pairs,
994 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
995 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
996 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
997
998void coordCopy(Condensate *destination, const PhaseSpaceSynthesis &origin, TrajectoryKind kind,
999 CoordinateCycle orientation, const Hybrid<int2> &system_pairs,
1000 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
1001 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
1002 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
1003
1004void coordCopy(Condensate *destination, const PhaseSpaceSynthesis &origin, TrajectoryKind kind,
1005 const Hybrid<int2> &system_pairs,
1006 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
1007 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
1008 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
1009
1010void coordCopy(Condensate *destination, const PhaseSpaceSynthesis &origin,
1011 const Hybrid<int2> &system_pairs,
1012 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
1013 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
1014 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
1015
1016void coordCopy(CondensateWriter *destination, const CondensateReader &origin,
1017 const int2* system_pairs, int copy_count,
1018 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
1019 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
1020 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
1021
1022void coordCopy(Condensate *destination, const Condensate &origin,
1023 const std::vector<int2> &system_pairs,
1024 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
1025 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
1026 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
1027
1028void coordCopy(Condensate *destination, const Condensate &origin, const Hybrid<int2> &system_pairs,
1029 HybridTargetLevel destination_tier = HybridTargetLevel::HOST,
1030 HybridTargetLevel origin_tier = HybridTargetLevel::HOST,
1031 const GpuDetails &gpu = null_gpu, HpcKernelSync sync = HpcKernelSync::MEMORY_AUTO);
1033
1051template <typename Tdest>
1052void unrollCCXYZOrigin(CoordinateSeriesWriter<Tdest> *destination,
1053 const CoordinateSeriesReader<void> &origin, size_t ct_orig,
1054 const int2* system_pairs, int copy_count,
1055 HybridTargetLevel destination_tier, HybridTargetLevel origin_tier);
1056
1057} // namespace trajectory
1058} // namespace stormm
1059
1060#include "coordinate_copy.tpp"
1061
1062#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
Writeable abstract for the Condensate class, wherein coordinates (only) can be modified as a conseque...
Definition condensate.h:64
The reader for a PhaseSpaceSynthesis object, containing all of the data relevant for propagating dyna...
Definition phasespace_synthesis.h:199
The writer for a PhaseSpaceSynthesis object, containing all of the data relevant for propagating dyna...
Definition phasespace_synthesis.h:87
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 C-style pointers and critical constants for a writeable CoordinateSeries object.
Definition coordinate_series.h:66
Collect constants and pointers to the components of a read-only PhaseSpace object.
Definition phasespace.h:81
Collect constants and pointers to the components of a modifiable PhaseSpace object.
Definition phasespace.h:31