Class representing the traversal choices. More...
#include <TraversalOption.h>
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. | |
![]() | |
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< TraversalOption > | getDiscouragedOptions () |
Set of options that are very unlikely to be interesting. | |
static std::set< TraversalOption > | getAllPairwiseOptions () |
Set of options that apply for pairwise interactions. | |
static std::set< TraversalOption > | getAllTriwiseOptions () |
Set of options that apply for triwise interactions. | |
static std::set< TraversalOption > | getMostPairwiseOptions () |
Set of all pairwise traversals without discouraged options. | |
static std::set< TraversalOption > | getMostTriwiseOptions () |
Set of all triwise traversals without discouraged options. | |
static std::set< TraversalOption > | getAllOptionsOf (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 std::set< TraversalOption > | getAllOptions () |
Provides a way to iterate over the possible options. | |
static std::set< TraversalOption > | getMostOptions () |
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. | |
Class representing the traversal choices.
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 |
|
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. |
|
inlineconstexpr |
Constructor from value.
option |
|
inlinestatic |
Set of all options specific to an interaction type.
interactionType |
|
inlinestatic |
Set of options that apply for pairwise interactions.
|
inlinestatic |
Set of options that apply for triwise interactions.
|
inlinestatic |
Set of options that are very unlikely to be interesting.
|
inlinestatic |
Set of all pairwise traversals without discouraged options.
|
inlinestatic |
Set of all triwise traversals without discouraged options.
|
inlinestatic |
Provides a way to iterate over the possible choices of TraversalOption.
|
inlineconstexpr |
Cast to value.