194 const unsigned int n_rows,
195 const unsigned int nnz,
196 cusparseMatDescr_t descr,
225 const unsigned int n_rows,
227 cusparseMatDescr_t descr,
266 matrix.n_nonzero_elements(),
294 matrix.n_nonzero_elements(),
310 template <
typename Number>
313 cusolverDnHandle_t cusolver_dn_handle,
315 const Number *
b_dev,
319 unsigned int const m =
matrix.m();
320 unsigned int const n =
matrix.n();
356 ExcMessage(
"There was a problem during the LU factorization"));
381 template <
typename Number>
385 const Number *
b_dev,
391 const unsigned int nnz =
matrix.n_nonzero_elements();
392 const unsigned int n_rows =
matrix.m();
401 std::vector<Number>
b_host(n_rows);
403 std::vector<Number>
x_host(n_rows);
423 template <
typename Number>
425 const std::string &solver_type)
426 : solver_type(solver_type)
431 template <
typename Number>
442 template <
typename Number>
446 return solver_control;
451 template <
typename Number>
458 if (additional_data.solver_type ==
"Cholesky")
463 else if (additional_data.solver_type ==
"LU_dense")
465 cuda_handle.cusolver_dn_handle,
469 else if (additional_data.solver_type ==
"LU_host")
477 additional_data.solver_type +
" is invalid."));
480 solver_control.check(0, 0);
value_type * data() const noexcept
SolverControl & solver_control
const Utilities::CUDA::Handle & cuda_handle
SolverDirect(const Utilities::CUDA::Handle &handle, SolverControl &cn, const AdditionalData &data=AdditionalData())
const AdditionalData additional_data
void solve(const SparseMatrix< Number > &A, LinearAlgebra::CUDAWrappers::Vector< Number > &x, const LinearAlgebra::CUDAWrappers::Vector< Number > &b)
SolverControl & control() const
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
#define AssertCusparse(error_code)
#define Assert(cond, exc)
#define AssertCusolver(error_code)
#define AssertCuda(error_code)
static ::ExceptionBase & ExcMessage(std::string arg1)
#define AssertThrow(cond, exc)
@ matrix
Contents is actually a matrix.
void malloc(T *&pointer, const unsigned int n_elements)
void copy_to_host(const ArrayView< const T, MemorySpace::CUDA > &in, ArrayView< T, MemorySpace::Host > &out)
void copy_to_dev(const ArrayView< const T, MemorySpace::Host > &in, ArrayView< T, MemorySpace::CUDA > &out)
AdditionalData(const std::string &solver_type="LU_dense")