Ifpack2 Templated Preconditioning Package  Version 1.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Classes | Typedefs | Functions
Ifpack2::BlockTriDiContainerDetails Namespace Reference

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)
 

Detailed Description

Impl Tag

Typedef Documentation

using Ifpack2::BlockTriDiContainerDetails::do_not_initialize_tag = typedef Kokkos::ViewAllocateWithoutInitializing

view decorators for unmanaged and const memory

Function Documentation

template<typename CommPtrType >
std::string Ifpack2::BlockTriDiContainerDetails::get_msg_prefix ( const CommPtrType &  comm)

utility functions

template<typename MatrixType >
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

template<typename MatrixType >
Teuchos::RCP<AsyncableImport<MatrixType> > Ifpack2::BlockTriDiContainerDetails::createBlockCrsAsyncImporter ( const Teuchos::RCP< const typename ImplType< MatrixType >::tpetra_block_crs_matrix_type > &  A)

setup async importer

template<typename MatrixType >
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

template<typename MatrixType >
BlockTridiags<MatrixType> Ifpack2::BlockTriDiContainerDetails::createBlockTridiags ( const PartInterface< MatrixType > &  interf)

block tridiags initialization from part interface

template<typename MatrixType >
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

template<typename MatrixType >
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

static int Ifpack2::BlockTriDiContainerDetails::ComputeResidualVectorRecommendedCudaVectorSize ( const int  blksize,
const int  team_size 
)
inlinestatic

compute local residula vector y = b - R x

template<typename MatrixType >
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