Distributed operator¶
Builder¶
-
template<typename CoefficientPrecision, typename CoordinatePrecision = underlying_type<CoefficientPrecision>>
class DefaultApproximationBuilder¶ Public Functions
-
inline DefaultApproximationBuilder(const VirtualInternalGenerator<CoefficientPrecision> &generator, const Cluster<CoordinatePrecision> &target_cluster, const Cluster<CoordinatePrecision> &source_cluster, const HMatrixTreeBuilder<CoefficientPrecision, CoordinatePrecision> &hmatrix_tree_builder, MPI_Comm communicator)¶
-
inline DefaultApproximationBuilder(const VirtualGenerator<CoefficientPrecision> &generator, const Cluster<CoordinatePrecision> &target_cluster, const Cluster<CoordinatePrecision> &source_cluster, const HMatrixTreeBuilder<CoefficientPrecision, CoordinatePrecision> &hmatrix_tree_builder, MPI_Comm communicator)¶
Public Members
-
HMatrix<CoefficientPrecision, CoordinatePrecision> hmatrix¶
-
DistributedOperator<CoefficientPrecision> &distributed_operator¶
-
const HMatrix<CoefficientPrecision, CoordinatePrecision> *block_diagonal_hmatrix = {nullptr}¶
-
inline DefaultApproximationBuilder(const VirtualInternalGenerator<CoefficientPrecision> &generator, const Cluster<CoordinatePrecision> &target_cluster, const Cluster<CoordinatePrecision> &source_cluster, const HMatrixTreeBuilder<CoefficientPrecision, CoordinatePrecision> &hmatrix_tree_builder, MPI_Comm communicator)¶
-
template<typename CoefficientPrecision, typename CoordinatePrecision = underlying_type<CoefficientPrecision>>
class DefaultLocalApproximationBuilder¶ Public Functions
-
inline DefaultLocalApproximationBuilder(const VirtualInternalGenerator<CoefficientPrecision> &generator, const Cluster<CoordinatePrecision> &target_cluster, const Cluster<CoordinatePrecision> &source_cluster, const HMatrixTreeBuilder<CoefficientPrecision, CoordinatePrecision> &hmatrix_tree_builder, MPI_Comm communicator)¶
-
inline DefaultLocalApproximationBuilder(const VirtualGenerator<CoefficientPrecision> &generator, const Cluster<CoordinatePrecision> &target_cluster, const Cluster<CoordinatePrecision> &source_cluster, const HMatrixTreeBuilder<CoefficientPrecision, CoordinatePrecision> &hmatrix_tree_builder, MPI_Comm communicator)¶
Public Members
-
HMatrix<CoefficientPrecision, CoordinatePrecision> hmatrix¶
-
DistributedOperator<CoefficientPrecision> &distributed_operator¶
-
const HMatrix<CoefficientPrecision, CoordinatePrecision> *block_diagonal_hmatrix = {nullptr}¶
-
inline DefaultLocalApproximationBuilder(const VirtualInternalGenerator<CoefficientPrecision> &generator, const Cluster<CoordinatePrecision> &target_cluster, const Cluster<CoordinatePrecision> &source_cluster, const HMatrixTreeBuilder<CoefficientPrecision, CoordinatePrecision> &hmatrix_tree_builder, MPI_Comm communicator)¶
-
template<typename CoefficientPrecision, typename CoordinatePrecision = underlying_type<CoefficientPrecision>>
class CustomApproximationBuilder¶ Public Functions
-
inline explicit CustomApproximationBuilder(const Cluster<CoordinatePrecision> &target_cluster, const Cluster<CoordinatePrecision> &source_cluster, MPI_Comm communicator, const VirtualGlobalToLocalOperator<CoefficientPrecision> &local_operator)¶
-
inline explicit CustomApproximationBuilder(const Cluster<CoordinatePrecision> &target_cluster, const Cluster<CoordinatePrecision> &source_cluster, MPI_Comm communicator, const VirtualLocalToLocalOperator<CoefficientPrecision> &local_operator)¶
Public Members
-
DistributedOperator<CoefficientPrecision> distributed_operator¶
-
inline explicit CustomApproximationBuilder(const Cluster<CoordinatePrecision> &target_cluster, const Cluster<CoordinatePrecision> &source_cluster, MPI_Comm communicator, const VirtualGlobalToLocalOperator<CoefficientPrecision> &local_operator)¶
DistributedOperator¶
-
template<typename CoefficientPrecision>
class DistributedOperator¶ Public Functions
-
DistributedOperator(const DistributedOperator&) = delete¶
-
DistributedOperator &operator=(const DistributedOperator&) = delete¶
-
DistributedOperator(DistributedOperator &&cluster) noexcept = default¶
-
DistributedOperator &operator=(DistributedOperator &&cluster) noexcept = default¶
-
virtual ~DistributedOperator() = default¶
-
inline explicit DistributedOperator(const VirtualPartition<CoefficientPrecision> &target_partition, const VirtualPartition<CoefficientPrecision> &source_partition, MPI_Comm comm)¶
-
inline void add_local_to_local_operator(const VirtualLocalToLocalOperator<CoefficientPrecision> *local_operator)¶
-
inline void add_global_to_local_operator(const VirtualGlobalToLocalOperator<CoefficientPrecision> *local_operator)¶
-
inline MPI_Comm get_comm() const¶
-
inline const VirtualPartition<CoefficientPrecision> &get_target_partition() const¶
-
inline const VirtualPartition<CoefficientPrecision> &get_source_partition() const¶
-
inline const std::vector<const VirtualLocalToLocalOperator<CoefficientPrecision>*> get_local_to_local_operators() const¶
-
inline const std::vector<const VirtualGlobalToLocalOperator<CoefficientPrecision>*> get_global_to_local_operators() const¶
-
DistributedOperator(const DistributedOperator&) = delete¶
Linear algebra¶
-
template<typename CoefficientPrecision>
void htool::add_distributed_operator_vector_product_local_to_local(char trans, CoefficientPrecision alpha, const DistributedOperator<CoefficientPrecision> &A, const CoefficientPrecision *const in, CoefficientPrecision beta, CoefficientPrecision *const out, CoefficientPrecision *work)¶ - Template Parameters:
CoefficientPrecision –
- Parameters:
trans –
alpha –
A –
in –
beta –
out –
work – Optional buffer of size (m+n+N if trans==’N’, m+n+N+n*sizeWorld otherwise). Used if different of nullptr.
-
template<typename MatIn, typename MatOut, typename = std::enable_if_t<std::is_same<typename MatIn::value_type, typename MatOut::value_type>::value>>
void htool::add_distributed_operator_matrix_product_local_to_local(char trans, typename MatIn::value_type alpha, const DistributedOperator<typename MatIn::value_type> &A, const MatIn &in, typename MatIn::value_type beta, MatOut &out, typename MatIn::value_type *work)¶ - Template Parameters:
MatIn –
MatOut –
- Tparam :
-
template<typename CoefficientPrecision>
void htool::add_distributed_operator_vector_product_global_to_global(char trans, CoefficientPrecision alpha, const DistributedOperator<CoefficientPrecision> &A, const CoefficientPrecision *const in, CoefficientPrecision beta, CoefficientPrecision *const out, CoefficientPrecision *work)¶ - Template Parameters:
CoefficientPrecision –
- Parameters:
trans –
alpha –
A –
in –
beta –
out –
work – Optional buffer of size (M+N+m if trans==’N’, M+N+N if trans!=’N’ and beta!=0, M+N otherwise). Used if different of nullptr.
-
template<typename MatIn, typename MatOut, typename = std::enable_if_t<std::is_same<typename MatIn::value_type, typename MatOut::value_type>::value>>
void htool::add_distributed_operator_matrix_product_global_to_global(char trans, typename MatIn::value_type alpha, const DistributedOperator<typename MatIn::value_type> &A, const MatIn &in, typename MatIn::value_type beta, MatOut &out, typename MatIn::value_type *work)¶ - Template Parameters:
MatIn –
MatOut –
- Tparam :
Operators¶
-
template<class T>
class VirtualLocalToLocalOperator¶ Interface representing.
- Template Parameters:
T –
Public Functions
-
virtual void add_vector_product(char trans, T alpha, const T *const in, T beta, T *const out) const = 0¶
- Parameters:
trans –
alpha –
in – Local input vector.
beta –
out – Local output vector.
-
virtual void add_matrix_product_row_major(char trans, T alpha, const T *const in, T beta, T *const out, int mu) const = 0¶
- Parameters:
trans –
alpha –
in – Local input row-major matrix.
beta –
out – Local output row-major matrix.
mu – Number of columns for in and out.
-
virtual void add_sub_matrix_product_to_local(const T *const in, T *const out, int mu, int offset, int size) const = 0¶
- Parameters:
in –
out –
mu –
offset –
size –
-
inline virtual ~VirtualLocalToLocalOperator()¶
-
template<class T>
class VirtualGlobalToLocalOperator¶ Interface representing.
- Template Parameters:
T –
Public Functions
-
virtual void add_vector_product(char trans, T alpha, const T *const in, T beta, T *const out) const = 0¶
- Parameters:
trans –
alpha –
in – Global input vector when trans==’N’. Local input vector when trans!=N.
beta –
out – Local output vector when trans==’N’. Global output vector when trans==’N’.
-
virtual void add_matrix_product_row_major(char trans, T alpha, const T *const in, T beta, T *const out, int mu) const = 0¶
- Parameters:
trans –
alpha –
in – Global input row-major matrix when trans==’N’. Local input row-major matrix when trans!=N.
beta –
out – Local input row-major matrix when trans==’N’. Global input row-major matrix when trans!=N.
mu – Number of columns for in and out.
-
virtual void add_sub_matrix_product_to_local(const T *const in, T *const out, int mu, int offset, int size) const = 0¶
- Parameters:
in –
out –
mu –
offset –
size –
-
inline virtual ~VirtualGlobalToLocalOperator()¶