19 #include "cpp_utils/array_wrapper.hpp" 21 #if __cpp_aligned_new >= 201606 22 #include "cpp_utils/soft_aligned_array.hpp" 24 #include "cpp_utils/aligned_array.hpp" 39 static constexpr
size_t alloc_size_vec(
size_t size) {
45 #ifdef ETL_ADVANCED_PADDING 55 static constexpr
size_t alloc_size_mat(
size_t size,
size_t last) {
75 static constexpr
size_t alloc_size_mat(
size_t size,
size_t last) {
76 return (
void)last, (size == 0 ? 0 : alloc_size_vec<T>(size));
87 template <
typename T,
size_t... Dims>
88 static constexpr
size_t alloc_size_mat() {
89 return alloc_size_mat<T>((Dims * ...),
nth_size<
sizeof...(Dims) - 1, 0, Dims...>());
92 template <
typename T,
typename ST,
order SO,
size_t... Dims>
93 struct fast_matrix_impl;
95 template <
typename T,
typename ST,
order SO,
size_t... Dims>
96 struct custom_fast_matrix_impl;
98 template <
typename T, order SO,
size_t D = 2>
99 struct dyn_matrix_impl;
101 template <
typename T, order SO,
size_t D = 2>
102 struct gpu_dyn_matrix_impl;
104 template <
typename T, order SO,
size_t D = 2>
105 struct custom_dyn_matrix_impl;
107 template <
typename T, sparse_storage SS,
size_t D>
108 struct sparse_matrix_impl;
110 template <
typename Stream>
113 template <
typename Stream>
124 #if __cpp_aligned_new >= 201606 125 template <
typename T, std::
size_t S, std::
size_t A>
126 using aligned_array = cpp::soft_aligned_array<T, S, A>;
128 template <
typename T, std::
size_t S, std::
size_t A>
129 using aligned_array = cpp::aligned_array<T, S, A>;
135 template <
typename T,
size_t... Dims>
141 template <typename T, size_t... Dims>
147 template <
typename T,
size_t Rows>
153 template <
typename T,
size_t Rows>
159 template <
typename T,
size_t Rows>
165 template <
typename T,
size_t... Dims>
171 template <
typename T,
order SO,
size_t... Dims>
177 template <
typename T,
size_t D = 2>
183 template <
typename T,
size_t D = 2>
189 template <
typename T, order SO,
size_t D = 2>
195 template <
typename T>
201 template <
typename T>
207 template <
typename T,
size_t D = 2>
213 template <
typename T,
size_t D = 2>
219 template <
typename T,
size_t D = 2>
225 template <
typename T>
231 template <
typename T,
size_t Rows>
237 template <
typename T,
size_t... Dims>
243 template <
typename T,
size_t D = 2>
constexpr bool padding
Indicates if ETL is allowed to pad matrices and vectors.
Definition: config.hpp:135
Define traits to get vectorization information for types when no vector mode is available.
Definition: no_vectorization.hpp:16
order
Storage order of a matrix.
Definition: order.hpp:15
constexpr size_t nth_size()
Traits to get the Sth dimension in Dims..
Definition: tmp.hpp:102
Root namespace for the ETL library.
Definition: adapter.hpp:15
static constexpr size_t size
Numbers of elements done at once.
Definition: no_vectorization.hpp:18
Matrix with run-time fixed dimensions.
Definition: dyn.hpp:26
Matrix with compile-time fixed dimensions.
Definition: fast.hpp:26
Matrix with run-time fixed dimensions.
Definition: custom_dyn.hpp:27
Matrix with compile-time fixed dimensions.
Definition: custom_fast.hpp:27
Sparse matrix implementation.
Definition: sparse.hpp:211
GPU special Matrix with run-time fixed dimensions.
Definition: gpu_dyn.hpp:25