20 #ifndef OPM_ROCSPARSEPRECONDITIONER_HEADER_INCLUDED 21 #define OPM_ROCSPARSEPRECONDITIONER_HEADER_INCLUDED 23 #include <opm/simulators/linalg/gpubridge/Preconditioner.hpp> 25 #include <rocsparse/rocsparse.h> 26 #include <rocblas/rocblas.h> 30 template<
class Scalar>
class BlockedMatrix;
32 template <
class Scalar,
unsigned int block_size>
37 rocsparse_handle handle;
38 rocblas_handle blas_handle;
39 rocsparse_direction dir = rocsparse_direction_row;
40 rocsparse_operation operation = rocsparse_operation_none;
41 rocsparse_mat_descr descr_L, descr_U;
52 bool useJacMatrix =
false;
53 std::shared_ptr<BlockedMatrix<Scalar>> jacMat{};
57 static std::unique_ptr<rocsparsePreconditioner<Scalar, block_size>> create(PreconditionerType type,
62 rocsparse_int* d_Arows,
63 rocsparse_int* d_Acols) = 0;
65 virtual void copy_system_to_gpu(Scalar* b) = 0;
72 void set_matrix_analysis(rocsparse_mat_descr descr_L,
73 rocsparse_mat_descr descr_U);
75 void set_context(rocsparse_handle handle,
76 rocblas_handle blas_handle,
77 rocsparse_direction dir,
78 rocsparse_operation operation,
virtual void update_system_on_gpu(Scalar *vals, Scalar *b)=0
Update linear system to GPU.
Definition: amgclSolverBackend.cpp:49
Definition: Preconditioner.hpp:42
Definition: rocsparsePreconditioner.hpp:33
This struct resembles a blocked csr matrix, like Dune::BCRSMatrix.
Definition: BlockedMatrix.hpp:28