|
| Functor (double cutoff) |
| Constructor.
|
|
virtual void | initTraversal () |
| This function is called at the start of each traversal.
|
|
virtual void | endTraversal (bool newton3) |
| This function is called at the end of each traversal.
|
|
template<class ParticleCell > |
void | SoALoader (ParticleCell &cell, SoA< SoAArraysType > &soa, size_t offset, bool skipSoAResize) |
| Copies the AoS data of the given cell in the given soa.
|
|
template<typename ParticleCell > |
void | SoAExtractor (ParticleCell &cell, SoA< SoAArraysType > &soa, size_t offset) |
| Copies the data stored in the soa back into the cell.
|
|
virtual bool | allowsNewton3 ()=0 |
| Specifies whether the functor is capable of Newton3-like functors.
|
|
virtual bool | allowsNonNewton3 ()=0 |
| Specifies whether the functor is capable of non-Newton3-like functors.
|
|
virtual bool | isRelevantForTuning ()=0 |
| Specifies whether the functor should be considered for the auto-tuning process.
|
|
virtual std::string | getName ()=0 |
| Returns name of functor.
|
|
double | getCutoff () const |
| Getter for the functor's cutoff.
|
|
virtual size_t | getNumFLOPs () const |
| Get the number of FLOPs.
|
|
virtual double | getHitRate () const |
| Get the hit rate.
|
|
template<class Particle_T, class CRTP_T>
class autopas::Functor< Particle_T, CRTP_T >
Functor base class.
Both an array of structure (AoS) and a structure of array (SoA) are supported to be used with functors. Newton3: A functor does not have to implement both a newton3 and a non-newton3 version. Instead you can specify, which version you use by overriding allowsNonNewton3 resp. allowsNewton3
- Template Parameters
-
Particle_T | the type of Particle |
CRTP_T | the actual type of the functor |
template<class Particle_T , class CRTP_T >
Specifies whether the functor is capable of Newton3-like functors.
If the functor provides an interface to soa or aos functions that utilize Newton's third law of motion (actio = reactio) to reduce the computational complexity this function should return true. If this is not the case this function should return false.
- Returns
- true if and only if this functor provides an interface to Newton3-like functions.
Implemented in mdLib::AxilrodTellerFunctor< Particle_T, useMixing, useNewton3, calculateGlobals, countFLOPs >, mdLib::LJFunctor< Particle_T, applyShift, useMixing, useNewton3, calculateGlobals, countFLOPs, relevantForTuning >, mdLib::LJFunctorAVX< Particle_T, applyShift, useMixing, useNewton3, calculateGlobals, countFLOPs, relevantForTuning >, mdLib::LJFunctorSVE< Particle_T, applyShift, useMixing, useNewton3, calculateGlobals, countFLOPs, relevantForTuning >, mdLib::LJMultisiteFunctor< Particle_T, applyShift, useMixing, useNewton3, calculateGlobals, countFLOPs, relevantForTuning >, sphLib::SPHCalcDensityFunctor< Particle_T >, sphLib::SPHCalcHydroForceFunctor< Particle_T >, autopas::internal::AsBuildPairGeneratorFunctor< Particle_T, callCheckInstead >, autopas::VerletListHelpers< Particle_T >::VerletListGeneratorFunctor, autopas::VerletListHelpers< Particle_T >::VerletListValidityCheckerFunctor, autopas::VLCAllCellsGeneratorFunctor< Particle_T, TraversalOptionEnum >, autopas::VLCCellPairGeneratorFunctor< Particle_T >, and EmptyPairwiseFunctor< Particle_T >.
template<class Particle_T , class CRTP_T >
Specifies whether the functor is capable of non-Newton3-like functors.
If the functor provides an interface to soa or aos functions that do not utilize Newton's third law of motion (actio = reactio) this function should return true. If this is not the case this function should return false.
- Returns
- true if and only if this functor provides an interface to functions that do not utilize Newton3.
Implemented in mdLib::AxilrodTellerFunctor< Particle_T, useMixing, useNewton3, calculateGlobals, countFLOPs >, mdLib::LJFunctor< Particle_T, applyShift, useMixing, useNewton3, calculateGlobals, countFLOPs, relevantForTuning >, mdLib::LJFunctorAVX< Particle_T, applyShift, useMixing, useNewton3, calculateGlobals, countFLOPs, relevantForTuning >, mdLib::LJFunctorSVE< Particle_T, applyShift, useMixing, useNewton3, calculateGlobals, countFLOPs, relevantForTuning >, mdLib::LJMultisiteFunctor< Particle_T, applyShift, useMixing, useNewton3, calculateGlobals, countFLOPs, relevantForTuning >, sphLib::SPHCalcDensityFunctor< Particle_T >, sphLib::SPHCalcHydroForceFunctor< Particle_T >, autopas::internal::AsBuildPairGeneratorFunctor< Particle_T, callCheckInstead >, autopas::VerletListHelpers< Particle_T >::VerletListGeneratorFunctor, autopas::VerletListHelpers< Particle_T >::VerletListValidityCheckerFunctor, autopas::VLCAllCellsGeneratorFunctor< Particle_T, TraversalOptionEnum >, autopas::VLCCellPairGeneratorFunctor< Particle_T >, and EmptyPairwiseFunctor< Particle_T >.
template<class Particle_T , class CRTP_T >
Get the hit rate.
Implementation required if FLOPLogger used.
If derived class provides no implementation, the FLOPLogger interprets the default NaN output as invalid and leaves "Not Implemented" in the log.
- Returns
- (number of kernel calls) / (number of distance calculations)
Reimplemented in mdLib::AxilrodTellerFunctor< Particle_T, useMixing, useNewton3, calculateGlobals, countFLOPs >, and mdLib::LJFunctor< Particle_T, applyShift, useMixing, useNewton3, calculateGlobals, countFLOPs, relevantForTuning >.
template<class Particle_T , class CRTP_T >
Get the number of FLOPs.
Implementation required if FLOPLogger used.
If derived class provides no implementation, the FLOPLogger interprets the default numeric_limits<size_t>::max() output as invalid and leaves "Not Implemented" the log.
- Returns
- number of FLOPs
Reimplemented in mdLib::AxilrodTellerFunctor< Particle_T, useMixing, useNewton3, calculateGlobals, countFLOPs >, and mdLib::LJFunctor< Particle_T, applyShift, useMixing, useNewton3, calculateGlobals, countFLOPs, relevantForTuning >.