42 #ifndef KOKKOS_VIEW_UTILS_HPP 43 #define KOKKOS_VIEW_UTILS_HPP 49 KOKKOS_INLINE_FUNCTION
52 #if defined(__CUDACC__) && defined(__CUDA_ARCH__) 55 throw std::runtime_error(msg);
61 template<
class T ,
class Device >
67 template<
class T ,
class Device >
73 template<
class T ,
unsigned N ,
class Device >
82 KOKKOS_INLINE_FUNCTION
83 static size_t eval(
const size_t n0 ,
90 const size_t n7 = 0 ) {
94 template <
typename Layout>
95 KOKKOS_INLINE_FUNCTION
96 static size_t eval(
const Layout& layout ) {
97 return layout.dimension[0];
101 KOKKOS_INLINE_FUNCTION
102 static size_t eval(
const size_t n0 ,
104 const size_t n2 = 0 ,
105 const size_t n3 = 0 ,
106 const size_t n4 = 0 ,
107 const size_t n5 = 0 ,
108 const size_t n6 = 0 ,
109 const size_t n7 = 0 ) {
113 template <
typename Layout>
114 KOKKOS_INLINE_FUNCTION
115 static size_t eval(
const Layout& layout ) {
116 return layout.dimension[1];
120 KOKKOS_INLINE_FUNCTION
121 static size_t eval(
const size_t n0 ,
124 const size_t n3 = 0 ,
125 const size_t n4 = 0 ,
126 const size_t n5 = 0 ,
127 const size_t n6 = 0 ,
128 const size_t n7 = 0 ) {
132 template <
typename Layout>
133 KOKKOS_INLINE_FUNCTION
134 static size_t eval(
const Layout& layout ) {
135 return layout.dimension[2];
139 KOKKOS_INLINE_FUNCTION
140 static size_t eval(
const size_t n0 ,
144 const size_t n4 = 0 ,
145 const size_t n5 = 0 ,
146 const size_t n6 = 0 ,
147 const size_t n7 = 0 ) {
151 template <
typename Layout>
152 KOKKOS_INLINE_FUNCTION
153 static size_t eval(
const Layout& layout ) {
154 return layout.dimension[3];
158 KOKKOS_INLINE_FUNCTION
159 static size_t eval(
const size_t n0 ,
164 const size_t n5 = 0 ,
165 const size_t n6 = 0 ,
166 const size_t n7 = 0 ) {
170 template <
typename Layout>
171 KOKKOS_INLINE_FUNCTION
172 static size_t eval(
const Layout& layout ) {
173 return layout.dimension[4];
177 KOKKOS_INLINE_FUNCTION
178 static size_t eval(
const size_t n0 ,
184 const size_t n6 = 0 ,
185 const size_t n7 = 0 ) {
189 template <
typename Layout>
190 KOKKOS_INLINE_FUNCTION
191 static size_t eval(
const Layout& layout ) {
192 return layout.dimension[5];
196 KOKKOS_INLINE_FUNCTION
197 static size_t eval(
const size_t n0 ,
204 const size_t n7 = 0 ) {
208 template <
typename Layout>
209 KOKKOS_INLINE_FUNCTION
210 static size_t eval(
const Layout& layout ) {
211 return layout.dimension[6];
215 KOKKOS_INLINE_FUNCTION
216 static size_t eval(
const size_t n0 ,
227 template <
typename Layout>
228 KOKKOS_INLINE_FUNCTION
229 static size_t eval(
const Layout& layout ) {
230 return layout.dimension[7];
237 template <
typename view_type,
typename Enabled =
void>
243 template <
typename view_type,
typename Enabled =
void>
245 typedef typename view_type::array_type::non_const_value_type
type;
248 template <
typename ViewType>
251 size_t N0 = 0,
size_t N1 = 0,
size_t N2 = 0,
size_t N3 = 0,
252 size_t N4 = 0,
size_t N5 = 0,
size_t N6 = 0,
size_t N7 = 0)
254 return ViewType(label, N0, N1, N2, N3, N4, N5, N6, N7);
257 template <
typename ViewType>
260 size_t N0 = 0,
size_t N1 = 0,
size_t N2 = 0,
size_t N3 = 0,
261 size_t N4 = 0,
size_t N5 = 0,
size_t N6 = 0,
size_t N7 = 0)
263 return ViewType(init, N0, N1, N2, N3, N4, N5, N6, N7);
266 template <
typename ViewType>
269 size_t N0 = 0,
size_t N1 = 0,
size_t N2 = 0,
size_t N3 = 0,
270 size_t N4 = 0,
size_t N5 = 0,
size_t N6 = 0,
size_t N7 = 0)
272 return ViewType(ptr, N0, N1, N2, N3, N4, N5, N6, N7);
275 template <
typename ViewType>
278 const Experimental::Impl::WithoutInitializing_t& init,
279 size_t N0 = 0,
size_t N1 = 0,
size_t N2 = 0,
size_t N3 = 0,
280 size_t N4 = 0,
size_t N5 = 0,
size_t N6 = 0,
size_t N7 = 0)
282 return ViewType(Experimental::view_alloc(label,init),
283 N0, N1, N2, N3, N4, N5, N6, N7);
288 #endif // KOKKOS_VIEW_UTILS_HPP static KOKKOS_INLINE_FUNCTION size_t eval(const size_t n0, const size_t n1, const size_t n2, const size_t n3, const size_t n4, const size_t n5, const size_t n6, const size_t n7)
RebindStokhosStorageDevice< T, Device >::type * type
static KOKKOS_INLINE_FUNCTION size_t eval(const size_t n0, const size_t n1, const size_t n2, const size_t n3=0, const size_t n4=0, const size_t n5=0, const size_t n6=0, const size_t n7=0)
static KOKKOS_INLINE_FUNCTION size_t eval(const size_t n0, const size_t n1, const size_t n2, const size_t n3, const size_t n4, const size_t n5, const size_t n6, const size_t n7=0)
RebindStokhosStorageDevice< T, Device >::type * type
static KOKKOS_INLINE_FUNCTION size_t eval(const size_t n0, const size_t n1, const size_t n2, const size_t n3, const size_t n4, const size_t n5=0, const size_t n6=0, const size_t n7=0)
static KOKKOS_INLINE_FUNCTION size_t eval(const size_t n0, const size_t n1=0, const size_t n2=0, const size_t n3=0, const size_t n4=0, const size_t n5=0, const size_t n6=0, const size_t n7=0)
static KOKKOS_INLINE_FUNCTION size_t eval(const Layout &layout)
KOKKOS_INLINE_FUNCTION void raise_error(const char *msg)
static KOKKOS_INLINE_FUNCTION size_t eval(const size_t n0, const size_t n1, const size_t n2, const size_t n3, const size_t n4, const size_t n5, const size_t n6=0, const size_t n7=0)
static KOKKOS_INLINE_FUNCTION size_t eval(const Layout &layout)
static KOKKOS_INLINE_FUNCTION size_t eval(const Layout &layout)
ViewType make_view(const std::string &label, size_t N0=0, size_t N1=0, size_t N2=0, size_t N3=0, size_t N4=0, size_t N5=0, size_t N6=0, size_t N7=0)
static KOKKOS_INLINE_FUNCTION size_t eval(const size_t n0, const size_t n1, const size_t n2, const size_t n3, const size_t n4=0, const size_t n5=0, const size_t n6=0, const size_t n7=0)
static KOKKOS_INLINE_FUNCTION size_t eval(const Layout &layout)
view_type::array_type::non_const_value_type type
static KOKKOS_INLINE_FUNCTION size_t eval(const size_t n0, const size_t n1, const size_t n2=0, const size_t n3=0, const size_t n4=0, const size_t n5=0, const size_t n6=0, const size_t n7=0)
static KOKKOS_INLINE_FUNCTION size_t eval(const Layout &layout)
static KOKKOS_INLINE_FUNCTION size_t eval(const Layout &layout)
static KOKKOS_INLINE_FUNCTION size_t eval(const Layout &layout)
static KOKKOS_INLINE_FUNCTION size_t eval(const Layout &layout)