16 #ifndef dealii_cuda_sparse_matrix_h 17 #define dealii_cuda_sparse_matrix_h 19 #include <deal.II/base/config.h> 20 #include <deal.II/base/subscriptor.h> 22 #ifdef DEAL_II_WITH_CUDA 23 #include <deal.II/base/cuda.h> 24 #include <deal.II/lac/sparse_matrix.h> 25 #include <deal.II/lac/cuda_vector.h> 28 DEAL_II_NAMESPACE_OPEN
44 template <
typename Number>
83 const ::SparseMatrix<Number> &sparse_matrix_host);
107 const ::SparseMatrix<Number> &sparse_matrix_host);
249 std::tuple<Number *, int *, int *, cusparseMatDescr_t>
298 template <
typename Number>
307 template <
typename Number>
316 template <
typename Number>
324 DEAL_II_NAMESPACE_CLOSE
Number matrix_norm_square(const LinearAlgebra::CUDAWrappers::Vector< Number > &v) const
std::tuple< Number *, int *, int *, cusparseMatDescr_t > get_cusparse_matrix() const
Number matrix_scalar_product(const LinearAlgebra::CUDAWrappers::Vector< Number > &u, const LinearAlgebra::CUDAWrappers::Vector< Number > &v) const
SparseMatrix & operator*=(const Number factor)
cusparseHandle_t cusparse_handle
Number frobenius_norm() const
SparseMatrix & operator/=(const Number factor)
Number residual(LinearAlgebra::CUDAWrappers::Vector< Number > &dst, const LinearAlgebra::CUDAWrappers::Vector< Number > &x, const LinearAlgebra::CUDAWrappers::Vector< Number > &b) const
void reinit(Utilities::CUDA::Handle &handle, const ::SparseMatrix< Number > &sparse_matrix_host)
Number linfty_norm() const
void Tvmult_add(LinearAlgebra::CUDAWrappers::Vector< Number > &dst, const LinearAlgebra::CUDAWrappers::Vector< Number > &src) const
void vmult_add(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
void vmult(LinearAlgebra::CUDAWrappers::Vector< Number > &dst, const LinearAlgebra::CUDAWrappers::Vector< Number > &src) const
std::size_t n_nonzero_elements() const