20 #ifndef OPM_ROCALUTIONSOLVER_BACKEND_HEADER_INCLUDED 21 #define OPM_ROCALUTIONSOLVER_BACKEND_HEADER_INCLUDED 23 #include <opm/simulators/linalg/gpubridge/GpuResult.hpp> 24 #include <opm/simulators/linalg/gpubridge/GpuSolver.hpp> 25 #include <opm/simulators/linalg/gpubridge/WellContributions.hpp> 28 template<
class Matrix,
class Vector,
class Scalar>
class BiCGStab;
29 template<
class Matrix,
class Vector,
class Scalar>
class ILU;
38 template<
class Scalar,
unsigned int block_size>
47 using Base::verbosity;
48 using Base::platformID;
51 using Base::tolerance;
52 using Base::initialized;
55 std::vector<Scalar> h_x;
58 Scalar* tmp_nnzvalues;
63 std::unique_ptr<rocalution::ILU<Mat,Vec,Scalar>> roc_prec;
64 std::unique_ptr<rocalution::BiCGStab<Mat,Vec,Scalar>> roc_solver;
82 int maxit, Scalar tolerance);
Definition: rocalutionSolverBackend.hpp:27
Definition: rocalutionSolverBackend.hpp:31
Definition: rocalutionSolverBackend.hpp:29
Definition: amgclSolverBackend.cpp:49
~rocalutionSolverBackend()
Destroy a rocalutionSolver, and free memory.
Definition: rocalutionSolverBackend.cpp:70
This class implements a rocalution based linear solver solver on GPU It uses ilu0-bicgstab.
Definition: rocalutionSolverBackend.hpp:39
void get_result(Scalar *x) override
Get result after linear solve, and peform postprocessing if necessary.
Definition: rocalutionSolverBackend.cpp:141
This class is based on InverseOperatorResult struct from dune/istl/solver.hh It is needed to prevent ...
Definition: GpuResult.hpp:30
Definition: rocalutionSolverBackend.hpp:28
rocalutionSolverBackend(int linear_solver_verbosity, int maxit, Scalar tolerance)
Construct a rocalutionSolver also initialize rocalution library and rocalution variables.
Definition: rocalutionSolverBackend.cpp:56
This class serves to eliminate the need to include the WellContributions into the matrix (with –matr...
Definition: GpuBridge.hpp:30
SolverStatus solve_system(std::shared_ptr< BlockedMatrix< Scalar >> matrix, Scalar *b, std::shared_ptr< BlockedMatrix< Scalar >> jacMatrix, WellContributions< Scalar > &wellContribs, GpuResult &res) override
Solve linear system, A*x = b, matrix A must be in blocked-CSR format.
Definition: rocalutionSolverBackend.cpp:156
This struct resembles a blocked csr matrix, like Dune::BCRSMatrix.
Definition: BlockedMatrix.hpp:28
Definition: rocalutionSolverBackend.hpp:30
This class serves to simplify choosing between different backend solvers, such as cusparseSolver and ...
Definition: GpuSolver.hpp:45