|
| | GpuDILU (const GPUMatrix &gpuMatrix, const CPUMatrixT &cpuMatrix, bool splitMatrix, bool tuneKernels, int mixedPrecisionScheme, bool reorder) |
| | Constructor.
|
| void | pre (X &x, Y &b) override |
| | Prepare the preconditioner.
|
|
void | apply (X &v, const Y &d) override |
| | Apply the preconditoner.
|
| void | post (X &x) override |
| | Post processing.
|
|
Dune::SolverCategory::Category | category () const override |
| | Category of the preconditioner (see SolverCategory::Category).
|
| void | update () final |
| | Updates the matrix data.
|
|
void | reorderAndSplitMatrix (int moveThreadBlockSize) |
| | perform matrix splitting and reordering
|
|
void | computeDiagonal (int factorizationThreadBlockSize) |
| | Compute the diagonal of the DILU, and update the data of the reordered matrix.
|
|
void | tuneThreadBlockSizes () |
| | function that will experimentally tune the thread block sizes of the important cuda kernels
|
| virtual bool | hasPerfectUpdate () const override |
template<class CPUMatrixT, class X, class Y, int l = 1>
class Opm::gpuistl::GpuDILU< CPUMatrixT, X, Y, l >
DILU preconditioner on the GPU.
- Template Parameters
-
| CPUMatrixT | Type of the matrix on the CPU |
| 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. |
- Todo
- Remove the reliance on CPUMatrix. We should be able to use the GPU matrix type directly.
- Note
- We assume X and Y are both GpuVector<real_type>, but we leave them as template arguments in case of future additions.