@@ -42,21 +42,17 @@ struct geqrf_eti_spec_avail {
4242// We may spread out definitions (see _INST macro below) across one or
4343// more .cpp files.
4444//
45- #define KOKKOSLAPACK_GEQRF_ETI_SPEC_AVAIL (SCALAR_TYPE, LAYOUT_TYPE, \
46- EXEC_SPACE_TYPE, MEM_SPACE_TYPE) \
47- template <> \
48- struct geqrf_eti_spec_avail < \
49- EXEC_SPACE_TYPE, \
50- Kokkos::View<SCALAR_TYPE **, LAYOUT_TYPE, \
51- Kokkos::Device<EXEC_SPACE_TYPE, MEM_SPACE_TYPE>, \
52- Kokkos::MemoryTraits<Kokkos::Unmanaged>>, \
53- Kokkos::View<SCALAR_TYPE *, LAYOUT_TYPE, \
54- Kokkos::Device<EXEC_SPACE_TYPE, MEM_SPACE_TYPE>, \
55- Kokkos::MemoryTraits<Kokkos::Unmanaged>>, \
56- Kokkos::View<int *, LAYOUT_TYPE, \
57- Kokkos::Device<EXEC_SPACE_TYPE, MEM_SPACE_TYPE>, \
58- Kokkos::MemoryTraits<Kokkos::Unmanaged>>> { \
59- enum : bool { value = true }; \
45+ #define KOKKOSLAPACK_GEQRF_ETI_SPEC_AVAIL (SCALAR_TYPE, LAYOUT_TYPE, EXEC_SPACE_TYPE, MEM_SPACE_TYPE ) \
46+ template <> \
47+ struct geqrf_eti_spec_avail < \
48+ EXEC_SPACE_TYPE, \
49+ Kokkos::View<SCALAR_TYPE **, LAYOUT_TYPE, Kokkos::Device<EXEC_SPACE_TYPE, MEM_SPACE_TYPE>, \
50+ Kokkos::MemoryTraits<Kokkos::Unmanaged>>, \
51+ Kokkos::View<SCALAR_TYPE *, LAYOUT_TYPE, Kokkos::Device<EXEC_SPACE_TYPE, MEM_SPACE_TYPE>, \
52+ Kokkos::MemoryTraits<Kokkos::Unmanaged>>, \
53+ Kokkos::View<int *, LAYOUT_TYPE, Kokkos::Device<EXEC_SPACE_TYPE, MEM_SPACE_TYPE>, \
54+ Kokkos::MemoryTraits<Kokkos::Unmanaged>>> { \
55+ enum : bool { value = true }; \
6056 };
6157
6258// Include the actual specialization declarations
@@ -67,25 +63,20 @@ namespace KokkosLapack {
6763namespace Impl {
6864
6965// Unification layer
70- template <
71- class ExecutionSpace , class AMatrix , class TWArray , class RType ,
72- bool tpl_spec_avail =
73- geqrf_tpl_spec_avail<ExecutionSpace, AMatrix, TWArray, RType>::value,
74- bool eti_spec_avail =
75- geqrf_eti_spec_avail<ExecutionSpace, AMatrix, TWArray, RType>::value>
66+ template <class ExecutionSpace , class AMatrix , class TWArray , class RType ,
67+ bool tpl_spec_avail = geqrf_tpl_spec_avail<ExecutionSpace, AMatrix, TWArray, RType>::value,
68+ bool eti_spec_avail = geqrf_eti_spec_avail<ExecutionSpace, AMatrix, TWArray, RType>::value>
7669struct GEQRF {
77- static void geqrf (const ExecutionSpace &space, const AMatrix &A,
78- const TWArray &Tau, const TWArray &Work, const RType &R);
70+ static void geqrf (const ExecutionSpace &space, const AMatrix &A, const TWArray &Tau, const TWArray &Work,
71+ const RType &R);
7972};
8073
8174#if !defined(KOKKOSKERNELS_ETI_ONLY) || KOKKOSKERNELS_IMPL_COMPILE_LIBRARY
8275// Unification layer
8376template <class ExecutionSpace , class AMatrix , class TWArray , class RType >
84- struct GEQRF <ExecutionSpace, AMatrix, TWArray, RType, false ,
85- KOKKOSKERNELS_IMPL_COMPILE_LIBRARY> {
86- static void geqrf (const ExecutionSpace & /* space */ , const AMatrix & /* A */ ,
87- const TWArray & /* Tau */ , const TWArray & /* Work */ ,
88- const RType & /* R */ ) {
77+ struct GEQRF <ExecutionSpace, AMatrix, TWArray, RType, false , KOKKOSKERNELS_IMPL_COMPILE_LIBRARY> {
78+ static void geqrf (const ExecutionSpace & /* space */ , const AMatrix & /* A */ , const TWArray & /* Tau */ ,
79+ const TWArray & /* Work */ , const RType & /* R */ ) {
8980 // NOTE: Might add the implementation of KokkosLapack::geqrf later
9081 throw std::runtime_error (
9182 " No fallback implementation of GEQRF (general QR factorization) "
@@ -104,35 +95,26 @@ struct GEQRF<ExecutionSpace, AMatrix, TWArray, RType, false,
10495// We may spread out definitions (see _DEF macro below) across one or
10596// more .cpp files.
10697//
107- #define KOKKOSLAPACK_GEQRF_ETI_SPEC_DECL (SCALAR_TYPE, LAYOUT_TYPE, \
108- EXEC_SPACE_TYPE, MEM_SPACE_TYPE) \
109- extern template struct GEQRF < \
110- EXEC_SPACE_TYPE, \
111- Kokkos::View<SCALAR_TYPE **, LAYOUT_TYPE, \
112- Kokkos::Device<EXEC_SPACE_TYPE, MEM_SPACE_TYPE>, \
113- Kokkos::MemoryTraits<Kokkos::Unmanaged>>, \
114- Kokkos::View<SCALAR_TYPE *, LAYOUT_TYPE, \
115- Kokkos::Device<EXEC_SPACE_TYPE, MEM_SPACE_TYPE>, \
116- Kokkos::MemoryTraits<Kokkos::Unmanaged>>, \
117- Kokkos::View<int *, LAYOUT_TYPE, \
118- Kokkos::Device<EXEC_SPACE_TYPE, MEM_SPACE_TYPE>, \
119- Kokkos::MemoryTraits<Kokkos::Unmanaged>>, \
98+ #define KOKKOSLAPACK_GEQRF_ETI_SPEC_DECL (SCALAR_TYPE, LAYOUT_TYPE, EXEC_SPACE_TYPE, MEM_SPACE_TYPE ) \
99+ extern template struct GEQRF < \
100+ EXEC_SPACE_TYPE, \
101+ Kokkos::View<SCALAR_TYPE **, LAYOUT_TYPE, Kokkos::Device<EXEC_SPACE_TYPE, MEM_SPACE_TYPE>, \
102+ Kokkos::MemoryTraits<Kokkos::Unmanaged>>, \
103+ Kokkos::View<SCALAR_TYPE *, LAYOUT_TYPE, Kokkos::Device<EXEC_SPACE_TYPE, MEM_SPACE_TYPE>, \
104+ Kokkos::MemoryTraits<Kokkos::Unmanaged>>, \
105+ Kokkos::View<int *, LAYOUT_TYPE, Kokkos::Device<EXEC_SPACE_TYPE, MEM_SPACE_TYPE>, \
106+ Kokkos::MemoryTraits<Kokkos::Unmanaged>>, \
120107 false , true >;
121108
122- #define KOKKOSLAPACK_GEQRF_ETI_SPEC_INST (SCALAR_TYPE, LAYOUT_TYPE, \
123- EXEC_SPACE_TYPE, MEM_SPACE_TYPE) \
124- template struct GEQRF < \
125- EXEC_SPACE_TYPE, \
126- Kokkos::View<SCALAR_TYPE **, LAYOUT_TYPE, \
127- Kokkos::Device<EXEC_SPACE_TYPE, MEM_SPACE_TYPE>, \
128- Kokkos::MemoryTraits<Kokkos::Unmanaged>>, \
129- Kokkos::View<SCALAR_TYPE *, LAYOUT_TYPE, \
130- Kokkos::Device<EXEC_SPACE_TYPE, MEM_SPACE_TYPE>, \
131- Kokkos::MemoryTraits<Kokkos::Unmanaged>>, \
132- Kokkos::View<int *, LAYOUT_TYPE, \
133- Kokkos::Device<EXEC_SPACE_TYPE, MEM_SPACE_TYPE>, \
134- Kokkos::MemoryTraits<Kokkos::Unmanaged>>, \
135- false , true >;
109+ #define KOKKOSLAPACK_GEQRF_ETI_SPEC_INST (SCALAR_TYPE, LAYOUT_TYPE, EXEC_SPACE_TYPE, MEM_SPACE_TYPE ) \
110+ template struct GEQRF <EXEC_SPACE_TYPE, \
111+ Kokkos::View<SCALAR_TYPE **, LAYOUT_TYPE, Kokkos::Device<EXEC_SPACE_TYPE, MEM_SPACE_TYPE>, \
112+ Kokkos::MemoryTraits<Kokkos::Unmanaged>>, \
113+ Kokkos::View<SCALAR_TYPE *, LAYOUT_TYPE, Kokkos::Device<EXEC_SPACE_TYPE, MEM_SPACE_TYPE>, \
114+ Kokkos::MemoryTraits<Kokkos::Unmanaged>>, \
115+ Kokkos::View<int *, LAYOUT_TYPE, Kokkos::Device<EXEC_SPACE_TYPE, MEM_SPACE_TYPE>, \
116+ Kokkos::MemoryTraits<Kokkos::Unmanaged>>, \
117+ false , true >;
136118
137119#include < KokkosLapack_geqrf_tpl_spec_decl.hpp>
138120
0 commit comments