Ifpack2 Templated Preconditioning Package
Version 1.0
|
Classes | |
struct | ImplNotAvailTag |
struct | ImplObject |
forward declaration More... | |
struct | BlockTridiagScalarType |
struct | BlockTridiags |
struct | ExtractAndFactorizeTridiagsDefaultModeAndAlgo |
struct | MultiVectorConverter |
struct | SolveTridiagsDefaultModeAndAlgo< Kokkos::HostSpace > |
Typedefs | |
using | do_not_initialize_tag = Kokkos::ViewAllocateWithoutInitializing |
Functions | |
template<typename MatrixType > | |
Teuchos::RCP< const typename BlockHelperDetails::ImplType < MatrixType > ::tpetra_import_type > | createBlockCrsTpetraImporter (const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_row_matrix_type > &A) |
template<typename MatrixType > | |
Teuchos::RCP< AsyncableImport < MatrixType > > | createBlockCrsAsyncImporter (const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_row_matrix_type > &A) |
template<typename MatrixType > | |
BlockHelperDetails::PartInterface < MatrixType > | createPartInterface (const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_row_matrix_type > &A, const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_crs_graph_type > &G, const Teuchos::Array< Teuchos::Array< typename BlockHelperDetails::ImplType< MatrixType >::local_ordinal_type > > &partitions, const typename BlockHelperDetails::ImplType< MatrixType >::local_ordinal_type n_subparts_per_part_in) |
template<typename MatrixType > | |
BlockTridiags< MatrixType > | createBlockTridiags (const BlockHelperDetails::PartInterface< MatrixType > &interf) |
template<typename MatrixType > | |
void | performSymbolicPhase (const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_row_matrix_type > &A, const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_crs_graph_type > &g, const BlockHelperDetails::PartInterface< MatrixType > &interf, BlockTridiags< MatrixType > &btdm, BlockHelperDetails::AmD< MatrixType > &amd, const bool overlap_communication_and_computation) |
template<typename MatrixType > | |
void | performNumericPhase (const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_row_matrix_type > &A, const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_crs_graph_type > &G, const BlockHelperDetails::PartInterface< MatrixType > &interf, BlockTridiags< MatrixType > &btdm, const typename BlockHelperDetails::ImplType< MatrixType >::magnitude_type tiny) |
template<typename MatrixType > | |
int | applyInverseJacobi (const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_row_matrix_type > &A, const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_crs_graph_type > &G, const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_import_type > &tpetra_importer, const Teuchos::RCP< AsyncableImport< MatrixType > > &async_importer, const bool overlap_communication_and_computation, const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_multivector_type &X, typename BlockHelperDetails::ImplType< MatrixType >::tpetra_multivector_type &Y, typename BlockHelperDetails::ImplType< MatrixType >::tpetra_multivector_type &Z, typename BlockHelperDetails::ImplType< MatrixType >::impl_scalar_type_1d_view &W, const BlockHelperDetails::PartInterface< MatrixType > &interf, const BlockTridiags< MatrixType > &btdm, const BlockHelperDetails::AmD< MatrixType > &amd, typename BlockHelperDetails::ImplType< MatrixType >::vector_type_1d_view &work, BlockHelperDetails::NormManager< MatrixType > &norm_manager, const typename BlockHelperDetails::ImplType< MatrixType >::impl_scalar_type &damping_factor, bool is_y_zero, const int max_num_sweeps, const typename BlockHelperDetails::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
Teuchos::RCP<const typename BlockHelperDetails::ImplType<MatrixType>::tpetra_import_type> Ifpack2::BlockTriDiContainerDetails::createBlockCrsTpetraImporter | ( | const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_row_matrix_type > & | A | ) |
setup sequential importer
Teuchos::RCP<AsyncableImport<MatrixType> > Ifpack2::BlockTriDiContainerDetails::createBlockCrsAsyncImporter | ( | const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_row_matrix_type > & | A | ) |
setup async importer
BlockHelperDetails::PartInterface<MatrixType> Ifpack2::BlockTriDiContainerDetails::createPartInterface | ( | const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_row_matrix_type > & | A, |
const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_crs_graph_type > & | G, | ||
const Teuchos::Array< Teuchos::Array< typename BlockHelperDetails::ImplType< MatrixType >::local_ordinal_type > > & | partitions, | ||
const typename BlockHelperDetails::ImplType< MatrixType >::local_ordinal_type | n_subparts_per_part_in | ||
) |
setup part interface using the container partitions array
BlockTridiags<MatrixType> Ifpack2::BlockTriDiContainerDetails::createBlockTridiags | ( | const BlockHelperDetails::PartInterface< MatrixType > & | interf | ) |
block tridiags initialization from part interface
void Ifpack2::BlockTriDiContainerDetails::performSymbolicPhase | ( | const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_row_matrix_type > & | A, |
const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_crs_graph_type > & | g, | ||
const BlockHelperDetails::PartInterface< MatrixType > & | interf, | ||
BlockTridiags< MatrixType > & | btdm, | ||
BlockHelperDetails::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 BlockHelperDetails::ImplType< MatrixType >::tpetra_row_matrix_type > & | A, |
const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_crs_graph_type > & | G, | ||
const BlockHelperDetails::PartInterface< MatrixType > & | interf, | ||
BlockTridiags< MatrixType > & | btdm, | ||
const typename BlockHelperDetails::ImplType< MatrixType >::magnitude_type | tiny | ||
) |
top level numeric interface
int Ifpack2::BlockTriDiContainerDetails::applyInverseJacobi | ( | const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_row_matrix_type > & | A, |
const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_crs_graph_type > & | G, | ||
const Teuchos::RCP< const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_import_type > & | tpetra_importer, | ||
const Teuchos::RCP< AsyncableImport< MatrixType > > & | async_importer, | ||
const bool | overlap_communication_and_computation, | ||
const typename BlockHelperDetails::ImplType< MatrixType >::tpetra_multivector_type & | X, | ||
typename BlockHelperDetails::ImplType< MatrixType >::tpetra_multivector_type & | Y, | ||
typename BlockHelperDetails::ImplType< MatrixType >::tpetra_multivector_type & | Z, | ||
typename BlockHelperDetails::ImplType< MatrixType >::impl_scalar_type_1d_view & | W, | ||
const BlockHelperDetails::PartInterface< MatrixType > & | interf, | ||
const BlockTridiags< MatrixType > & | btdm, | ||
const BlockHelperDetails::AmD< MatrixType > & | amd, | ||
typename BlockHelperDetails::ImplType< MatrixType >::vector_type_1d_view & | work, | ||
BlockHelperDetails::NormManager< MatrixType > & | norm_manager, | ||
const typename BlockHelperDetails::ImplType< MatrixType >::impl_scalar_type & | damping_factor, | ||
bool | is_y_zero, | ||
const int | max_num_sweeps, | ||
const typename BlockHelperDetails::ImplType< MatrixType >::magnitude_type | tol, | ||
const int | check_tol_every | ||
) |
top level apply interface