20 #ifndef OPM_GPUSOLVER_BACKEND_HEADER_INCLUDED 21 #define OPM_GPUSOLVER_BACKEND_HEADER_INCLUDED 24 #include <opm/simulators/linalg/gpubridge/GpuResult.hpp> 25 #include <opm/simulators/linalg/gpubridge/BlockedMatrix.hpp> 31 template<
class Scalar>
class WellContributions;
33 namespace Accelerator {
35 enum class SolverStatus {
37 GPU_SOLVER_ANALYSIS_FAILED,
38 GPU_SOLVER_CREATE_PRECONDITIONER_FAILED,
39 GPU_SOLVER_UNKNOWN_ERROR
44 template<
class Scalar,
unsigned int block_size>
56 Scalar tolerance = 1e-2;
63 unsigned int platformID = 0;
64 unsigned int deviceID = 0;
66 bool initialized =
false;
73 GpuSolver(
int linear_solver_verbosity,
int max_it, Scalar tolerance_)
74 : verbosity(linear_solver_verbosity)
76 , tolerance(tolerance_)
78 GpuSolver(
int linear_solver_verbosity,
int max_it,
79 Scalar tolerance_,
unsigned int deviceID_)
80 : verbosity(linear_solver_verbosity)
82 , tolerance(tolerance_)
83 , deviceID(deviceID_) {};
84 GpuSolver(
int linear_solver_verbosity,
int max_it,
85 double tolerance_,
unsigned int platformID_,
86 unsigned int deviceID_)
87 : verbosity(linear_solver_verbosity)
89 , tolerance(tolerance_)
90 , platformID(platformID_)
98 virtual SolverStatus
solve_system(std::shared_ptr<BlockedMatrix<Scalar>> matrix,
100 std::shared_ptr<BlockedMatrix<Scalar>> jacMatrix,
101 WellContributions<Scalar>& wellContribs,
104 virtual void get_result(Scalar* x) = 0;
virtual ~GpuSolver()=default
Define virtual destructor, so that the derivedclass destructor will be called.
virtual SolverStatus solve_system(std::shared_ptr< BlockedMatrix< Scalar >> matrix, Scalar *b, std::shared_ptr< BlockedMatrix< Scalar >> jacMatrix, WellContributions< Scalar > &wellContribs, GpuResult &res)=0
Define as pure virtual functions, so derivedclass must implement them.
This file contains a set of helper functions used by VFPProd / VFPInj.
Definition: blackoilbioeffectsmodules.hh:45
GpuSolver(int linear_solver_verbosity, int max_it, Scalar tolerance_)
Construct a GpuSolver.
Definition: GpuSolver.hpp:73
This class serves to simplify choosing between different backend solvers, such as cusparseSolver and ...
Definition: GpuSolver.hpp:45