Loading...
Searching...
No Matches
Opm::Accelerator::rocsparseSolverBackend< Scalar, block_size > Class Template Reference

This class implements a rocsparse-based ilu0-bicgstab solver on GPU. More...

`#include <rocsparseSolverBackend.hpp>`

Inheritance diagram for Opm::Accelerator::rocsparseSolverBackend< Scalar, block_size >:

## Public Member Functions

| rocsparseSolverBackend (int linear_solver_verbosity, int maxit, Scalar tolerance, unsigned int platformID, unsigned int deviceID, std::string linsolver)
| Construct a rocsparseSolver.
| rocsparseSolverBackend (int linear_solver_verbosity, int maxit, Scalar tolerance, bool opencl_ilu_reorder)
| For the CPR coarse solver.
| ~rocsparseSolverBackend ()
| Destroy a openclSolver, and free memory.
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.
void | get_result (Scalar *x) override
| Get result after linear solve, and peform postprocessing if necessary.
Public Member Functions inherited from Opm::Accelerator::GpuSolver< Scalar, block_size >
| GpuSolver (int linear_solver_verbosity, int max_it, Scalar tolerance_)
| Construct a GpuSolver.
| GpuSolver (int linear_solver_verbosity, int max_it, Scalar tolerance_, unsigned int deviceID_)
| GpuSolver (int linear_solver_verbosity, int max_it, double tolerance_, unsigned int platformID_, unsigned int deviceID_)
virtual | ~GpuSolver ()=default
| Define virtual destructor, so that the derivedclass destructor will be called.

## Additional Inherited Members

Protected Attributes inherited from Opm::Accelerator::GpuSolver< Scalar, block_size >
int | verbosity = 0
int | maxit = 200
Scalar | tolerance = 1e-2
int | N
int | Nb
int | nnz
int | nnzb
unsigned int | platformID = 0
unsigned int | deviceID = 0
bool | initialized = false

## Detailed Description

template<class Scalar, unsigned int block_size>
class Opm::Accelerator::rocsparseSolverBackend< Scalar, block_size >

This class implements a rocsparse-based ilu0-bicgstab solver on GPU.

## Constructor & Destructor Documentation

## rocsparseSolverBackend()

template<class Scalar, unsigned int block_size>

Opm::Accelerator::rocsparseSolverBackend< Scalar, block_size >::rocsparseSolverBackend | ( | int | linear_solver_verbosity,
|  | int | maxit,
|  | Scalar | tolerance,
|  | unsigned int | platformID,
|  | unsigned int | deviceID,
|  | std::string | linsolver )

Construct a rocsparseSolver.

Parameters

  [in] | linear_solver_verbosity | verbosity of rocsparseSolver
  [in] | maxit | maximum number of iterations for rocsparseSolver
  [in] | tolerance | required relative tolerance for rocsparseSolver
  [in] | platformID | the OpenCL platform to be used
  [in] | deviceID | the device to be used
  [in] | linsolver | indicating the preconditioner, equal to the –linear-solver cmdline argument

## Member Function Documentation

## get_result()

template<class Scalar, unsigned int block_size>

void Opm::Accelerator::rocsparseSolverBackend< Scalar, block_size >::get_result | ( | Scalar * | x | ) |

override virtual

Get result after linear solve, and peform postprocessing if necessary.

Parameters

  [in,out] | x | resulting x vector, caller must guarantee that x points to a valid array

Implements Opm::Accelerator::GpuSolver< Scalar, block_size >.

## solve_system()

template<class Scalar, unsigned int block_size>

SolverStatus Opm::Accelerator::rocsparseSolverBackend< Scalar, block_size >::solve_system | ( | std::shared_ptr< BlockedMatrix< Scalar > > | matrix,
|  | Scalar * | b,
|  | std::shared_ptr< BlockedMatrix< Scalar > > | jacMatrix,
|  | WellContributions< Scalar > & | wellContribs,
|  | GpuResult & | res )

override virtual

Solve linear system, A*x = b, matrix A must be in blocked-CSR format.

Parameters

  [in] | matrix | matrix A
  [in] | b | input vector, contains N values
  [in] | jacMatrix | matrix for preconditioner
  [in] | wellContribs | WellContributions, to apply them separately, instead of adding them to matrix A
  [in,out] | res | summary of solver result

Returns
  status code

Implements Opm::Accelerator::GpuSolver< Scalar, block_size >.

The documentation for this class was generated from the following files:

- opm/simulators/linalg/gpubridge/rocm/rocsparseSolverBackend.hpp
- opm/simulators/linalg/gpubridge/rocm/rocsparseSolverBackend.cpp