Eigenvalue SoLvers for Petaflop-Applications (ELPA)
2020.05.001
|
Go to the documentation of this file.
8 #define ELPA_ENUM_ENTRY(name, value, ...) \
10 #define ELPA_ENUM_SUM(name, value, ...) +1
13 #define ELPA_FOR_ALL_MATRIX_LAYOUTS(X) \
14 X(COLUMN_MAJOR_ORDER, 1) \
21 #define ELPA_NUMBER_OF_MATRIX_LAYOUTS (0 ELPA_FOR_ALL_MATRIX_LAYOUTS(ELPA_ENUM_SUM))
24 #define ELPA_FOR_ALL_SOLVERS(X) \
25 X(ELPA_SOLVER_1STAGE, 1) \
26 X(ELPA_SOLVER_2STAGE, 2)
32 #define ELPA_NUMBER_OF_SOLVERS (0 ELPA_FOR_ALL_SOLVERS(ELPA_ENUM_SUM))
35 #define ELPA_FOR_ALL_2STAGE_REAL_KERNELS(X, ...) \
36 X(ELPA_2STAGE_REAL_GENERIC, 1, 1, __VA_ARGS__) \
37 X(ELPA_2STAGE_REAL_GENERIC_SIMPLE, 2, 1, __VA_ARGS__) \
38 X(ELPA_2STAGE_REAL_BGP, 3, 0, __VA_ARGS__) \
39 X(ELPA_2STAGE_REAL_BGQ, 4, 0, __VA_ARGS__) \
40 X(ELPA_2STAGE_REAL_SSE_ASSEMBLY, 5, 0, __VA_ARGS__) \
41 X(ELPA_2STAGE_REAL_SSE_BLOCK2, 6, 0, __VA_ARGS__) \
42 X(ELPA_2STAGE_REAL_SSE_BLOCK4, 7, 0, __VA_ARGS__) \
43 X(ELPA_2STAGE_REAL_SSE_BLOCK6, 8, 0, __VA_ARGS__) \
44 X(ELPA_2STAGE_REAL_AVX_BLOCK2, 9, 0, __VA_ARGS__) \
45 X(ELPA_2STAGE_REAL_AVX_BLOCK4, 10, 0, __VA_ARGS__) \
46 X(ELPA_2STAGE_REAL_AVX_BLOCK6, 11, 0, __VA_ARGS__) \
47 X(ELPA_2STAGE_REAL_AVX2_BLOCK2, 12, 0, __VA_ARGS__) \
48 X(ELPA_2STAGE_REAL_AVX2_BLOCK4, 13, 0, __VA_ARGS__) \
49 X(ELPA_2STAGE_REAL_AVX2_BLOCK6, 14, 0, __VA_ARGS__) \
50 X(ELPA_2STAGE_REAL_AVX512_BLOCK2, 15, 0, __VA_ARGS__) \
51 X(ELPA_2STAGE_REAL_AVX512_BLOCK4, 16, 0, __VA_ARGS__) \
52 X(ELPA_2STAGE_REAL_AVX512_BLOCK6, 17, 0, __VA_ARGS__) \
53 X(ELPA_2STAGE_REAL_GPU, 18, 0, __VA_ARGS__) \
54 X(ELPA_2STAGE_REAL_SPARC64_BLOCK2, 19, 0, __VA_ARGS__) \
55 X(ELPA_2STAGE_REAL_SPARC64_BLOCK4, 20, 0, __VA_ARGS__) \
56 X(ELPA_2STAGE_REAL_SPARC64_BLOCK6, 21, 0, __VA_ARGS__) \
57 X(ELPA_2STAGE_REAL_NEON_ARCH64_BLOCK2, 22, 0, __VA_ARGS__) \
58 X(ELPA_2STAGE_REAL_NEON_ARCH64_BLOCK4, 23, 0, __VA_ARGS__) \
59 X(ELPA_2STAGE_REAL_NEON_ARCH64_BLOCK6, 24, 0, __VA_ARGS__) \
60 X(ELPA_2STAGE_REAL_VSX_BLOCK2, 25, 0, __VA_ARGS__) \
61 X(ELPA_2STAGE_REAL_VSX_BLOCK4, 26, 0, __VA_ARGS__) \
62 X(ELPA_2STAGE_REAL_VSX_BLOCK6, 27, 0, __VA_ARGS__) \
63 X(ELPA_2STAGE_REAL_GENERIC_SIMPLE_BLOCK4, 28, 1, __VA_ARGS__) \
64 X(ELPA_2STAGE_REAL_GENERIC_SIMPLE_BLOCK6, 29, 1, __VA_ARGS__)
66 #define ELPA_FOR_ALL_2STAGE_REAL_KERNELS_AND_DEFAULT(X) \
67 ELPA_FOR_ALL_2STAGE_REAL_KERNELS(X) \
68 X(ELPA_2STAGE_REAL_INVALID, -1, choke me) \
69 X(ELPA_2STAGE_REAL_DEFAULT, 1, choke me)
76 #define ELPA_FOR_ALL_2STAGE_COMPLEX_KERNELS(X, ...) \
77 X(ELPA_2STAGE_COMPLEX_GENERIC, 1, 1, __VA_ARGS__) \
78 X(ELPA_2STAGE_COMPLEX_GENERIC_SIMPLE, 2, 1, __VA_ARGS__) \
79 X(ELPA_2STAGE_COMPLEX_BGP, 3, 0, __VA_ARGS__) \
80 X(ELPA_2STAGE_COMPLEX_BGQ, 4, 0, __VA_ARGS__) \
81 X(ELPA_2STAGE_COMPLEX_SSE_ASSEMBLY, 5, 0, __VA_ARGS__) \
82 X(ELPA_2STAGE_COMPLEX_SSE_BLOCK1, 6, 0, __VA_ARGS__) \
83 X(ELPA_2STAGE_COMPLEX_SSE_BLOCK2, 7, 0, __VA_ARGS__) \
84 X(ELPA_2STAGE_COMPLEX_AVX_BLOCK1, 8, 0, __VA_ARGS__) \
85 X(ELPA_2STAGE_COMPLEX_AVX_BLOCK2, 9, 0, __VA_ARGS__) \
86 X(ELPA_2STAGE_COMPLEX_AVX2_BLOCK1, 10, 0, __VA_ARGS__) \
87 X(ELPA_2STAGE_COMPLEX_AVX2_BLOCK2, 11, 0, __VA_ARGS__) \
88 X(ELPA_2STAGE_COMPLEX_AVX512_BLOCK1, 12, 0, __VA_ARGS__) \
89 X(ELPA_2STAGE_COMPLEX_AVX512_BLOCK2, 13, 0, __VA_ARGS__) \
90 X(ELPA_2STAGE_COMPLEX_GPU, 14, 0, __VA_ARGS__)
92 #define ELPA_FOR_ALL_2STAGE_COMPLEX_KERNELS_AND_DEFAULT(X) \
93 ELPA_FOR_ALL_2STAGE_COMPLEX_KERNELS(X) \
94 X(ELPA_2STAGE_COMPLEX_INVALID, -1, choke me) \
95 X(ELPA_2STAGE_COMPLEX_DEFAULT, 1, choke me)
104 #define ELPA_FOR_ALL_ERRORS(X) \
107 X(ELPA_ERROR_ENTRY_NOT_FOUND, -2) \
108 X(ELPA_ERROR_ENTRY_INVALID_VALUE, -3) \
109 X(ELPA_ERROR_ENTRY_ALREADY_SET, -4) \
110 X(ELPA_ERROR_ENTRY_NO_STRING_REPRESENTATION, -5) \
111 X(ELPA_ERROR_SETUP, -6) \
112 X(ELPA_ERROR_CRITICAL, -7) \
113 X(ELPA_ERROR_API_VERSION, -8) \
114 X(ELPA_ERROR_AUTOTUNE_API_VERSION, -9) \
115 X(ELPA_ERROR_AUTOTUNE_OBJECT_CHANGED, -10) \
116 X(ELPA_ERROR_ENTRY_READONLY, -11) \
117 X(ELPA_ERROR_CANNOT_OPEN_FILE, -12)
128 #define ELPA_FOR_ALL_AUTOTUNE_LEVELS(X, ...) \
129 X(ELPA_AUTOTUNE_NOT_TUNABLE, 0) \
130 X(ELPA_AUTOTUNE_FAST, 1) \
131 X(ELPA_AUTOTUNE_MEDIUM, 2) \
132 X(ELPA_AUTOTUNE_EXTENSIVE, 3)
139 #define ELPA_FOR_ALL_AUTOTUNE_DOMAINS(X, ...) \
140 X(ELPA_AUTOTUNE_DOMAIN_REAL, 1) \
141 X(ELPA_AUTOTUNE_DOMAIN_COMPLEX, 2) \
142 X(ELPA_AUTOTUNE_DOMAIN_ANY, 3)
#define ELPA_FOR_ALL_2STAGE_COMPLEX_KERNELS_AND_DEFAULT(X)
Definition: elpa_constants.h:89
#define ELPA_FOR_ALL_ERRORS(X)
Definition: elpa_constants.h:100
ELPA_AUTOTUNE_LEVELS
Definition: elpa_constants.h:129
ELPA_ERRORS
Definition: elpa_constants.h:115
ELPA_COMPLEX_KERNELS
Definition: elpa_constants.h:94
#define ELPA_FOR_ALL_SOLVERS(X)
Definition: elpa_constants.h:23
ELPA_AUTOTUNE_DOMAINS
Definition: elpa_constants.h:138
#define ELPA_FOR_ALL_AUTOTUNE_LEVELS(X,...)
Definition: elpa_constants.h:123
MATRIX_LAYOUTS
Definition: elpa_constants.h:17
ELPA_REAL_KERNELS
Definition: elpa_constants.h:69
Definition: elpa_constants.h:119
#define ELPA_ENUM_ENTRY(name, value,...)
Definition: elpa_constants.h:8
ELPA_SOLVERS
Definition: elpa_constants.h:27
#define ELPA_FOR_ALL_MATRIX_LAYOUTS(X)
Definition: elpa_constants.h:13
#define ELPA_ENUM_SUM(name, value,...)
Definition: elpa_constants.h:10
#define ELPA_FOR_ALL_2STAGE_REAL_KERNELS(X,...)
Definition: elpa_constants.h:33
Definition: elpa_constants.h:120
#define ELPA_FOR_ALL_2STAGE_COMPLEX_KERNELS(X,...)
Definition: elpa_constants.h:73
#define ELPA_FOR_ALL_2STAGE_REAL_KERNELS_AND_DEFAULT(X)
Definition: elpa_constants.h:64
#define ELPA_FOR_ALL_AUTOTUNE_DOMAINS(X,...)
Definition: elpa_constants.h:133
ELPA_CONSTANTS
Definition: elpa_constants.h:118