STORMM Source Documentation
Loading...
Searching...
No Matches
stormm::energy::TileManager Class Reference

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>

Public Member Functions

 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)
 
TileManageroperator= (const TileManager &original)
 
TileManageroperator= (TileManager &&original)
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ 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_parametersSpecifications of for allocating block-specific storage arrays
max_deg_inMaximum 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
originalThe original object to copy or move
otherAnother object to fulfill the right hand side of the assignment operation

Member Function Documentation

◆ data()

TilePlan stormm::energy::TileManager::data ( HybridTargetLevel tier = HybridTargetLevel::HOST)

Get the abstract.

Parameters
tierIndicate 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_degeneracyBase-2 logarithm of degeneracy in the sending atom batch
recving_atom_degeneracyBase-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_degeneracyBase-2 logarithm of degeneracy in the sending atom batch

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