This traversal splits the domain into slices along the longer dimension among x and y.
More...
|
| | VCLSlicedBalancedTraversal (const std::array< unsigned long, 3 > &dims, PairwiseFunctor *pairwiseFunctor, double interactionLength, const std::array< double, 3 > &cellLength, size_t clusterSize, DataLayoutOption dataLayout, bool useNewton3) |
| | Constructor of the VCLSlicedBalancedTraversal.
|
| |
| TraversalOption | getTraversalType () const override |
| | Return a enum representing the name of the traversal class.
|
| |
| void | loadDataLayout () override |
| | Load Data Layouts required for this Traversal if cells have been set through setCellsToTraverse().
|
| |
| void | initTraversal () override |
| | Load Data Layouts and sets up slice thicknesses.
|
| |
| void | endTraversal () override |
| | Write Data to AoS if cells have been set through setCellsToTraverse().
|
| |
| void | traverseParticles () override |
| | Traverse the particles by pairs, triplets etc.
|
| |
| void | setSortingThreshold (size_t sortingThreshold) override |
| | Set the sorting-threshold for traversals that use the CellFunctor If the sum of the number of particles in two cells is greater or equal to that value, the CellFunctor creates a sorted view of the particles to avoid unnecessary distance checks.
|
| |
| | SlicedBalancedBasedTraversal (const std::array< unsigned long, 3 > &dims, PairwiseFunctor *functor, const double interactionLength, const std::array< double, 3 > &cellLength, DataLayoutOption dataLayout, bool useNewton3, bool spaciallyForward) |
| | Constructor of the balanced sliced traversal.
|
| |
| void | initSliceThickness (unsigned long minSliceThickness) override |
| | Calculates slice thickness according to estimates loads.
|
| |
| | SlicedLockBasedTraversal (const std::array< unsigned long, 3 > &dims, Functor *functor, const double interactionLength, const std::array< double, 3 > &cellLength, DataLayoutOption dataLayout, bool useNewton3, bool spaciallyForward) |
| | Constructor of the sliced traversal.
|
| |
| | SlicedBasedTraversal (const std::array< unsigned long, 3 > &dims, Functor *functor, const double interactionLength, const std::array< double, 3 > &cellLength, DataLayoutOption dataLayout, bool useNewton3, bool spaciallyForward) |
| | Constructor of the sliced traversal.
|
| |
| bool | isApplicable () const override |
| | Checks if the traversal is applicable to the current state of the domain.
|
| |
| virtual void | initSliceThickness (unsigned long minSliceThickness) |
| | Sets up the slice thicknesses to create as many slices as possible while respecting minSliceThickness.
|
| |
| void | initTraversal () override |
| | Load Data Layouts and sets up slice thicknesses.
|
| |
| void | endTraversal () override |
| | Write Data to AoS if cells have been set through setCellsToTraverse().
|
| |
| | CellTraversal (const std::array< unsigned long, 3 > &dims) |
| | Constructor of CellTraversal.
|
| |
|
virtual | ~CellTraversal ()=default |
| | Destructor of CellTraversal.
|
| |
| virtual void | setCellsToTraverse (std::vector< ParticleCell > &cells) |
| | Sets the cells to iterate over.
|
| |
| virtual void | setSortingThreshold (size_t sortingThreshold)=0 |
| | Set the sorting-threshold for traversals that use the CellFunctor If the sum of the number of particles in two cells is greater or equal to that value, the CellFunctor creates a sorted view of the particles to avoid unnecessary distance checks.
|
| |
|
virtual | ~TraversalInterface ()=default |
| | Destructor of TraversalInterface.
|
| |
| | TraversalInterface (DataLayoutOption dataLayout, bool useNewton3) |
| | Constructor of the TraversalInterface.
|
| |
| virtual TraversalOption | getTraversalType () const =0 |
| | Return a enum representing the name of the traversal class.
|
| |
| virtual bool | isApplicable () const =0 |
| | Checks if the traversal is applicable to the current state of the domain.
|
| |
| virtual void | initTraversal ()=0 |
| | Initializes the traversal.
|
| |
| virtual void | traverseParticles ()=0 |
| | Traverse the particles by pairs, triplets etc.
|
| |
| virtual void | endTraversal ()=0 |
| | Finalizes the traversal.
|
| |
| bool | getUseNewton3 () const |
| | Return whether the traversal uses newton 3.
|
| |
| DataLayoutOption | getDataLayout () const |
| | Return the data layout option.
|
| |
| void | setLoadEstimator (EstimatorFunction loadEstimator) |
| | Setter for load estimation algorithm.
|
| |
|
virtual | ~VCLTraversalInterface ()=default |
| | virtual default destructor.
|
| |
| virtual void | setClusterLists (VerletClusterLists< ParticleCell::ParticleType > &verletClusterLists) |
| | Sets the cluster list for the traversal to iterate over.
|
| |
| virtual void | setTowers (std::vector< internal::ClusterTower< ParticleCell::ParticleType > > &towers) |
| | Sets the towers of the cluster list for the traversal to iterate over.
|
| |
| virtual bool | needsStaticClusterThreadPartition () |
| | Returns whether this traversal needs the static cluster thread partition of the cluster list.
|
| |
|
|
using | EstimatorFunction = std::function< unsigned long(const std::array< unsigned long, 3 > &, const std::array< unsigned long, 3 > &, const std::array< unsigned long, 3 > &)> |
| | Type signature for load estimators.
|
| |
| template<typename LoopBody > |
| void | slicedTraversal (LoopBody &&loopBody) |
| | The main traversal of the sliced traversal.
|
| |
|
void | init () |
| | Resets the cell structure of the traversal.
|
| |
| virtual void | loadDataLayout () |
| | Load Data Layouts required for this Traversal if cells have been set through setCellsToTraverse().
|
| |
| void | reinitForVCL (const VerletClusterLists< typename ParticleCell::ParticleType > *vcl) |
| | Update cell information based on VerletClusterLists.
|
| |
|
bool | _dynamic = true |
| | whether to use static or dynamic scheduling.
|
| |
| std::array< unsigned long, 3 > | _overlap |
| | Overlap of interacting cells.
|
| |
|
std::array< int, 3 > | _dimsSortedByLength |
| | Store ids of dimensions (0, 1, 2 = x, y, z) sorted by in decreasing order of number of cells in that dimension.
|
| |
|
unsigned long | _overlapLongestAxis |
| | Overlap of interacting cells along the longest axis.
|
| |
|
std::vector< unsigned long > | _sliceThickness |
| | The number of cells per slice in the dimension that was sliced.
|
| |
|
bool | _spaciallyForward |
| | Whether the base step only covers neigboring cells tha are spacially forward (for example c08).
|
| |
|
std::array< double, 3 > | _cellLength |
| | Cell length in CellBlock3D.
|
| |
| std::array< unsigned long, 3 > | _cellsPerDimension |
| | The dimensions of the cellblock.
|
| |
|
std::vector< ParticleCell > * | _cells |
| | The cells to traverse.
|
| |
|
DataLayoutOption | _dataLayout |
| | The datalayout used by this traversal.
|
| |
|
bool | _useNewton3 |
| | If this traversal makes use of newton3.
|
| |
| EstimatorFunction | _loadEstimator |
| | Algorithm to use for estimating load.
|
| |
| VerletClusterLists< ParticleCell::ParticleType > * | _verletClusterLists |
| | The cluster list to iterate over.
|
| |
| std::vector< internal::ClusterTower< ParticleCell::ParticleType > > * | _towers |
| | The towers of the cluster list to iterate over.
|
| |
This traversal splits the domain into slices along the longer dimension among x and y.
The slices are processed in parallel by multiple threads. Race conditions are prevented, by placing locks on the starting layers of each slice.
- Template Parameters
-