My Project
|
This class implements a Blocked ILU0 preconditioner The decomposition is done on GPU, using exact decomposition, or ChowPatel decomposition The preconditioner is applied via two exact triangular solves. More...
#include <rocsparseBILU0.hpp>
Public Member Functions | |
rocsparseBILU0 (int verbosity_) | |
bool | initialize (std::shared_ptr< BlockedMatrix< Scalar > > matrix, std::shared_ptr< BlockedMatrix< Scalar > > jacMatrix, rocsparse_int *d_Arows, rocsparse_int *d_Acols) override |
Initialize GPU and allocate memory. | |
bool | analyze_matrix (BlockedMatrix< Scalar > *mat) override |
Analysis, extract parallelism if specified. | |
bool | analyze_matrix (BlockedMatrix< Scalar > *mat, BlockedMatrix< Scalar > *jacMat) override |
Analysis, extract parallelism if specified. | |
bool | create_preconditioner (BlockedMatrix< Scalar > *mat) override |
ILU decomposition. | |
bool | create_preconditioner (BlockedMatrix< Scalar > *mat, BlockedMatrix< Scalar > *jacMat) override |
ILU decomposition. | |
void | apply (const Scalar &y, Scalar &x) override |
Apply preconditioner, x = prec(y) via Lz = y and Ux = z. | |
void | copy_system_to_gpu (Scalar *mVals) override |
Copy matrix A values to GPU. | |
void | update_system_on_gpu (Scalar *b) override |
Reassign pointers, in case the addresses of the Dune variables have changed --> TODO: check when/if we need this method. | |
![]() | |
void | set_matrix_analysis (rocsparse_mat_descr descr_L, rocsparse_mat_descr descr_U) |
void | set_context (rocsparse_handle handle, rocsparse_direction dir, rocsparse_operation operation, hipStream_t stream) |
void | setJacMat (const BlockedMatrix< Scalar > &jacMat) |
![]() | |
virtual void | apply (const ApplyScalar &y, ApplyScalar &x)=0 |
Additional Inherited Members | |
![]() | |
static std::unique_ptr< rocsparsePreconditioner< Scalar, block_size > > | create (PreconditionerType type, int verbosity) |
![]() | |
static std::unique_ptr< Preconditioner > | create (PreconditionerType type, bool opencl_ilu_parallel, int verbosity) |
![]() | |
int | nnzbs_prec = 0 |
bool | useJacMatrix = false |
std::shared_ptr< BlockedMatrix< Scalar > > | jacMat {} |
![]() | |
rocsparsePreconditioner (int verbosity_) | |
![]() | |
Preconditioner (int verbosity_) | |
![]() | |
rocsparse_handle | handle |
rocsparse_direction | dir = rocsparse_direction_row |
rocsparse_operation | operation = rocsparse_operation_none |
rocsparse_mat_descr | descr_L |
rocsparse_mat_descr | descr_U |
hipStream_t | stream |
![]() | |
int | N = 0 |
int | Nb = 0 |
int | nnz = 0 |
int | nnzb = 0 |
int | verbosity = 0 |
This class implements a Blocked ILU0 preconditioner The decomposition is done on GPU, using exact decomposition, or ChowPatel decomposition The preconditioner is applied via two exact triangular solves.
|
overridevirtual |
Analysis, extract parallelism if specified.
[in] | mat | matrix A |
Implements Opm::Accelerator::Preconditioner< Scalar, block_size, ApplyScalar >.
|
overridevirtual |
Analysis, extract parallelism if specified.
[in] | mat | matrix A |
[in] | jacMat | matrix for preconditioner, analyze this as well |
Implements Opm::Accelerator::Preconditioner< Scalar, block_size, ApplyScalar >.
|
override |
Apply preconditioner, x = prec(y) via Lz = y and Ux = z.
[in] | y | Input y vector |
[out] | x | Output x vector |
|
overridevirtual |
Copy matrix A values to GPU.
[in] | mVals | Input values |
Implements Opm::Accelerator::rocsparsePreconditioner< Scalar, block_size >.
|
overridevirtual |
ILU decomposition.
[in] | mat | matrix A to decompose |
Implements Opm::Accelerator::Preconditioner< Scalar, block_size, ApplyScalar >.
|
overridevirtual |
ILU decomposition.
[in] | mat | matrix A |
[in] | jacMat | matrix for preconditioner, decompose this one if used |
Implements Opm::Accelerator::Preconditioner< Scalar, block_size, ApplyScalar >.
|
overridevirtual |
Initialize GPU and allocate memory.
[in] | matrix | matrix A |
[in] | jacMatrix | matrix for preconditioner |
Implements Opm::Accelerator::rocsparsePreconditioner< Scalar, block_size >.
|
overridevirtual |
Reassign pointers, in case the addresses of the Dune variables have changed --> TODO: check when/if we need this method.
Update GPU values after a new assembly is done
[in] | b | New b vector |
Implements Opm::Accelerator::rocsparsePreconditioner< Scalar, block_size >.