Peano
Loading...
Searching...
No Matches
Architectures.py
Go to the documentation of this file.
1# This file is part of the ExaHyPE2 project. For conditions of distribution and
2# use, please see the copyright notice at www.peano-framework.org
3from enum import IntEnum
4
5
7 class Alignment(IntEnum):
8 noarch = 16
9 wsm = 16
10 snb = 32
11 hsw = 32
12 knc = 64
13 knl = 64
14 skx = 64
15
16 class SimdWidth(IntEnum):
17 noarch = 1
18 wsm = 2
19 snb = 4
20 hsw = 4
21 knc = 8
22 knl = 8
23 skx = 8
24
25 @staticmethod
26 def get_alignment(architecture: str) -> int:
27 return Architectures.Alignment[architecture].value
28
29 @staticmethod
30 def get_simd_width(architecture: str) -> int:
31 return Architectures.SimdWidth[architecture].value
32
33 @staticmethod
34 def get_pad_size(architecture: str, size_without_padding: int) -> int:
35 return (
36 Architectures.get_size_with_padding(architecture, size_without_padding)
37 - size_without_padding
38 )
39
40 @staticmethod
41 def get_size_with_padding(architecture: str, size_without_padding: int) -> int:
42 return Architectures.get_simd_width(architecture) * int(
43 size_without_padding
44 + (Architectures.get_simd_width(architecture) - 1)
45 / Architectures.get_simd_width(architecture)
46 )
int get_size_with_padding(str architecture, int size_without_padding)
int get_pad_size(str architecture, int size_without_padding)