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>
|
| 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 |
|
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.
◆ 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
-
original | The original TilePlan to copy or move |
◆ 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: