OpenTwin 0.1
OpenTwin
 
Loading...
Searching...
No Matches
DimensionPadding.hpp
Go to the documentation of this file.
3
4template<class T>
6{
7 auto properties = SystemProperties::GetInstance();
8 int bitsPerByte = 8;
9 if (alignment == AVX512 && properties.CPUSupportsAVX512())
10 {
11 _alignment = AVX512;
12 // Sizeof gives number of bytes, alignments are given in bit
13 _lengthOfIntrinsicVector = static_cast<int>(AVX512) / (sizeof(T) * bitsPerByte);
14 _degreesOfFreedomPadded = static_cast<index_t>(_lengthOfIntrinsicVector) * static_cast<index_t>(ceilf(degreesOfFreedom / static_cast<float>(_lengthOfIntrinsicVector)));
15 _numberOfIntrinsicVectors = _degreesOfFreedomPadded / _lengthOfIntrinsicVector;
16
17 _numberOfPaddedEntries = static_cast<int>(_degreesOfFreedomPadded - degreesOfFreedom);
18 }
19 else if ((alignment == AVX2|| alignment == AVX512) && properties.CPUSupportsAVX2())
20 {
21 _alignment = AVX2;
22 // Sizeof gives number of bytes, alignments are given in bit
23 _lengthOfIntrinsicVector = static_cast<int>(AVX2) / (sizeof(T) * bitsPerByte);
24 _degreesOfFreedomPadded = static_cast<index_t>(_lengthOfIntrinsicVector) * static_cast<index_t>(ceilf(degreesOfFreedom / static_cast<float>(_lengthOfIntrinsicVector)));
25 _numberOfIntrinsicVectors = _degreesOfFreedomPadded / _lengthOfIntrinsicVector;
26
27 _numberOfPaddedEntries = static_cast<int>(_degreesOfFreedomPadded - degreesOfFreedom);
28 }
29 else //AVX or lower currently not supported (not planned to be)
30 {
31 _lengthOfIntrinsicVector = 1;
32 _degreesOfFreedomPadded = degreesOfFreedom;
33 _alignment = CacheLine64;
34 return;
35 }
36 _masks.reset(new IntrinsicMasks(_numberOfIntrinsicVectors, _lengthOfIntrinsicVector, _numberOfPaddedEntries));
37}
Alignment
Definition Allignments.h:3
@ AVX2
Definition Allignments.h:3
@ AVX512
Definition Allignments.h:3
@ CacheLine64
Definition Allignments.h:3
int64_t index_t
Definition SystemDependentDefines.h:13
DimensionPadding(Alignment alignment, index_t degreesOfFreedom)
Definition DimensionPadding.hpp:5
Definition IntrinsicMasks.h:6
static const SystemProperties & GetInstance()
Definition SystemProperties.h:28