|
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. | |
Public Member Functions inherited from Opm::Accelerator::rocsparsePreconditioner< Scalar, block_size > | |
| 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) |
Public Member Functions inherited from Opm::Accelerator::Preconditioner< Scalar, block_size, ApplyScalar > | |
| virtual void | apply (const ApplyScalar &y, ApplyScalar &x)=0 |
Additional Inherited Members | |
Static Public Member Functions inherited from Opm::Accelerator::rocsparsePreconditioner< Scalar, block_size > | |
| static std::unique_ptr< rocsparsePreconditioner< Scalar, block_size > > | create (PreconditionerType type, int verbosity) |
Static Public Member Functions inherited from Opm::Accelerator::Preconditioner< Scalar, block_size, ApplyScalar > | |
| static std::unique_ptr< Preconditioner > | create (PreconditionerType type, bool opencl_ilu_parallel, int verbosity) |
Public Attributes inherited from Opm::Accelerator::rocsparsePreconditioner< Scalar, block_size > | |
| int | nnzbs_prec = 0 |
| bool | useJacMatrix = false |
| std::shared_ptr< BlockedMatrix< Scalar > > | jacMat {} |
Protected Member Functions inherited from Opm::Accelerator::rocsparsePreconditioner< Scalar, block_size > | |
| rocsparsePreconditioner (int verbosity_) | |
Protected Member Functions inherited from Opm::Accelerator::Preconditioner< Scalar, block_size, ApplyScalar > | |
| Preconditioner (int verbosity_) | |
Protected Attributes inherited from Opm::Accelerator::rocsparsePreconditioner< Scalar, block_size > | |
| 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 |
Protected Attributes inherited from Opm::Accelerator::Preconditioner< Scalar, block_size, ApplyScalar > | |
| 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 >.