STORMM Source Documentation
|
A work unit to describe the manner in which groups of atoms in each structure of a synthesis come together to contribute to a single result. Reduction work units serve one and only one system apiece. The maximum size of these work units can be specified when they are created, in a manner analogous to valence or non-bonded work units, but is not limited by space in the GPU L1 cache so that, for practical optimizations, gather and scatter operations can be combined into all-reduce operations with a single kernel launch. More...
#include <reduction_workunit.h>
Public Member Functions | |
ReductionWorkUnit (int atom_start_in, int atom_end_in, int result_index_in, int dependency_start_in, int dependency_end_in, int system_index_in) | |
The constructor takes arguments for all members. | |
int | getAtomStart () const |
Get the atom starting index. | |
int | getAtomEnd () const |
Get the upper limit of atoms in this work unit. | |
int | getResultIndex () const |
Get the index of whatever result array where this work unit will put its result. | |
int | getDependencyStart () const |
Get the start of dependencies in the result array which pertain to the same system as this reduction work unit. All reduction work units serving the same system will contribute their gathering results to contiguous elements of whatever result arrays. | |
int | getDependencyEnd () const |
Get the upper limit of dependencies in the result array which pertain to the same system as this reduction work unit. | |
int | getSystemIndex () const |
Get the system to which this reduction work unit pertains (each reduction work unit will serve one and only one system in a synthesis) | |
std::vector< int > | getAbstract () const |
Produce an abstract containing all of the information, wrapped in a series of eight integers. See the enum class RdwuAbstractMap to understand which element represents which value. | |
ReductionWorkUnit (const ReductionWorkUnit &original)=default | |
Take all copy and move constructors and assignment operators. | |
ReductionWorkUnit (ReductionWorkUnit &&original)=default | |
ReductionWorkUnit & | operator= (const ReductionWorkUnit &other)=default |
ReductionWorkUnit & | operator= (ReductionWorkUnit &&other)=default |
A work unit to describe the manner in which groups of atoms in each structure of a synthesis come together to contribute to a single result. Reduction work units serve one and only one system apiece. The maximum size of these work units can be specified when they are created, in a manner analogous to valence or non-bonded work units, but is not limited by space in the GPU L1 cache so that, for practical optimizations, gather and scatter operations can be combined into all-reduce operations with a single kernel launch.