![]() |
ATLAS Offline Software
|
Functions | |
template<size_t ISA_WIDTH> | |
constexpr size_t | alignmentForArray () |
In the following ISA_WIDTH is the ISA width in bits e.g 128 for SSE 256 for AVX2 etc For the cases of interest/tested doing 4 simd vectors at a time seemed best. More... | |
template<size_t ISA_WIDTH, typename T > | |
constexpr size_t | strideOfNumSIMDVec (size_t NumSIMDVec) |
returns the STRIDE in units of elements covered by NumSIMDVec simd vectors of type T for the specific ISA For example for a 256 bit, a SIMD vector is 8 floats So 4 simd vectors correspond to 32 elements. More... | |
template<size_t STRIDE> | |
constexpr int | numPadded (const int n) |
Given a number n returns a new n >= n that is padded to the required STRIDE. More... | |
template<size_t ISA_WIDTH, typename T > | |
ATH_ALWAYS_INLINE T | vFindMinimum (const T *distancesIn, int n) |
Find the minimum element in the array of distances processing four simd vectors at a time. More... | |
template<size_t ISA_WIDTH, typename T > | |
ATH_ALWAYS_INLINE int | vIdxOfValue (const T value, const T *distancesIn, int n) |
Find the index of an element in the array of distances processing four simd vectors at a time. More... | |
template<int ISA_WIDTH, typename T > | |
ATH_ALWAYS_INLINE int | vIdxOfMin (const T *distancesIn, int n) |
Find the index of the minimum in the array of distances. More... | |
|
constexpr |
In the following ISA_WIDTH is the ISA width in bits e.g 128 for SSE 256 for AVX2 etc For the cases of interest/tested doing 4 simd vectors at a time seemed best.
Alignment needed for arrays of elements when using an ISA of specific width e.g 32 for AVX2 16 for SSE4 etc
Definition at line 68 of file GsfFindIndexOfMinimum.h.
|
constexpr |
Given a number n returns a new n >= n that is padded to the required STRIDE.
Definition at line 86 of file GsfFindIndexOfMinimum.h.
|
constexpr |
returns the STRIDE in units of elements covered by NumSIMDVec simd vectors of type T for the specific ISA For example for a 256 bit, a SIMD vector is 8 floats So 4 simd vectors correspond to 32 elements.
Definition at line 78 of file GsfFindIndexOfMinimum.h.
ATH_ALWAYS_INLINE T vAlgs::vFindMinimum | ( | const T * | distancesIn, |
int | n | ||
) |
Find the minimum element in the array of distances processing four simd vectors at a time.
Definition at line 99 of file GsfFindIndexOfMinimum.h.
ATH_ALWAYS_INLINE int vAlgs::vIdxOfMin | ( | const T * | distancesIn, |
int | n | ||
) |
Find the index of the minimum in the array of distances.
Inputs are a ptr to the data and the number of elements to examine. The input needs to be properly padded (see numpadded method)
Definition at line 205 of file GsfFindIndexOfMinimum.h.
ATH_ALWAYS_INLINE int vAlgs::vIdxOfValue | ( | const T | value, |
const T * | distancesIn, | ||
int | n | ||
) |
Find the index of an element in the array of distances processing four simd vectors at a time.
Returns -1 if the element is not found.
Definition at line 154 of file GsfFindIndexOfMinimum.h.