|
| | PreconditionerAdapter (std::shared_ptr< CudaPreconditionerType > preconditioner) |
| | Constructor.
|
| virtual void | pre (X &x, Y &b) override |
| | Prepare the preconditioner.
|
| virtual void | apply (X &v, const Y &d) override |
| | Apply the preconditoner.
|
| virtual void | post (X &x) override |
| | Clean up.
|
|
Dune::SolverCategory::Category | category () const override |
| | Category of the preconditioner (see SolverCategory::Category).
|
| virtual void | update () override |
| | Calls update on the underlying CUDA preconditioner.
|
| virtual std::shared_ptr< Dune::PreconditionerWithUpdate< GpuVector< field_type >, GpuVector< field_type > > > | getUnderlyingPreconditioner () override |
| | getUnderlyingPreconditioner gets the underlying preconditioner (preconditioner being held)
|
| virtual bool | hasPerfectUpdate () const override |
template<class X, class Y, class CudaPreconditionerType>
class Opm::gpuistl::PreconditionerAdapter< X, Y, CudaPreconditionerType >
Makes a CUDA preconditioner available to a CPU simulator.
The use case for this adapter is to use a CUDA preconditioner during a linear solver that works on the CPU. The motivation for this is benchmarking new preconditioners on the GPU.
- Template Parameters
-
| X | the domain type (should be on the CPU). Typicall a Dune::BlockVector |
| Y | the range type (should be on the CPU). Typicall a Dune::BlockVector |
| CudaPreconditionerType | the preconditioner taking GpuVector<real_type> as arguments to apply |