Ifpack2 Templated Preconditioning Package
Version 1.0
|
Classes | |
struct | ImplNotAvailTag |
struct | ImplObject |
forward declaration More... | |
struct | is_cuda |
struct | ArrayValueType |
struct | SumReducer |
struct | ImplType |
struct | BlockTridiags |
struct | AmD |
struct | ExtractAndFactorizeTridiagsDefaultModeAndAlgo |
struct | MultiVectorConverter |
struct | SolveTridiagsDefaultModeAndAlgo |
struct | NormManager |
Typedefs | |
using | do_not_initialize_tag = Kokkos::ViewAllocateWithoutInitializing |
Functions | |
template<typename CommPtrType > | |
std::string | get_msg_prefix (const CommPtrType &comm) |
template<typename MatrixType > | |
Teuchos::RCP< const typename ImplType< MatrixType > ::tpetra_import_type > | createBlockCrsTpetraImporter (const Teuchos::RCP< const typename ImplType< MatrixType >::tpetra_block_crs_matrix_type > &A) |
template<typename MatrixType > | |
Teuchos::RCP< AsyncableImport < MatrixType > > | createBlockCrsAsyncImporter (const Teuchos::RCP< const typename ImplType< MatrixType >::tpetra_block_crs_matrix_type > &A) |
template<typename MatrixType > | |
PartInterface< MatrixType > | createPartInterface (const Teuchos::RCP< const typename ImplType< MatrixType >::tpetra_block_crs_matrix_type > &A, const Teuchos::Array< Teuchos::Array< typename ImplType< MatrixType >::local_ordinal_type > > &partitions) |
template<typename MatrixType > | |
BlockTridiags< MatrixType > | createBlockTridiags (const PartInterface< MatrixType > &interf) |
template<typename MatrixType > | |
void | performSymbolicPhase (const Teuchos::RCP< const typename ImplType< MatrixType >::tpetra_block_crs_matrix_type > &A, const PartInterface< MatrixType > &interf, BlockTridiags< MatrixType > &btdm, AmD< MatrixType > &amd, const bool overlap_communication_and_computation) |
template<typename MatrixType > | |
void | performNumericPhase (const Teuchos::RCP< const typename ImplType< MatrixType >::tpetra_block_crs_matrix_type > &A, const PartInterface< MatrixType > &interf, BlockTridiags< MatrixType > &btdm, const typename ImplType< MatrixType >::magnitude_type tiny) |
static int | ComputeResidualVectorRecommendedCudaVectorSize (const int blksize, const int team_size) |
template<typename MatrixType > | |
int | applyInverseJacobi (const Teuchos::RCP< const typename ImplType< MatrixType >::tpetra_block_crs_matrix_type > &A, const Teuchos::RCP< const typename ImplType< MatrixType >::tpetra_import_type > &tpetra_importer, const Teuchos::RCP< AsyncableImport< MatrixType > > &async_importer, const bool overlap_communication_and_computation, const typename ImplType< MatrixType >::tpetra_multivector_type &X, typename ImplType< MatrixType >::tpetra_multivector_type &Y, typename ImplType< MatrixType >::tpetra_multivector_type &Z, typename ImplType< MatrixType >::impl_scalar_type_1d_view &W, const PartInterface< MatrixType > &interf, const BlockTridiags< MatrixType > &btdm, const AmD< MatrixType > &amd, typename ImplType< MatrixType >::vector_type_1d_view &work, NormManager< MatrixType > &norm_manager, const typename ImplType< MatrixType >::impl_scalar_type &damping_factor, bool is_y_zero, const int max_num_sweeps, const typename ImplType< MatrixType >::magnitude_type tol, const int check_tol_every) |
Impl Tag
using Ifpack2::BlockTriDiContainerDetails::do_not_initialize_tag = typedef Kokkos::ViewAllocateWithoutInitializing |
view decorators for unmanaged and const memory
std::string Ifpack2::BlockTriDiContainerDetails::get_msg_prefix | ( | const CommPtrType & | comm | ) |
utility functions
Teuchos::RCP<const typename ImplType<MatrixType>::tpetra_import_type> Ifpack2::BlockTriDiContainerDetails::createBlockCrsTpetraImporter | ( | const Teuchos::RCP< const typename ImplType< MatrixType >::tpetra_block_crs_matrix_type > & | A | ) |
setup sequential importer
Teuchos::RCP<AsyncableImport<MatrixType> > Ifpack2::BlockTriDiContainerDetails::createBlockCrsAsyncImporter | ( | const Teuchos::RCP< const typename ImplType< MatrixType >::tpetra_block_crs_matrix_type > & | A | ) |
setup async importer
PartInterface<MatrixType> Ifpack2::BlockTriDiContainerDetails::createPartInterface | ( | const Teuchos::RCP< const typename ImplType< MatrixType >::tpetra_block_crs_matrix_type > & | A, |
const Teuchos::Array< Teuchos::Array< typename ImplType< MatrixType >::local_ordinal_type > > & | partitions | ||
) |
setup part interface using the container partitions array
BlockTridiags<MatrixType> Ifpack2::BlockTriDiContainerDetails::createBlockTridiags | ( | const PartInterface< MatrixType > & | interf | ) |
block tridiags initialization from part interface
void Ifpack2::BlockTriDiContainerDetails::performSymbolicPhase | ( | const Teuchos::RCP< const typename ImplType< MatrixType >::tpetra_block_crs_matrix_type > & | A, |
const PartInterface< MatrixType > & | interf, | ||
BlockTridiags< MatrixType > & | btdm, | ||
AmD< MatrixType > & | amd, | ||
const bool | overlap_communication_and_computation | ||
) |
symbolic phase, on host : create R = A - D, pack D
void Ifpack2::BlockTriDiContainerDetails::performNumericPhase | ( | const Teuchos::RCP< const typename ImplType< MatrixType >::tpetra_block_crs_matrix_type > & | A, |
const PartInterface< MatrixType > & | interf, | ||
BlockTridiags< MatrixType > & | btdm, | ||
const typename ImplType< MatrixType >::magnitude_type | tiny | ||
) |
top level numeric interface
|
inlinestatic |
compute local residula vector y = b - R x
int Ifpack2::BlockTriDiContainerDetails::applyInverseJacobi | ( | const Teuchos::RCP< const typename ImplType< MatrixType >::tpetra_block_crs_matrix_type > & | A, |
const Teuchos::RCP< const typename ImplType< MatrixType >::tpetra_import_type > & | tpetra_importer, | ||
const Teuchos::RCP< AsyncableImport< MatrixType > > & | async_importer, | ||
const bool | overlap_communication_and_computation, | ||
const typename ImplType< MatrixType >::tpetra_multivector_type & | X, | ||
typename ImplType< MatrixType >::tpetra_multivector_type & | Y, | ||
typename ImplType< MatrixType >::tpetra_multivector_type & | Z, | ||
typename ImplType< MatrixType >::impl_scalar_type_1d_view & | W, | ||
const PartInterface< MatrixType > & | interf, | ||
const BlockTridiags< MatrixType > & | btdm, | ||
const AmD< MatrixType > & | amd, | ||
typename ImplType< MatrixType >::vector_type_1d_view & | work, | ||
NormManager< MatrixType > & | norm_manager, | ||
const typename ImplType< MatrixType >::impl_scalar_type & | damping_factor, | ||
bool | is_y_zero, | ||
const int | max_num_sweeps, | ||
const typename ImplType< MatrixType >::magnitude_type | tol, | ||
const int | check_tol_every | ||
) |
top level apply interface