STORMM Source Documentation
Loading...
Searching...
No Matches
stormm::energy::TilePlan Struct Reference

The abstract of the TileManager contains pointers to direct the relative indexing of atom reads and the rearrangements that follow the tile evaluation needed to bring the the atoms back into an arrangement suitable for reducing the forces. The abstract is writeable. More...

#include <tile_manager.h>

Public Member Functions

 TilePlan (int nchoice_in, const int *read_assign_in, const int *self_assign_in, const int *reduce_prep_in, const int *self_prep_in, const float *scalings_in, const int *nt_stencil_in, int *xfrc_ovrf_in, int *yfrc_ovrf_in, int *zfrc_ovrf_in)
 The constructor follows from other abstracts and takes a list of all pointers and critical constants.
 
 TilePlan (const TilePlan &original)=default
 The presence of const member variables negates copy and move assignment operations, but the default copy and move constructors are valid.
 
 TilePlan (TilePlan &&original)=default
 

Public Attributes

const int nchoice
 
const int * read_assign
 
const int * self_assign
 
const int * reduce_prep
 
const int * self_prep
 
const float * scalings
 
const int * nt_stencil
 
int * xfrc_ovrf
 
int * yfrc_ovrf
 Overflow accumulators for receiving atom forces in the Y direction.
 
int * zfrc_ovrf
 Overflow accumulators for receiving atom forces in the Z direction.
 

Detailed Description

The abstract of the TileManager contains pointers to direct the relative indexing of atom reads and the rearrangements that follow the tile evaluation needed to bring the the atoms back into an arrangement suitable for reducing the forces. The abstract is writeable.

Constructor & Destructor Documentation

◆ TilePlan()

stormm::energy::TilePlan::TilePlan ( const TilePlan & original)
default

The presence of const member variables negates copy and move assignment operations, but the default copy and move constructors are valid.

Parameters
originalThe original TilePlan to copy or move

Member Data Documentation

◆ nchoice

const int stormm::energy::TilePlan::nchoice

The number of choices for batch degeneracy in either sending or receiving atoms. The read_assign and reduce_prep arrays are arranged such that the relative indices for receiving atoms in a { 1, 1 } degeneracy (each batch is completely full, no atoms are replicated) are followed by indices for a { 1, 2 } degeneracy (the batch of receiving atoms is half full, each atom appears twice) and then a { 1, 4 } degeneracy (each of the receiving atoms appears four times in the overall batch). If there are higher levels of degeneracy, they would appear next, but the degeneracy of the sending atoms then ticks forward and reading / rearrangement instructions for { 2, 1 } degeneracy then appear, followed by { 2, 2 } and { 2, 4 }. Eventually, { 4, 1 } to { 4, 4 } and perhaps higher degeneracies are covered. Both arrays are thus sized according to the warp size and the square of nchoice.

◆ nt_stencil

const int* stormm::energy::TilePlan::nt_stencil

Coded bitmasks instructing each thread which cell, relative to the center, to access in order to complete the neutral territory tower-plate arrangement. These instructions will be combined with knowledge of the system itself in order to arrive at the exact cell index from which to draw atoms.

◆ read_assign

const int* stormm::energy::TilePlan::read_assign

Reading assignments for threads, following the layout described above.

◆ reduce_prep

const int* stormm::energy::TilePlan::reduce_prep

Reduction preparation shuffle lane assignments for threads. There are nchoice sets of assignments, each the width of a warp.

◆ scalings

const float* stormm::energy::TilePlan::scalings

Scaling factors to be applied to each interaction computed by the threads of a warp in the first iteration of evaluating the tile

◆ self_assign

const int* stormm::energy::TilePlan::self_assign

Reading assignments for threads in self-interaction tiles, arranged in a manner similar to read_assign but with only M x M tiles (squares, not rectangles).

◆ self_prep

const int* stormm::energy::TilePlan::self_prep

Reduction preparation shuffle lane assignments for threads handling self interaction tiles. There are two time nchoice sets of data, each the width of a warp. The first nchoice sets handle tiles where the sending and receiving atoms are truly one and the same and the number of iterations in the inner loop is thereby reduced by half. The second nchoice sets handle tiles where the sending and receiving atoms are not the same but nonetheless come from the same central neighbor list decomposition cell.

◆ xfrc_ovrf

int* stormm::energy::TilePlan::xfrc_ovrf

Overflow accumulators for forces on receiving atoms in the Cartesian X direction


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