10 #ifndef EIGEN_TUPLE_GPU
11 #define EIGEN_TUPLE_GPU
13 #include <type_traits>
20 namespace tuple_impl {
23 template <
size_t N,
typename... Types>
27 template <
size_t N,
typename T1,
typename... Ts>
34 template <
typename U1 = T1,
40 template <
typename U1,
typename... Us,
42 typename EnableIf = std::enable_if_t<
44 sizeof...(Us) ==
sizeof...(Ts) && (
48 : head_(std::forward<U1>(arg1)), tail_(std::forward<Us>(
args)...) {}
62 swap(head_, other.head_);
63 swap(tail_, other.tail_);
66 template <
typename... UTypes>
73 template <
typename... UTypes>
75 head_ = std::move(other.head_);
76 tail_ = std::move(other.tail_);
82 template <
size_t M,
typename... UTypes>
93 template <
typename TupleType>
96 template <
typename... Types>
100 template <
size_t Idx,
typename T1,
typename... Ts>
115 template <
typename T1,
typename... Ts>
128 template <
size_t NTuples,
typename... Tuples>
131 template <
size_t NTuples,
size_t N1,
typename... Args1,
size_t N2,
typename... Args2,
typename... Tuples>
141 template <
typename Tuple1,
size_t... I1s,
typename Tuple2,
size_t... I2s,
typename... MoreTuples>
143 std::index_sequence<I1s...>,
145 std::index_sequence<I2s...>,
146 MoreTuples&&... tuples) {
150 std::forward<MoreTuples>(tuples)...);
154 template <
typename Tuple1,
typename Tuple2,
typename... MoreTuples>
156 MoreTuples&&... tuples) {
157 return run(std::forward<Tuple1>(tuple1), std::make_index_sequence<N1>{}, std::forward<Tuple2>(tuple2),
158 std::make_index_sequence<N2>{}, std::forward<MoreTuples>(tuples)...);
163 template <
size_t N,
typename... Args>
167 template <
typename Tuple1>
181 template <
typename T>
186 template <
typename T>
192 template <
typename T>
200 template <
typename Tuple>
203 template <
typename... Types>
204 struct tuple_size<
TupleImpl<sizeof...(Types), Types...>> : std::integral_constant<size_t, sizeof...(Types)> {};
213 template <
size_t Idx,
typename... Types>
219 template <
size_t Idx,
typename... Types>
230 template <
typename... Tuples,
typename EnableIf = std::enable_if_t<
241 template <
typename... Args,
typename ReturnType = TupleImpl<
sizeof...(Args), Args&...>>
243 return ReturnType{
args...};
251 return ReturnType{std::forward<Args>(
args)...};
257 template <
typename... Args>
260 return TupleImpl<
sizeof...(Args), Args...>(std::forward<Args>(
args)...);
266 template <
typename... Types>
Eigen::Triplet< double > T
Definition: EigenUnitTest.cpp:11
#define EIGEN_ALWAYS_INLINE
Definition: Macros.h:845
#define EIGEN_NOEXCEPT
Definition: Macros.h:1267
#define EIGEN_CONSTEXPR
Definition: Macros.h:758
#define EIGEN_DEVICE_FUNC
Definition: Macros.h:892
#define EIGEN_STRONG_INLINE
Definition: Macros.h:834
#define EIGEN_MAKE_ALIGNED_OPERATOR_NEW
Definition: Memory.h:879
Matrix< RealScalar, Dynamic, Dynamic > M
Definition: bench_gemm.cpp:50
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TupleImpl & operator=(const TupleImpl< N, UTypes... > &other)
Definition: Tuple.h:67
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE const TupleImpl< N - 1, Ts... > & tail() const
Definition: Tuple.h:58
T1 head_
Definition: Tuple.h:85
EIGEN_MAKE_ALIGNED_OPERATOR_NEW EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC TupleImpl()
Definition: Tuple.h:37
TupleImpl< N - 1, Ts... > tail_
Definition: Tuple.h:86
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE const T1 & head() const
Definition: Tuple.h:53
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void swap(TupleImpl &other)
Definition: Tuple.h:60
EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC TupleImpl(U1 &&arg1, Us &&... args)
Definition: Tuple.h:47
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE T1 & head()
Definition: Tuple.h:51
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TupleImpl & operator=(TupleImpl< N, UTypes... > &&other)
Definition: Tuple.h:74
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE TupleImpl< N - 1, Ts... > & tail()
Definition: Tuple.h:56
@ N
Definition: constructor.cpp:22
EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const tuple_get_impl< Idx, Types... >::ReturnType & get(const TupleImpl< sizeof...(Types), Types... > &tuple)
Definition: Tuple.h:214
EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE ReturnType tie(Args &... args) EIGEN_NOEXCEPT
Definition: Tuple.h:242
EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE ReturnType make_tuple(Args &&... args)
Definition: Tuple.h:250
EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE tuple_cat_impl< sizeof...(Tuples), typename std::decay< Tuples >::type... >::ReturnType tuple_cat(Tuples &&... tuples)
Definition: Tuple.h:234
EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TupleImpl< sizeof...(Args), Args... > forward_as_tuple(Args &&... args)
Definition: Tuple.h:258
std::is_same< std::integer_sequence< bool, values..., true >, std::integer_sequence< bool, true, values... > > reduce_all
Definition: Meta.h:403
void swap(scoped_array< T > &a, scoped_array< T > &b)
Definition: Memory.h:734
EIGEN_STRONG_INLINE void swap(T &a, T &b)
Definition: Meta.h:536
Namespace containing all symbols from the Eigen library.
Definition: bench_norm.cpp:70
auto run(Kernel kernel, Args &&... args) -> decltype(kernel(args...))
Definition: gpu_test_helper.h:414
squared absolute value
Definition: GlobalFunctions.h:87
args
Definition: compute_granudrum_aor.py:143
type
Definition: compute_granudrum_aor.py:141
Definition: Eigen_Colamd.h:49
Definition: ForwardDeclarations.h:221
static EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE ReturnType run()
Definition: Tuple.h:177
static EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE ReturnType run(Tuple1 &&tuple1)
Definition: Tuple.h:168
static EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE ReturnType run(Tuple1 &&tuple1, std::index_sequence< I1s... >, Tuple2 &&tuple2, std::index_sequence< I2s... >, MoreTuples &&... tuples)
Definition: Tuple.h:142
typename tuple_cat_impl< NTuples - 1, MergedTupleType, Tuples... >::ReturnType ReturnType
Definition: Tuple.h:137
static EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE ReturnType run(Tuple1 &&tuple1, Tuple2 &&tuple2, MoreTuples &&... tuples)
Definition: Tuple.h:155
T1 ReturnType
Definition: Tuple.h:118
static EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE const T1 & run(const TupleType &tuple)
Definition: Tuple.h:122
typename tuple_get_impl< Idx - 1, Ts... >::ReturnType ReturnType
Definition: Tuple.h:103
static EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE const ReturnType & run(const TupleType &tuple)
Definition: Tuple.h:109
static EIGEN_CONSTEXPR EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE ReturnType & run(TupleType &tuple)
Definition: Tuple.h:105
typename unwrap_reference_wrapper< typename std::decay< T >::type >::type type
Definition: Tuple.h:194
void run(const string &dir_name, LinearSolver *linear_solver_pt, const unsigned nel_1d, bool mess_up_order)
Definition: two_d_poisson_compare_solvers.cc:317