My Project
|
DILU preconditioner on the GPU. More...
#include <GpuDILU.hpp>
Public Types | |
using | matrix_type = typename std::remove_const< M >::type |
The matrix type the preconditioner is for. | |
using | domain_type = X |
The domain type of the preconditioner. | |
using | range_type = Y |
The range type of the preconditioner. | |
using | field_type = typename X::field_type |
The field type of the preconditioner. | |
using | CuMat = GpuSparseMatrix< field_type > |
The GPU matrix type. | |
Public Member Functions | |
GpuDILU (const M &A, bool splitMatrix, bool tuneKernels) | |
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 | computeDiagAndMoveReorderedData (int moveThreadBlockSize, 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 |
Static Public Member Functions | |
static constexpr bool | shouldCallPre () |
static constexpr bool | shouldCallPost () |
DILU preconditioner on the GPU.
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. |
|
explicit |
Constructor.
Constructor gets all parameters to operate the prec.
A | The matrix to operate on. |
w | The relaxation factor. |
|
inlineoverridevirtual |
Implements Dune::PreconditionerWithUpdate< X, Y >.
|
override |
Post processing.
|
override |
Prepare the preconditioner.
|
inlinestaticconstexpr |
|
inlinestaticconstexpr |
|
finalvirtual |
Updates the matrix data.
Implements Dune::PreconditionerWithUpdate< X, Y >.