|
| 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 |