STORMM Source Documentation
Loading...
Searching...
No Matches
stormm::stmath::ConjGradSubstrate Struct Reference

Collect pointers needed for conjugate gradient reduction operations, normalizing forces and mixing the results with a separate vector containing some memory of previous iterations. This object re-purposes data in the PhaseSpaceSynthesis object such as the velocities and prior position arrays. Absent from this object is a sense of where each system within the compiled synthesis starts and stops. More...

#include <reduction_abstracts.h>

Public Member Functions

 ConjGradSubstrate (PsSynthesisWriter poly_psw, ReductionBridge *rbg, HybridTargetLevel tier=HybridTargetLevel::HOST)
 The constructor takes a PhaseSpaceSynthesis object and a series of double-precision allocations.
 
 ConjGradSubstrate (PhaseSpaceSynthesis *poly_ps, ReductionBridge *rbg, HybridTargetLevel tier=HybridTargetLevel::HOST)
 

Public Attributes

const double inv_frc_scale
 
llint * xfrc
 Forces acting on all particles in the Cartesian X direction.
 
llint * yfrc
 Forces acting on all particles in the Cartesian Y direction.
 
llint * zfrc
 Forces acting on all particles in the Cartesian Z direction.
 
int * xfrc_ovrf
 Overflow in X forces, when using extended precision models.
 
int * yfrc_ovrf
 Overflow in Y forces, when using extended precision models.
 
int * zfrc_ovrf
 Overflow in Z forces, when using extended precision models.
 
llint * xprv
 Prior forces acting on all particles in the Cartesian X direction.
 
llint * yprv
 Prior forces acting on all particles in the Cartesian Y direction.
 
llint * zprv
 Prior forces acting on all particles in the Cartesian Z direction.
 
int * xprv_ovrf
 Prior overflow in X forces, when using extended precision models.
 
int * yprv_ovrf
 Prior overflow in Y forces, when using extended precision models.
 
int * zprv_ovrf
 Prior overflow in Z forces, when using extended precision models.
 
llint * x_cg_temp
 Mixing components for the X-direction conjugate gradient vector.
 
llint * y_cg_temp
 Mixing components for the Y-direction conjugate gradient vector.
 
llint * z_cg_temp
 Mixing components for the Z-direction conjugate gradient vector.
 
int * x_cg_temp_ovrf
 Overflow for x_cg_temp when using extended precision models.
 
int * y_cg_temp_ovrf
 Overflow for y_cg_temp when using extended precision models.
 
int * z_cg_temp_ovrf
 Overflow for z_cg_temp when using extended precision models.
 
double * gg_buffer
 Squared gradient partial sums.
 
double * dgg_buffer
 Gradient evolution partial sums.
 
double * msum_buffer
 Squared sums of remixed forces on all atoms.
 

Detailed Description

Collect pointers needed for conjugate gradient reduction operations, normalizing forces and mixing the results with a separate vector containing some memory of previous iterations. This object re-purposes data in the PhaseSpaceSynthesis object such as the velocities and prior position arrays. Absent from this object is a sense of where each system within the compiled synthesis starts and stops.

Constructor & Destructor Documentation

◆ ConjGradSubstrate()

stormm::stmath::ConjGradSubstrate::ConjGradSubstrate ( PsSynthesisWriter poly_psw,
ReductionBridge * rbg,
HybridTargetLevel tier = HybridTargetLevel::HOST )

The constructor takes a PhaseSpaceSynthesis object and a series of double-precision allocations.

Overloaded:

  • Accept a pointer to a coordinate synthesis object
  • Accept coordinate synthesis abstract (passed by value)
Parameters
poly_pswWriteable abstract to a coordinate synthesis
poly_psCollection of coordinates in fixed-precision representation
rbgAllocations of double-precision reals to hold transitional sums between gather and scatter kernels
tierGet data pointers on the host (the customary default) or on the HPC device

Member Data Documentation

◆ inv_frc_scale

const double stormm::stmath::ConjGradSubstrate::inv_frc_scale

Inverse force scaling constant. This value is stored to provide a means for unrolling the fixed-precision scaling when computing squared gradients and gradient evolution quantities, although the double-precision accumulators are still very unlikely to overflow.


The documentation for this struct was generated from the following files: