AutoPas  3.0.0
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | List of all members
autopas::options::TraversalOption Class Reference

Class representing the traversal choices. More...

#include <TraversalOption.h>

Inheritance diagram for autopas::options::TraversalOption:
Inheritance graph
[legend]
Collaboration diagram for autopas::options::TraversalOption:
Collaboration graph
[legend]

Public Types

enum  Value {
  ds_sequential , lc_c01 , lc_c01_combined_SoA , lc_c04 ,
  lc_c04_HCP , lc_c04_combined_SoA , lc_c08 , lc_c18 ,
  lc_sliced , lc_sliced_balanced , lc_sliced_c02 , ot_c01 ,
  ot_c18 , vcl_c01_balanced , vcl_c06 , vcl_cluster_iteration ,
  vcl_sliced , vcl_sliced_balanced , vcl_sliced_c02 , vl_list_iteration ,
  vlc_c01 , vlc_c18 , vlc_c08 , vlc_sliced ,
  vlc_sliced_balanced , vlc_sliced_c02 , vlp_c01 , vlp_c18 ,
  vlp_sliced , vlp_sliced_balanced , vlp_sliced_c02 , vlp_c08 ,
  vvl_as_built
}
 Possible choices for the cell traversal. More...
 

Public Member Functions

 TraversalOption ()=default
 Constructor.
 
constexpr TraversalOption (Value option)
 Constructor from value.
 
constexpr operator Value () const
 Cast to value.
 
- Public Member Functions inherited from autopas::options::Option< TraversalOption >
 operator bool ()=delete
 Prevents cast to bool by deleting the conversion operator.
 
std::string to_string (bool fixedLength=false) const
 Converts an Option object to its respective string representation.
 

Static Public Member Functions

static std::set< TraversalOptiongetDiscouragedOptions ()
 Set of options that are very unlikely to be interesting.
 
static std::set< TraversalOptiongetAllPairwiseOptions ()
 Set of options that apply for pairwise interactions.
 
static std::set< TraversalOptiongetAllTriwiseOptions ()
 Set of options that apply for triwise interactions.
 
static std::set< TraversalOptiongetMostPairwiseOptions ()
 Set of all pairwise traversals without discouraged options.
 
static std::set< TraversalOptiongetMostTriwiseOptions ()
 Set of all triwise traversals without discouraged options.
 
static std::set< TraversalOptiongetAllOptionsOf (const autopas::InteractionTypeOption &interactionType)
 Set of all options specific to an interaction type.
 
static std::map< TraversalOption, std::string > getOptionNames ()
 Provides a way to iterate over the possible choices of TraversalOption.
 
- Static Public Member Functions inherited from autopas::options::Option< TraversalOption >
static std::set< TraversalOptiongetAllOptions ()
 Provides a way to iterate over the possible options.
 
static std::set< TraversalOptiongetMostOptions ()
 Provides a way to iterate over the possible options minus those that are very unlikely to be on interest.
 
static size_t maxStringLength ()
 Returns the number of characters in the string representation of the longest option.
 
static OutputContainer parseOptions (const std::string &optionsString)
 Converts a string of options to a set of enums.
 
static TraversalOption parseOptionExact (const std::string &optionString)
 Converts a string to an enum.
 

Detailed Description

Class representing the traversal choices.

Member Enumeration Documentation

◆ Value

Possible choices for the cell traversal.

Traversals marked with '+' can be used for both pairwise and triwise interactions. Try to maintain lexicographic ordering.

Enumerator
ds_sequential 
lc_c01 
  • LCC01Traversal : Every cell interacts with all neighbors. Is not compatible with Newton3 thus embarrassingly parallel. Good load balancing and no overhead.
lc_c01_combined_SoA 

LCC01CombinedSoATraversal : Same as LCC01Traversal but SoAs are combined into a circular buffer and the domain is traversed line-wise.

lc_c04 

LCC04Traversal : Four-way domain coloring using plus-shaped clusters of cells that are processed with the c08 base-step.

Less scheduling overhead than LCC08Traversal because of fewer barriers but more coarse-grained.

lc_c04_HCP 

LCC04HCPTraversal : Same as LCC04Traversal but with only one block shape.

lc_c04_combined_SoA 

LCC04CombinedSoATraversal : Combination of LCC08Traversal and the combined SoA variant of LCC01Traversal.

Stripe wise processing of the domain and combination of base plate of the c08 base-steps.

lc_c08 

LCC08Traversal : More compact form of LCC18Traversal.

Eight-way domain coloring in minimally small interaction blocks. High degree of parallelism and good load balancing due to fine granularity.

lc_c18 

LCC18Traversal : More compact form of LCC01Traversal supporting Newton3 by only accessing forward neighbors.

lc_sliced 

LCSlicedTraversal : 1D equidistant slicing of the domain with one slice per thread.

One lock per slice interface. Uses c08 base-step per cell. Minimal scheduling overhead at the cost of no load balancing at all.

lc_sliced_balanced 

LCSlicedBalancedTraversal : Same as lc_sliced but tries to balance slice thickness according to a given LoadEstimatorOption.

lc_sliced_c02 

LCSlicedC02Traversal : 1D slicing with as many slices of minimal thickness as possible.

No locks but two way coloring of slices.

ot_c01 

OTC01Traversal : Simple DFS traversal without newton 3 optimization.

ot_c18 

OTC18Traversal : DFS traversal with newton 3 optimization that checks whether a neighbor has already been processed via ID comparison.

vcl_c01_balanced 

VCLC01BalancedTraversal : Assign a fixed set of towers to each thread balanced by number of contained clusters.

Does not support Newton3.

vcl_c06 

VCLC06Traversal : Six-way coloring of the 2D ClusterTower grid in the c18 base step style.

Rather coarse but dynamically balanced.

vcl_cluster_iteration 

VCLClusterIterationTraversal : Dynamically schedule ClusterTower to threads.

Does not support Newton3.

vcl_sliced 

VCLSlicedTraversal : Equivalent to lc_sliced with slicing applied to the tower grid.

vcl_sliced_balanced 

VCLSlicedBalancedTraversal : Same as vcl_sliced but tries to balance slice thickness according to a given LoadEstimatorOption.

vcl_sliced_c02 

VCLSlicedC02Traversal : 1D slicing with as many slices of minimal thickness as possible.

No locks but two way coloring of slices.

vl_list_iteration 

VLListIterationTraversal : Distribute processing of neighbor lists dynamically to threads.

Does not support Newton3.

vlc_c01 

VLCC01Traversal : Equivalent to LCC01Traversal.

Schedules all neighbor lists of one cell at once. Does not support Newton3.

vlc_c18 

VLCC18Traversal : Equivalent to LCC18Traversal.

Neighbor lists contain only forward neighbors.

vlc_c08 

VLCC08Traversal : Equivalent to LCC08Traversal.

Base cell contains all neighbor lists of the base step.

vlc_sliced 

VLCSlicedTraversal : Equivalent to LCSlicedTraversal but with a c18 base-step.

vlc_sliced_balanced 

VLCSlicedBalancedTraversal : Equivalent to LCSlicedBalancedTraversal but with a c18 base-step.

Tries to balance slice thickness according to a given LoadEstimatorOption.

vlc_sliced_c02 

VLCSlicedC02Traversal : Equivalent to LCSlicedC02Traversal.

1D slicing with as many slices of minimal thickness as possible. No locks but two-way coloring of slices.

vlp_c01 

VLPC01Traversal : Equivalent to LCC01Traversal.

Schedules all neighbor lists of one cell at once. Does not support Newton3.

vlp_c18 

VLPC18Traversal : Equivalent to LCC18Traversal.

Neighbor lists contain only forward neighbors.

vlp_sliced 

VLPSlicedTraversal : Equivalent to LCSlicedTraversal.

vlp_sliced_balanced 

VLPSlicedBalancedTraversal : Equivalent to LCSlicedBalancedTraversal.

Tries to balance slice thickness according to a given LoadEstimatorOption.

vlp_sliced_c02 

VLPSlicedC02Traversal : Equivalent to LCSlicedC02Traversal.

1D slicing with as many slices of minimal thickness as possible. No locks but two-way coloring of slices.

vlp_c08 

VLPCellPairC08Traversal : based on LCC08Traversal.

The pairwise neighbor list allows access to the relevant pairs of interacting particles for each pair of cells, including the diagonal non-base pair of cells in the standard c08 step.

vvl_as_built 

VVLAsBuildTraversal : Track which thread built what neighbor list and schedule them the same way for the pairwise iteration.

Provides some kind of load balancing if the force calculation is cheap but is sensitive to hardware fluctuations.

Constructor & Destructor Documentation

◆ TraversalOption()

constexpr autopas::options::TraversalOption::TraversalOption ( Value  option)
inlineconstexpr

Constructor from value.

Parameters
option

Member Function Documentation

◆ getAllOptionsOf()

static std::set< TraversalOption > autopas::options::TraversalOption::getAllOptionsOf ( const autopas::InteractionTypeOption &  interactionType)
inlinestatic

Set of all options specific to an interaction type.

Parameters
interactionType
Returns

◆ getAllPairwiseOptions()

static std::set< TraversalOption > autopas::options::TraversalOption::getAllPairwiseOptions ( )
inlinestatic

Set of options that apply for pairwise interactions.

Returns

◆ getAllTriwiseOptions()

static std::set< TraversalOption > autopas::options::TraversalOption::getAllTriwiseOptions ( )
inlinestatic

Set of options that apply for triwise interactions.

Returns

◆ getDiscouragedOptions()

static std::set< TraversalOption > autopas::options::TraversalOption::getDiscouragedOptions ( )
inlinestatic

Set of options that are very unlikely to be interesting.

Returns

◆ getMostPairwiseOptions()

static std::set< TraversalOption > autopas::options::TraversalOption::getMostPairwiseOptions ( )
inlinestatic

Set of all pairwise traversals without discouraged options.

Returns

◆ getMostTriwiseOptions()

static std::set< TraversalOption > autopas::options::TraversalOption::getMostTriwiseOptions ( )
inlinestatic

Set of all triwise traversals without discouraged options.

Returns

◆ getOptionNames()

static std::map< TraversalOption, std::string > autopas::options::TraversalOption::getOptionNames ( )
inlinestatic

Provides a way to iterate over the possible choices of TraversalOption.

Returns
map option -> string representation

◆ operator Value()

constexpr autopas::options::TraversalOption::operator Value ( ) const
inlineconstexpr

Cast to value.

Returns

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