Reference documentation for deal.II version 9.2.0
|
The classes in this module are concerned with the description of features to be run on GPUs using CUDA. More...
Enumerations | |
enum | CUDAWrappers::internal::EvaluatorVariant { CUDAWrappers::internal::evaluate_general, CUDAWrappers::internal::evaluate_symmetric, CUDAWrappers::internal::evaluate_evenodd } |
Functions | |
float | LinearAlgebra::CUDAWrappers::atomicAdd_wrapper (float *address, float val) |
double | LinearAlgebra::CUDAWrappers::atomicAdd_wrapper (double *address, double val) |
float | LinearAlgebra::CUDAWrappers::atomicMax_wrapper (float *address, float val) |
double | LinearAlgebra::CUDAWrappers::atomicMax_wrapper (double *address, double val) |
template<typename Number > | |
__global__ void | LinearAlgebra::CUDAWrappers::kernel::vec_scale (Number *val, const Number a, const size_type N) |
template<typename Number , template< typename > class Binop> | |
__global__ void | LinearAlgebra::CUDAWrappers::kernel::vector_bin_op (Number *v1, const Number *v2, const size_type N) |
template<typename Number , template< typename > class Binop> | |
__global__ void | LinearAlgebra::CUDAWrappers::kernel::masked_vector_bin_op (const unsigned int *mask, Number *v1, const Number *v2, const size_type N) |
template<typename Number , typename Operation > | |
__global__ void | LinearAlgebra::CUDAWrappers::kernel::reduction (Number *result, const Number *v, const size_type N) |
template<typename Number , typename Operation > | |
__global__ void | LinearAlgebra::CUDAWrappers::kernel::double_vector_reduction (Number *result, const Number *v1, const Number *v2, const size_type N) |
template<typename Number > | |
__global__ void | LinearAlgebra::CUDAWrappers::kernel::vec_add (Number *val, const Number a, const size_type N) |
template<typename Number > | |
__global__ void | LinearAlgebra::CUDAWrappers::kernel::add_aV (Number *val, const Number a, const Number *V_val, const size_type N) |
template<typename Number > | |
__global__ void | LinearAlgebra::CUDAWrappers::kernel::add_aVbW (Number *val, const Number a, const Number *V_val, const Number b, const Number *W_val, const size_type N) |
template<typename Number > | |
__global__ void | LinearAlgebra::CUDAWrappers::kernel::sadd (const Number s, Number *val, const Number a, const Number *V_val, const size_type N) |
template<typename Number > | |
__global__ void | LinearAlgebra::CUDAWrappers::kernel::sadd (const Number s, Number *val, const Number a, const Number *V_val, const Number b, const Number *W_val, const size_type N) |
template<typename Number > | |
__global__ void | LinearAlgebra::CUDAWrappers::kernel::scale (Number *val, const Number *V_val, const size_type N) |
template<typename Number > | |
__global__ void | LinearAlgebra::CUDAWrappers::kernel::equ (Number *val, const Number a, const Number *V_val, const size_type N) |
template<typename Number > | |
__global__ void | LinearAlgebra::CUDAWrappers::kernel::equ (Number *val, const Number a, const Number *V_val, const Number b, const Number *W_val, const size_type N) |
template<typename Number > | |
__global__ void | LinearAlgebra::CUDAWrappers::kernel::add_and_dot (Number *res, Number *v1, const Number *v2, const Number *v3, const Number a, const size_type N) |
template<typename Number > | |
__global__ void | LinearAlgebra::CUDAWrappers::kernel::set (Number *val, const Number s, const size_type N) |
template<typename Number , typename IndexType > | |
__global__ void | LinearAlgebra::CUDAWrappers::kernel::set_permutated (const IndexType *indices, Number *val, const Number *v, const IndexType N) |
template<typename Number , typename IndexType > | |
__global__ void | LinearAlgebra::CUDAWrappers::kernel::gather (Number *val, const IndexType *indices, const Number *v, const IndexType N) |
template<typename Number > | |
__global__ void | LinearAlgebra::CUDAWrappers::kernel::add_permutated (const size_type *indices, Number *val, const Number *v, const size_type N) |
The classes in this module are concerned with the description of features to be run on GPUs using CUDA.
In this namespace, the evaluator routines that evaluate the tensor products are implemented.
Enumerator | |
---|---|
evaluate_general | |
evaluate_symmetric | |
evaluate_evenodd |
Definition at line 42 of file cuda_tensor_product_kernels.h.
|
inline |
Provide atomicAdd for floats.
Definition at line 35 of file cuda_atomic.h.
Provide atomicAdd for doubles.
Definition at line 48 of file cuda_atomic.h.
|
inline |
Provide atomicMax for floats.
Definition at line 81 of file cuda_atomic.h.
Provide atomicMax for doubles.
Definition at line 105 of file cuda_atomic.h.
__global__ void LinearAlgebra::CUDAWrappers::kernel::vec_scale | ( | Number * | val, |
const Number | a, | ||
const size_type | N | ||
) |
Multiply each entry of val
of size N
by a
.
__global__ void LinearAlgebra::CUDAWrappers::kernel::vector_bin_op | ( | Number * | v1, |
const Number * | v2, | ||
const size_type | N | ||
) |
Apply the functor Binop
to each element of v1
and v2
.
__global__ void LinearAlgebra::CUDAWrappers::kernel::masked_vector_bin_op | ( | const unsigned int * | mask, |
Number * | v1, | ||
const Number * | v2, | ||
const size_type | N | ||
) |
Apply the functor Binop
to the elements of v1
that have indices in mask
and v2
. The size of mask
should be greater than the size of v1
. mask
and v2
should have the same size N
.
__global__ void LinearAlgebra::CUDAWrappers::kernel::reduction | ( | Number * | result, |
const Number * | v, | ||
const size_type | N | ||
) |
Perform a reduction on v
using Operation
.
__global__ void LinearAlgebra::CUDAWrappers::kernel::double_vector_reduction | ( | Number * | result, |
const Number * | v1, | ||
const Number * | v2, | ||
const size_type | N | ||
) |
Perform a binary operation on each element of v1
and v2
followed by reduction on the resulting array.
__global__ void LinearAlgebra::CUDAWrappers::kernel::vec_add | ( | Number * | val, |
const Number | a, | ||
const size_type | N | ||
) |
Add a
to each element of val
.
__global__ void LinearAlgebra::CUDAWrappers::kernel::add_aV | ( | Number * | val, |
const Number | a, | ||
const Number * | V_val, | ||
const size_type | N | ||
) |
Addition of a multiple of a vector, i.e., val += a*V_val
.
__global__ void LinearAlgebra::CUDAWrappers::kernel::add_aVbW | ( | Number * | val, |
const Number | a, | ||
const Number * | V_val, | ||
const Number | b, | ||
const Number * | W_val, | ||
const size_type | N | ||
) |
Addition of multiple scaled vector, i.e., val += a*V_val + b*W_val
.
__global__ void LinearAlgebra::CUDAWrappers::kernel::sadd | ( | const Number | s, |
Number * | val, | ||
const Number | a, | ||
const Number * | V_val, | ||
const size_type | N | ||
) |
Scaling and simple addition of a multiple of a vector, i.e. val = = s*val + a*V_val
__global__ void LinearAlgebra::CUDAWrappers::kernel::sadd | ( | const Number | s, |
Number * | val, | ||
const Number | a, | ||
const Number * | V_val, | ||
const Number | b, | ||
const Number * | W_val, | ||
const size_type | N | ||
) |
Scaling and multiple additions of scaled vectors, i.e. val = = s*val + a*V_val + b*W_val
__global__ void LinearAlgebra::CUDAWrappers::kernel::scale | ( | Number * | val, |
const Number * | V_val, | ||
const size_type | N | ||
) |
Scale each element of this vector by the corresponding element in the argument.
__global__ void LinearAlgebra::CUDAWrappers::kernel::equ | ( | Number * | val, |
const Number | a, | ||
const Number * | V_val, | ||
const size_type | N | ||
) |
Assignment val = a*V_val
.
__global__ void LinearAlgebra::CUDAWrappers::kernel::equ | ( | Number * | val, |
const Number | a, | ||
const Number * | V_val, | ||
const Number | b, | ||
const Number * | W_val, | ||
const size_type | N | ||
) |
Assignment val = a*V_val + b*W_val
.
__global__ void LinearAlgebra::CUDAWrappers::kernel::add_and_dot | ( | Number * | res, |
Number * | v1, | ||
const Number * | v2, | ||
const Number * | v3, | ||
const Number | a, | ||
const size_type | N | ||
) |
Perform a combined operation of a vector addition and a subsequent inner product, returning the value of the inner product.
__global__ void LinearAlgebra::CUDAWrappers::kernel::set | ( | Number * | val, |
const Number | s, | ||
const size_type | N | ||
) |
Set each element of val
to s
.
__global__ void LinearAlgebra::CUDAWrappers::kernel::set_permutated | ( | const IndexType * | indices, |
Number * | val, | ||
const Number * | v, | ||
const IndexType | N | ||
) |
Set each element in val
to v
using indices
as permutation, i.e., val[indices[i]] = v[i]
.
__global__ void LinearAlgebra::CUDAWrappers::kernel::gather | ( | Number * | val, |
const IndexType * | indices, | ||
const Number * | v, | ||
const IndexType | N | ||
) |
Set each element in val
to v
using indices
as permutation, i.e., val[i] = v[indices[i]]
.