16 #ifndef dealii_cuda_sparse_matrix_h 17 #define dealii_cuda_sparse_matrix_h 19 #include <deal.II/base/config.h> 21 #include <deal.II/base/subscriptor.h> 23 #ifdef DEAL_II_WITH_CUDA 24 # include <deal.II/base/cuda.h> 26 # include <deal.II/lac/cuda_vector.h> 27 # include <deal.II/lac/sparse_matrix.h> 29 # include <cusparse.h> 31 DEAL_II_NAMESPACE_OPEN
47 template <
typename Number>
86 const ::SparseMatrix<Number> &sparse_matrix_host);
111 const ::SparseMatrix<Number> &sparse_matrix_host);
270 std::tuple<Number *, int *, int *, cusparseMatDescr_t>
319 template <
typename Number>
328 template <
typename Number>
337 template <
typename Number>
345 DEAL_II_NAMESPACE_CLOSE
void vmult(LinearAlgebra::CUDAWrappers::Vector< Number > &dst, const LinearAlgebra::CUDAWrappers::Vector< Number > &src) const
void Tvmult(LinearAlgebra::CUDAWrappers::Vector< Number > &dst, const LinearAlgebra::CUDAWrappers::Vector< Number > &src) const
Number matrix_scalar_product(const LinearAlgebra::CUDAWrappers::Vector< Number > &u, const LinearAlgebra::CUDAWrappers::Vector< Number > &v) const
Number matrix_norm_square(const LinearAlgebra::CUDAWrappers::Vector< Number > &v) const
SparseMatrix & operator*=(const Number factor)
cusparseHandle_t cusparse_handle
SparseMatrix & operator/=(const Number factor)
std::size_t n_nonzero_elements() const
void reinit(Utilities::CUDA::Handle &handle, const ::SparseMatrix< Number > &sparse_matrix_host)
Number residual(LinearAlgebra::CUDAWrappers::Vector< Number > &dst, const LinearAlgebra::CUDAWrappers::Vector< Number > &x, const LinearAlgebra::CUDAWrappers::Vector< Number > &b) const
Number frobenius_norm() const
std::tuple< Number *, int *, int *, cusparseMatDescr_t > get_cusparse_matrix() const
void vmult_add(LinearAlgebra::CUDAWrappers::Vector< Number > &dst, const LinearAlgebra::CUDAWrappers::Vector< Number > &src) const
void Tvmult_add(LinearAlgebra::CUDAWrappers::Vector< Number > &dst, const LinearAlgebra::CUDAWrappers::Vector< Number > &src) const
Number linfty_norm() const