29 template <
typename Number>
34 const cusparseMatDescr_t ,
39 cusparseSolvePolicy_t ,
51 const cusparseMatDescr_t
descrA,
56 cusparseSolvePolicy_t policy,
76 const cusparseMatDescr_t
descrA,
81 cusparseSolvePolicy_t policy,
156 template <
typename Number>
161 const cusparseMatDescr_t ,
166 cusparseSolvePolicy_t ,
178 const cusparseMatDescr_t
descrA,
183 cusparseSolvePolicy_t policy,
203 const cusparseMatDescr_t
descrA,
208 cusparseSolvePolicy_t policy,
283 template <
typename Number>
288 const cusparseMatDescr_t ,
304 const cusparseMatDescr_t
descrA,
327 const cusparseMatDescr_t
descrA,
399 template <
typename Number>
404 const cusparseMatDescr_t ,
409 cusparseSolvePolicy_t ,
421 const cusparseMatDescr_t
descrA,
426 cusparseSolvePolicy_t policy,
446 const cusparseMatDescr_t
descrA,
451 cusparseSolvePolicy_t policy,
526 template <
typename Number>
533 const cusparseMatDescr_t ,
540 cusparseSolvePolicy_t ,
554 const cusparseMatDescr_t
descra,
561 cusparseSolvePolicy_t policy,
586 const double *
alpha,
587 const cusparseMatDescr_t
descra,
594 cusparseSolvePolicy_t policy,
689 template <
typename Number>
695 const cusparseMatDescr_t ,
700 cusparseSolvePolicy_t ,
713 const cusparseMatDescr_t
descrA,
718 cusparseSolvePolicy_t policy,
740 const cusparseMatDescr_t
descrA,
745 cusparseSolvePolicy_t policy,
824 template <
typename Number>
829 const cusparseMatDescr_t ,
834 cusparseSolvePolicy_t ,
846 const cusparseMatDescr_t
descrA,
851 cusparseSolvePolicy_t policy,
871 const cusparseMatDescr_t
descrA,
876 cusparseSolvePolicy_t policy,
951 template <
typename Number>
957 const cusparseMatDescr_t ,
974 const cusparseMatDescr_t
descrA,
999 const cusparseMatDescr_t
descrA,
1078 template <
typename Number>
1083 const cusparseMatDescr_t ,
1099 const cusparseMatDescr_t
descrA,
1122 const cusparseMatDescr_t
descrA,
1191 template <
typename Number>
1199 template <
typename Number>
1248 template <
typename Number>
1270 template <
typename Number>
1289 n_nonzero_elements = A.n_nonzero_elements();
1292 matrix_pointer = &A;
1298 std::ignore) = A.get_cusparse_matrix();
1302 Utilities::CUDA::allocate_device_data<Number>(n_nonzero_elements));
1305 n_nonzero_elements *
sizeof(Number),
1310 tmp_dev.reset(Utilities::CUDA::allocate_device_data<Number>(n_rows));
1356 buffer_dev.reset(
static_cast<void *
>(
1357 Utilities::CUDA::allocate_device_data<char>(
BufferSize /
sizeof(
char))));
1429 template <
typename Number>
1483 template <
typename Number>
1495 template <
typename Number>
1503 template <
typename Number>
1567 template <
typename Number>
1592 template <
typename Number>
1610 matrix_pointer = &A;
1612 n_nonzero_elements = A.n_nonzero_elements();
1620 std::ignore) = A.get_cusparse_matrix();
1624 Utilities::CUDA::allocate_device_data<Number>(n_nonzero_elements));
1627 n_nonzero_elements *
sizeof(Number),
1632 tmp_dev.reset(Utilities::CUDA::allocate_device_data<Number>(n_rows));
1678 buffer_dev.reset(
static_cast<void *
>(
1679 Utilities::CUDA::allocate_device_data<char>(
BufferSize /
sizeof(
char))));
1750 template <
typename Number>
1805 template <
typename Number>
cusparseSolvePolicy_t policy_M
std::unique_ptr< Number[], void(*)(Number *)> P_val_dev
void Tvmult(LinearAlgebra::CUDAWrappers::Vector< Number > &dst, const LinearAlgebra::CUDAWrappers::Vector< Number > &src) const
std::unique_ptr< Number[], void(*)(Number *)> tmp_dev
const int * P_row_ptr_dev
void initialize(const SparseMatrix< Number > &matrix, const AdditionalData &additional_data=AdditionalData())
cusparseSolvePolicy_t policy_Lt
const int * P_column_index_dev
cusparseSolvePolicy_t policy_L
void vmult(LinearAlgebra::CUDAWrappers::Vector< Number > &dst, const LinearAlgebra::CUDAWrappers::Vector< Number > &src) const
PreconditionIC(const Utilities::CUDA::Handle &handle)
std::unique_ptr< void, void(*)(void *)> buffer_dev
cusparseHandle_t cusparse_handle
cusparseMatDescr_t descr_L
cusparseMatDescr_t descr_M
cusparseMatDescr_t descr_U
const int * P_row_ptr_dev
cusparseSolvePolicy_t policy_M
void vmult(LinearAlgebra::CUDAWrappers::Vector< Number > &dst, const LinearAlgebra::CUDAWrappers::Vector< Number > &src) const
std::unique_ptr< void, void(*)(void *)> buffer_dev
void initialize(const SparseMatrix< Number > &matrix, const AdditionalData &additional_data=AdditionalData())
cusparseMatDescr_t descr_M
cusparseHandle_t cusparse_handle
cusparseSolvePolicy_t policy_U
PreconditionILU(const Utilities::CUDA::Handle &handle)
std::unique_ptr< Number[], void(*)(Number *)> P_val_dev
std::unique_ptr< Number[], void(*)(Number *)> tmp_dev
const int * P_column_index_dev
void Tvmult(LinearAlgebra::CUDAWrappers::Vector< Number > &dst, const LinearAlgebra::CUDAWrappers::Vector< Number > &src) const
cusparseMatDescr_t descr_L
cusparseSolvePolicy_t policy_L
Number * get_values() const
virtual size_type size() const override
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
#define AssertCusparse(error_code)
static ::ExceptionBase & ExcNotImplemented()
#define Assert(cond, exc)
#define AssertDimension(dim1, dim2)
#define AssertNothrowCusparse(error_code)
static ::ExceptionBase & ExcInternalError()
#define AssertCuda(error_code)
static ::ExceptionBase & ExcNotInitialized()
#define AssertThrow(cond, exc)
::VectorizedArray< Number, width > max(const ::VectorizedArray< Number, width > &, const ::VectorizedArray< Number, width > &)
AdditionalData(bool use_level_analysis=true)
AdditionalData(bool use_level_analysis=true)
static constexpr DEAL_II_HOST_DEVICE_ALWAYS_INLINE const T & value(const T &t)