STORMM Source Documentation
Loading...
Searching...
No Matches
stormm::stmath::ReductionWorkUnit Class Reference

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
 
ReductionWorkUnitoperator= (const ReductionWorkUnit &other)=default
 
ReductionWorkUnitoperator= (ReductionWorkUnit &&other)=default
 

Detailed Description

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.


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