When tiles are loaded for what could be partial batches of atoms, it is critical for threads of the warp to be able to quickly calculate which atoms to load and perhaps replicate. After the tile has been evaluated, a rearrangement may be necessary to put atoms back in an order that the accumulated forces can be reduced and then added back to global arrays. This class will store tables of relative reading assignments and the preparatory rearrangements needed for the reduction step. The tables will be read with full L1-caching protocols to occupy a few kB of L1 with frequent re-use during particle-particle interaction tile evaluation.
More...
#include <tile_manager.h>
|
| TileManager (const int2 launch_parameters, int max_deg_in=0) |
| The constructor requires specifications of the GPU and can accept a value for the maximum degeneracy for testing purposes.
|
|
int | getMaximumBatchDegeneracy () const |
| Get the base-two logarithm of the maximum degeneracy in the batch atoms.
|
|
std::vector< int > | getSendingAtomLayout (const int sending_atom_degeneracy) const |
| Get the layout of sending atoms for a given degeneracy. This is for convenience in testing or prototyping new methods with the tile scheme.
|
|
std::vector< int > | getReadAssignments (int sending_atom_degeneracy, int recving_atom_degeneracy) const |
| Get the list of reading assignments (for inspection) pertaining to given degeneracies in the sending (tile X-axis) and receiving (tile Y-axis) atoms.
|
|
std::vector< int > | getSelfAssignments (int sending_atom_degeneracy, int recving_atom_degeneracy) const |
| Get the list of reading assignments (for inspection) pertaining to given degeneracies in the tiles of the central cell, where sending and receiving atoms may be one and the same. Descriptions of input parameters follow from getReadAssignments(), above.
|
|
std::vector< int > | getReductionPreparations (int sending_atom_degeneracy, int recving_atom_degeneracy) const |
| Get the list of reduction preparations (for inspection) pertaining to given degeneracies in the sending (tile X-axis) and receiving (tile Y-axis) atoms. Descriptions of input parameters follow from getReadAssignments(), above.
|
|
std::vector< int > | getSelfPreparations (int sending_atom_degeneracy, int recving_atom_degeneracy) const |
| Get the list of reduction preparations (for inspection) as above, but for tiles that might include self interactions. Descriptions of input parameters follow from getReadAssignments(), above.
|
|
std::vector< float > | getThreadScalings (int atom_degeneracy) const |
| Get the scaling factors to be applied to each thread's computed interaction in the first iteration to evaluate the tile, given an atom degeneracy. This is for developer inspection and debugging.
|
|
std::vector< int > | getNeutralTerritoryStencil () const |
| Get the map of the neutral territory decomposition, for inspection.
|
|
TilePlan | data (HybridTargetLevel tier=HybridTargetLevel::HOST) |
| Get the abstract.
|
|
|
| TileManager (const TileManager &original) |
| The default copy and move constructors as well as assignment operators are all valid.
|
|
| TileManager (TileManager &&original) |
|
TileManager & | operator= (const TileManager &original) |
|
TileManager & | operator= (TileManager &&original) |
|
When tiles are loaded for what could be partial batches of atoms, it is critical for threads of the warp to be able to quickly calculate which atoms to load and perhaps replicate. After the tile has been evaluated, a rearrangement may be necessary to put atoms back in an order that the accumulated forces can be reduced and then added back to global arrays. This class will store tables of relative reading assignments and the preparatory rearrangements needed for the reduction step. The tables will be read with full L1-caching protocols to occupy a few kB of L1 with frequent re-use during particle-particle interaction tile evaluation.
◆ TileManager() [1/2]
stormm::energy::TileManager::TileManager |
( |
const int2 | launch_parameters, |
|
|
int | max_deg_in = 0 ) |
The constructor requires specifications of the GPU and can accept a value for the maximum degeneracy for testing purposes.
- Parameters
-
launch_parameters | Specifications of for allocating block-specific storage arrays |
max_deg_in | Maximum degeneracy to permit in any one atom batch fulfilling one side of the tile. The default of zero or less engages the default degeneracies. |
◆ TileManager() [2/2]
stormm::energy::TileManager::TileManager |
( |
const TileManager & | original | ) |
|
The default copy and move constructors as well as assignment operators are all valid.
- Parameters
-
original | The original object to copy or move |
other | Another object to fulfill the right hand side of the assignment operation |
◆ data()
TilePlan stormm::energy::TileManager::data |
( |
HybridTargetLevel | tier = HybridTargetLevel::HOST | ) |
|
Get the abstract.
- Parameters
-
tier | Indicate whether to obtain pointers to data on the CPU host or GPU device |
◆ getReadAssignments()
std::vector< int > stormm::energy::TileManager::getReadAssignments |
( |
int | sending_atom_degeneracy, |
|
|
int | recving_atom_degeneracy ) const |
Get the list of reading assignments (for inspection) pertaining to given degeneracies in the sending (tile X-axis) and receiving (tile Y-axis) atoms.
- Parameters
-
sending_atom_degeneracy | Base-2 logarithm of degeneracy in the sending atom batch |
recving_atom_degeneracy | Base-2 logarithm of degeneracy in the receiving atom batch |
◆ getSendingAtomLayout()
std::vector< int > stormm::energy::TileManager::getSendingAtomLayout |
( |
const int | sending_atom_degeneracy | ) |
const |
Get the layout of sending atoms for a given degeneracy. This is for convenience in testing or prototyping new methods with the tile scheme.
- Parameters
-
sending_atom_degeneracy | Base-2 logarithm of degeneracy in the sending atom batch |
The documentation for this class was generated from the following files: