AutoPas  3.0.0
Loading...
Searching...
No Matches
Classes | Typedefs | Variables
LJFunctorHWY.h File Reference
#include <hwy/highway.h>
#include <optional>
#include "ParticlePropertiesLibrary.h"
#include "autopas/baseFunctors/PairwiseFunctor.h"
#include "autopas/options/VectorizationPatternOption.h"
#include "autopas/particles/OwnershipState.h"
#include "autopas/utils/AlignedAllocator.h"
#include "autopas/utils/ArrayMath.h"
#include "autopas/utils/WrapOpenMP.h"
Include dependency graph for LJFunctorHWY.h:

Go to the source code of this file.

Classes

class  mdLib::LJFunctorHWY< Particle_T, applyShift, useMixing, useNewton3, calculateGlobals, countFLOPs, relevantForTuning >
 A functor to handle lennard-jones interactions between two particles (molecules) This functor uses the SIMD abstraction library Google Highway to provide architecture independent vectorization. More...
 

Typedefs

using mdLib::VectorDouble = decltype(highway::Zero(tag_double))
 Type for a Double vector register.
 
using mdLib::VectorLong = decltype(highway::Zero(tag_long))
 Type for a Long vector register.
 
using mdLib::MaskDouble = decltype(highway::FirstN(tag_double, 1))
 Type for a Double Mask.
 
using mdLib::MaskLong = decltype(highway::FirstN(tag_long, 2))
 Type for a Long Mask.
 
using mdLib::VectorizationPattern = autopas::VectorizationPatternOption::Value
 Vectorization Pattern Type.
 

Variables

constexpr highway::ScalableTag< double > mdLib::tag_double
 Highway tag for full double register.
 
constexpr highway::ScalableTag< int64_t > mdLib::tag_long
 Highway tag for full long register.
 
HWY_LANES_CONSTEXPR size_t mdLib::_vecLengthDouble {highway::Lanes(tag_double)}
 Number of double values in a full register.
 
constexpr size_t mdLib::_maxVecLengthDouble {highway::MaxLanes(tag_double)}
 Upper bound on the number of double values in a full register.
 
constexpr highway::Half< highway::DFromV< VectorDouble > > mdLib::tag_double_half
 Highway tag for a half-filled double register.
 

Detailed Description

Date
27.03.2024
Author
Luis Gall

Variable Documentation

◆ _maxVecLengthDouble

constexpr size_t mdLib::_maxVecLengthDouble {highway::MaxLanes(tag_double)}
constexpr

Upper bound on the number of double values in a full register.

Always constexpr.

◆ _vecLengthDouble

HWY_LANES_CONSTEXPR size_t mdLib::_vecLengthDouble {highway::Lanes(tag_double)}
inline

Number of double values in a full register.

Not constexpr on all architectures, so cannot be assumed, but, when possible (e.g. on x86), we provide this constexpr so compilers may make optimizations.