42 #ifndef STOKHOS_STATIC_ARRAY_TRAITS_HPP 43 #define STOKHOS_STATIC_ARRAY_TRAITS_HPP 47 #include "Sacado_Traits.hpp" 49 #include "Kokkos_Macros.hpp" 56 template <
typename T,
typename device,
57 bool isScalar = Sacado::IsScalarType<T>::value>
63 template <
typename T,
typename D>
71 KOKKOS_INLINE_FUNCTION
72 void copy(
const volatile T* src,
volatile T* dest, std::size_t sz) {
73 for (std::size_t i=0; i<sz; ++i)
79 KOKKOS_INLINE_FUNCTION
80 void copy(
const volatile T* src, T* dest, std::size_t sz) {
81 for (std::size_t i=0; i<sz; ++i)
87 KOKKOS_INLINE_FUNCTION
88 void copy(
const T* src,
volatile T* dest, std::size_t sz) {
89 for (std::size_t i=0; i<sz; ++i)
95 KOKKOS_INLINE_FUNCTION
96 void copy(
const T* src, T* dest, std::size_t sz) {
97 for (std::size_t i=0; i<sz; ++i)
103 KOKKOS_INLINE_FUNCTION
104 void zero(T* dest, std::size_t sz) {
105 for (std::size_t i=0; i<sz; ++i)
111 KOKKOS_INLINE_FUNCTION
112 void zero(
volatile T* dest, std::size_t sz) {
113 for (std::size_t i=0; i<sz; ++i)
119 KOKKOS_INLINE_FUNCTION
120 void fill(T* dest, std::size_t sz,
const T& v) {
121 for (std::size_t i=0; i<sz; ++i)
127 KOKKOS_INLINE_FUNCTION
128 void fill(
volatile T* dest, std::size_t sz,
const T& v) {
129 for (std::size_t i=0; i<sz; ++i)
139 template <
typename T,
typename D>
147 KOKKOS_INLINE_FUNCTION
148 void copy(
const volatile T* src,
volatile T* dest, std::size_t sz) {
151 for (std::size_t i=0; i<sz; ++i)
152 *(dest++) = *(src++);
157 KOKKOS_INLINE_FUNCTION
158 void copy(
const volatile T* src, T* dest, std::size_t sz) {
161 for (std::size_t i=0; i<sz; ++i)
162 *(dest++) = *(src++);
167 KOKKOS_INLINE_FUNCTION
168 void copy(
const T* src,
volatile T* dest, std::size_t sz) {
171 for (std::size_t i=0; i<sz; ++i)
172 *(dest++) = *(src++);
177 KOKKOS_INLINE_FUNCTION
178 void copy(
const T* src, T* dest, std::size_t sz) {
179 if (sz > 0) std::memcpy(dest,src,sz*
sizeof(T));
184 KOKKOS_INLINE_FUNCTION
185 void zero(T* dest, std::size_t sz) {
186 if (sz > 0) std::memset(dest,0,sz*
sizeof(T));
191 KOKKOS_INLINE_FUNCTION
192 void zero(
volatile T* dest, std::size_t sz) {
194 for (std::size_t i=0; i<sz; ++i)
200 KOKKOS_INLINE_FUNCTION
201 void fill(T* dest, std::size_t sz, T v) {
203 for (std::size_t i=0; i<sz; ++i)
209 KOKKOS_INLINE_FUNCTION
210 void fill(
volatile T* dest, std::size_t sz, T v) {
212 for (std::size_t i=0; i<sz; ++i)
220 #endif // STOKHOS_STATIC_ARRAY_TRAITS_HPP static KOKKOS_INLINE_FUNCTION void copy(const T *src, T *dest, std::size_t sz)
Copy array from src to dest of length sz.
static KOKKOS_INLINE_FUNCTION void zero(volatile T *dest, std::size_t sz)
Zero out array dest of length sz.
static KOKKOS_INLINE_FUNCTION void copy(const volatile T *src, T *dest, std::size_t sz)
Copy array from src to dest of length sz.
Static array allocation class.
static KOKKOS_INLINE_FUNCTION void fill(T *dest, std::size_t sz, const T &v)
Fill array dest of length sz with value v.
static KOKKOS_INLINE_FUNCTION void copy(const T *src, volatile T *dest, std::size_t sz)
Copy array from src to dest of length sz.
static KOKKOS_INLINE_FUNCTION void copy(const T *src, volatile T *dest, std::size_t sz)
Copy array from src to dest of length sz.
static KOKKOS_INLINE_FUNCTION void copy(const volatile T *src, volatile T *dest, std::size_t sz)
Copy array from src to dest of length sz.
static KOKKOS_INLINE_FUNCTION void copy(const volatile T *src, T *dest, std::size_t sz)
Copy array from src to dest of length sz.
Top-level namespace for Stokhos classes and functions.
static KOKKOS_INLINE_FUNCTION void copy(const T *src, T *dest, std::size_t sz)
Copy array from src to dest of length sz.
static KOKKOS_INLINE_FUNCTION void copy(const volatile T *src, volatile T *dest, std::size_t sz)
Copy array from src to dest of length sz.
static KOKKOS_INLINE_FUNCTION void zero(volatile T *dest, std::size_t sz)
Zero out array dest of length sz.
static KOKKOS_INLINE_FUNCTION void fill(volatile T *dest, std::size_t sz, const T &v)
Fill array dest of length sz with value v.
static KOKKOS_INLINE_FUNCTION void fill(T *dest, std::size_t sz, T v)
Fill array dest of length sz with value v.
static KOKKOS_INLINE_FUNCTION void zero(T *dest, std::size_t sz)
Zero out array dest of length sz.
static KOKKOS_INLINE_FUNCTION void zero(T *dest, std::size_t sz)
Zero out array dest of length sz.
static KOKKOS_INLINE_FUNCTION void fill(volatile T *dest, std::size_t sz, T v)
Fill array dest of length sz with value v.