|
| template<typename T = M, typename std::enable_if_t< is_gpu_matrix_v< T >, int > = 0> |
| | GpuSeqILU0 (const M &A, field_type w) |
| | Constructor.
|
| template<typename T = M, typename std::enable_if_t<!is_gpu_matrix_v< T >, int > = 0> |
| | GpuSeqILU0 (const M &A, field_type w) |
| | 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 |
| | Post processing.
|
|
virtual Dune::SolverCategory::Category | category () const override |
| | Category of the preconditioner (see SolverCategory::Category).
|
| virtual void | update () override |
| | Updates the matrix data.
|
| virtual bool | hasPerfectUpdate () const override |
template<class M, class X, class Y, int l = 1>
class Opm::gpuistl::GpuSeqILU0< M, X, Y, l >
Sequential ILU0 preconditioner on the GPU through the CuSparse library.
This implementation calls the CuSparse functions, which in turn essentially does a level decomposition to get some parallelism.
- Note
- This is not expected to be a fast preconditioner.
- Template Parameters
-
| M | The matrix type to operate on |
| X | Type of the update |
| Y | Type of the defect |
| l | Ignored. Just there to have the same number of template arguments as other preconditioners. |
- Note
- We assume X and Y are both GpuVector<real_type>, but we leave them as template arguments in case of future additions.
template<class M, class X, class Y, int l>
template<typename T, typename std::enable_if_t< is_gpu_matrix_v< T >, int >>
Constructor.
Constructor gets all parameters to operate the prec.
- Parameters
-
| A | The matrix to operate on. |
| w | The relaxation factor. |
template<class M, class X, class Y, int l = 1>
template<typename T = M, typename std::enable_if_t<!is_gpu_matrix_v< T >, int > = 0>
Constructor.
Constructor gets all parameters to operate the prec.
- Parameters
-
| A | The matrix to operate on. |
| w | The relaxation factor. |