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...
|
|
| 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 () |
| | Analysis, extract parallelism if specified.
|
| 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, WellContributions< Scalar > &wellContribs) 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 | copy_values_to_gpu (Scalar *mVals, int *mRows, int *mCols, bool reuse) |
| | Copy matrix A values to GPU.
|
| void | update_system_on_gpu (Scalar *, Scalar *b) override |
| | Update GPU values after a new assembly is done.
|
|
void | set_matrix_analysis (rocsparse_mat_descr descr_L, rocsparse_mat_descr descr_U) |
|
void | set_context (rocsparse_handle handle, rocblas_handle blas_handle, rocsparse_direction dir, rocsparse_operation operation, hipStream_t stream) |
|
void | setJacMat (const BlockedMatrix< Scalar > &jacMat) |
|
virtual void | apply (const ApplyScalar &y, ApplyScalar &x, WellContributions< Scalar > &wellContribs)=0 |
|
|
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 |
|
rocblas_handle | blas_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 |
template<class Scalar, unsigned int block_size>
class Opm::Accelerator::rocsparseBILU0< Scalar, block_size >
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.