15#ifndef dealii_cuda_kernels_h
16#define dealii_cuda_kernels_h
20#ifdef DEAL_II_WITH_CUDA
41 using ::CUDAWrappers::block_size;
42 using ::CUDAWrappers::chunk_size;
43 using ::CUDAWrappers::warp_size;
51 template <
typename Number>
62 template <
typename Number>
65 __device__
static inline Number
72 template <
typename Number>
75 __device__
static inline std::complex<Number>
76 operation(
const std::complex<Number> a,
const std::complex<Number>)
78 printf(
"This function is not implemented for std::complex<Number>!");
91 template <
typename Number>
94 __device__
static inline Number
101 template <
typename Number>
104 __device__
static inline std::complex<Number>
106 const std::complex<Number> )
108 printf(
"This function is not implemented for std::complex<Number>!");
121 template <
typename Number>
124 __device__
static inline Number
127 return a > b ? a : b;
131 template <
typename Number>
134 __device__
static inline std::complex<Number>
135 operation(
const std::complex<Number> a,
const std::complex<Number>)
137 printf(
"This function is not implemented for std::complex<Number>!");
150 template <
typename Number>
153 __device__
static inline Number
156 return a > b ? b : a;
160 template <
typename Number>
163 __device__
static inline std::complex<Number>
164 operation(
const std::complex<Number> a,
const std::complex<Number>)
166 printf(
"This function is not implemented for std::complex<Number>!");
179 template <
typename Number,
template <
typename>
class Binop>
193 template <
typename Number,
template <
typename>
class Binop>
208 template <
typename Number>
211 __device__
static Number
214 __device__
static Number
217 __device__
static Number
220 __device__
static Number
232 template <
typename Number>
235 __device__
static Number
238 __device__
static Number
241 __device__
static Number
244 __device__
static Number
256 template <
typename Number>
259 __device__
static Number
262 __device__
static Number
265 __device__
static Number
268 __device__
static Number
279 template <
typename Number,
typename Operation>
291 template <
typename Number>
294 __device__
static Number
297 __device__
static Number
300 __device__
static Number
303 __device__
static Number
315 template <
typename Number,
typename Operation>
329 template <
typename Number>
340 template <
typename Number>
355 template <
typename Number>
372 template <
typename Number>
388 template <
typename Number>
406 template <
typename Number>
417 template <
typename Number>
419 equ(Number *val,
const Number a,
const Number *V_val,
const size_type N);
428 template <
typename Number>
445 template <
typename Number>
461 template <
typename Number>
472 template <
typename Number,
typename IndexType>
487 template <
typename Number,
typename IndexType>
490 const IndexType *indices,
502 template <
typename Number>
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
__global__ void add_aVbW(Number *val, const Number a, const Number *V_val, const Number b, const Number *W_val, const size_type N)
__global__ void set_permutated(const IndexType *indices, Number *val, const Number *v, const IndexType N)
__global__ void add_aV(Number *val, const Number a, const Number *V_val, const size_type N)
__global__ void equ(Number *val, const Number a, const Number *V_val, const size_type N)
__global__ void gather(Number *val, const IndexType *indices, const Number *v, const IndexType N)
__global__ void masked_vector_bin_op(const unsigned int *mask, Number *v1, const Number *v2, const size_type N)
__global__ void vec_add(Number *val, const Number a, const size_type N)
__global__ void double_vector_reduction(Number *result, const Number *v1, const Number *v2, const size_type N)
__global__ void vec_scale(Number *val, const Number a, const size_type N)
__global__ void reduction(Number *result, const Number *v, const size_type N)
__global__ void add_and_dot(Number *res, Number *v1, const Number *v2, const Number *v3, const Number a, const size_type N)
__global__ void set(Number *val, const Number s, const size_type N)
__global__ void vector_bin_op(Number *v1, const Number *v2, const size_type N)
__global__ void scale(Number *val, const Number *V_val, const size_type N)
__global__ void sadd(const Number s, Number *val, const Number a, const Number *V_val, const size_type N)
__global__ void add_permutated(const size_type *indices, Number *val, const Number *v, const size_type N)
unsigned int global_dof_index
static std::complex< Number > operation(const std::complex< Number > a, const std::complex< Number >)
static Number operation(const Number a, const Number b)
static std::complex< Number > operation(const std::complex< Number > a, const std::complex< Number >)
static Number operation(const Number a, const Number b)
static std::complex< Number > operation(const std::complex< Number > a, const std::complex< Number >)
static Number operation(const Number a, const Number b)
static std::complex< Number > operation(const std::complex< Number > a, const std::complex< Number >)
static Number operation(const Number a, const Number b)
static Number null_value()
static Number reduction_op(const Number a, const Number b)
static Number atomic_op(Number *dst, const Number a)
static Number binary_op(const Number a, const Number b)
static Number element_wise_op(const Number a)
static Number atomic_op(Number *dst, const Number a)
static Number reduction_op(const Number a, const Number b)
static Number null_value()
static Number null_value()
static Number atomic_op(Number *dst, const Number a)
static Number reduction_op(const Number a, const Number b)
static Number element_wise_op(const Number a)
static Number null_value()
static Number reduction_op(const Number a, const Number b)
static Number atomic_op(Number *dst, const Number a)
static Number element_wise_op(const Number a)