16#ifndef dealii_matrix_free_vector_data_exchange_h
17#define dealii_matrix_free_vector_data_exchange_h
34 namespace MatrixFreeFunctions
40 namespace VectorDataExchange
67 const unsigned int communication_channel,
72 std::vector<MPI_Request> &requests)
const = 0;
79 std::vector<MPI_Request> &requests)
const = 0;
84 const unsigned int communication_channel,
89 std::vector<MPI_Request> &requests)
const = 0;
98 std::vector<MPI_Request> &requests)
const = 0;
105 const unsigned int communication_channel,
110 std::vector<MPI_Request> &requests)
const = 0;
117 std::vector<MPI_Request> &requests)
const = 0;
122 const unsigned int communication_channel,
127 std::vector<MPI_Request> &requests)
const = 0;
136 std::vector<MPI_Request> &requests)
const = 0;
150 const std::shared_ptr<const Utilities::MPI::Partitioner>
168 size()
const override;
172 const unsigned int communication_channel,
177 std::vector<MPI_Request> &requests)
const override;
184 std::vector<MPI_Request> &requests)
const override;
189 const unsigned int communication_channel,
194 std::vector<MPI_Request> &requests)
const override;
203 std::vector<MPI_Request> &requests)
const override;
210 const unsigned int communication_channel,
215 std::vector<MPI_Request> &requests)
const override;
222 std::vector<MPI_Request> &requests)
const override;
227 const unsigned int communication_channel,
232 std::vector<MPI_Request> &requests)
const override;
241 std::vector<MPI_Request> &requests)
const override;
247 template <
typename Number>
251 const std::shared_ptr<const Utilities::MPI::Partitioner>
partitioner;
265 const std::shared_ptr<const Utilities::MPI::Partitioner> &partitioner,
281 size()
const override;
288 const unsigned int communication_channel,
293 std::vector<MPI_Request> &requests)
const override;
300 std::vector<MPI_Request> &requests)
const override;
305 const unsigned int communication_channel,
310 std::vector<MPI_Request> &requests)
const override;
319 std::vector<MPI_Request> &requests)
const override;
326 const unsigned int communication_channel,
331 std::vector<MPI_Request> &requests)
const override;
338 std::vector<MPI_Request> &requests)
const override;
343 const unsigned int communication_channel,
348 std::vector<MPI_Request> &requests)
const override;
357 std::vector<MPI_Request> &requests)
const override;
363 template <
typename Number>
366 const unsigned int communication_channel,
371 std::vector<MPI_Request> &requests)
const;
373 template <
typename Number>
379 std::vector<MPI_Request> &requests)
const;
381 template <
typename Number>
385 const unsigned int communication_channel,
390 std::vector<MPI_Request> &requests)
const;
392 template <
typename Number>
400 std::vector<MPI_Request> &requests)
const;
402 template <
typename Number>
442 std::pair<std::vector<unsigned int>,
443 std::vector<std::pair<unsigned int, unsigned int>>>
468 std::pair<std::vector<unsigned int>,
469 std::vector<std::pair<unsigned int, unsigned int>>>
482 std::pair<std::vector<unsigned int>,
483 std::vector<std::pair<unsigned int, unsigned int>>>
490 std::pair<std::vector<unsigned int>,
491 std::vector<std::pair<unsigned int, unsigned int>>>
504 std::pair<std::vector<unsigned int>,
505 std::vector<std::pair<unsigned int, unsigned int>>>
512 std::pair<std::vector<unsigned int>,
513 std::vector<std::pair<unsigned int, unsigned int>>>
virtual void import_from_ghosted_array_start(const VectorOperation::values vector_operation, const unsigned int communication_channel, const ArrayView< const float > &locally_owned_array, const std::vector< ArrayView< const float > > &shared_arrays, const ArrayView< float > &ghost_array, const ArrayView< float > &temporary_storage, std::vector< MPI_Request > &requests) const =0
virtual unsigned int n_import_sm_procs() const =0
virtual unsigned int n_ghost_indices() const =0
virtual void export_to_ghosted_array_finish(const ArrayView< const float > &locally_owned_array, const std::vector< ArrayView< const float > > &shared_arrays, const ArrayView< float > &ghost_array, std::vector< MPI_Request > &requests) const =0
virtual void reset_ghost_values(const ArrayView< float > &ghost_array) const =0
virtual types::global_dof_index size() const =0
virtual unsigned int locally_owned_size() const =0
virtual void import_from_ghosted_array_finish(const VectorOperation::values vector_operation, const ArrayView< float > &locally_owned_storage, const std::vector< ArrayView< const float > > &shared_arrays, const ArrayView< float > &ghost_array, const ArrayView< const float > &temporary_storage, std::vector< MPI_Request > &requests) const =0
virtual void reset_ghost_values(const ArrayView< double > &ghost_array) const =0
virtual unsigned int n_import_indices() const =0
virtual void export_to_ghosted_array_start(const unsigned int communication_channel, const ArrayView< const float > &locally_owned_array, const std::vector< ArrayView< const float > > &shared_arrays, const ArrayView< float > &ghost_array, const ArrayView< float > &temporary_storage, std::vector< MPI_Request > &requests) const =0
virtual void import_from_ghosted_array_start(const VectorOperation::values vector_operation, const unsigned int communication_channel, const ArrayView< const double > &locally_owned_array, const std::vector< ArrayView< const double > > &shared_arrays, const ArrayView< double > &ghost_array, const ArrayView< double > &temporary_storage, std::vector< MPI_Request > &requests) const =0
virtual void import_from_ghosted_array_finish(const VectorOperation::values vector_operation, const ArrayView< double > &locally_owned_storage, const std::vector< ArrayView< const double > > &shared_arrays, const ArrayView< double > &ghost_array, const ArrayView< const double > &temporary_storage, std::vector< MPI_Request > &requests) const =0
virtual void export_to_ghosted_array_start(const unsigned int communication_channel, const ArrayView< const double > &locally_owned_array, const std::vector< ArrayView< const double > > &shared_arrays, const ArrayView< double > &ghost_array, const ArrayView< double > &temporary_storage, std::vector< MPI_Request > &requests) const =0
virtual void export_to_ghosted_array_finish(const ArrayView< const double > &locally_owned_array, const std::vector< ArrayView< const double > > &shared_arrays, const ArrayView< double > &ghost_array, std::vector< MPI_Request > &requests) const =0
void export_to_ghosted_array_start(const unsigned int communication_channel, const ArrayView< const double > &locally_owned_array, const std::vector< ArrayView< const double > > &shared_arrays, const ArrayView< double > &ghost_array, const ArrayView< double > &temporary_storage, std::vector< MPI_Request > &requests) const override
std::vector< unsigned int > n_ghost_indices_in_larger_set_by_remote_rank
unsigned int locally_owned_size() const override
unsigned int n_ghost_indices() const override
void reset_ghost_values(const ArrayView< double > &ghost_array) const override
std::vector< unsigned int > sm_import_ranks
std::vector< std::array< unsigned int, 3 > > ghost_targets_data
const unsigned int n_ghost_elements
std::pair< std::vector< unsigned int >, std::vector< std::pair< unsigned int, unsigned int > > > sm_export_data_this
virtual unsigned int n_import_sm_procs() const override
void export_to_ghosted_array_finish(const ArrayView< const double > &locally_owned_array, const std::vector< ArrayView< const double > > &shared_arrays, const ArrayView< double > &ghost_array, std::vector< MPI_Request > &requests) const override
void import_from_ghosted_array_start(const VectorOperation::values vector_operation, const unsigned int communication_channel, const ArrayView< const double > &locally_owned_array, const std::vector< ArrayView< const double > > &shared_arrays, const ArrayView< double > &ghost_array, const ArrayView< double > &temporary_storage, std::vector< MPI_Request > &requests) const override
const unsigned int n_local_elements
void export_to_ghosted_array_start_impl(const unsigned int communication_channel, const ArrayView< const Number > &locally_owned_array, const std::vector< ArrayView< const Number > > &shared_arrays, const ArrayView< Number > &ghost_array, const ArrayView< Number > &temporary_storage, std::vector< MPI_Request > &requests) const
unsigned int n_import_indices() const override
void import_from_ghosted_array_finish_impl(const VectorOperation::values vector_operation, const ArrayView< Number > &locally_owned_storage, const std::vector< ArrayView< const Number > > &shared_arrays, const ArrayView< Number > &ghost_array, const ArrayView< const Number > &temporary_storage, std::vector< MPI_Request > &requests) const
std::pair< std::vector< unsigned int >, std::vector< std::pair< unsigned int, unsigned int > > > sm_export_data
std::vector< std::array< unsigned int, 3 > > import_targets_data
std::pair< std::vector< unsigned int >, std::vector< std::pair< unsigned int, unsigned int > > > ghost_indices_subset_data
void import_from_ghosted_array_finish(const VectorOperation::values vector_operation, const ArrayView< double > &locally_owned_storage, const std::vector< ArrayView< const double > > &shared_arrays, const ArrayView< double > &ghost_array, const ArrayView< const double > &temporary_storage, std::vector< MPI_Request > &requests) const override
std::vector< unsigned int > sm_ghost_ranks
MPI_Comm get_sm_mpi_communicator() const
void export_to_ghosted_array_finish_impl(const ArrayView< const Number > &locally_owned_array, const std::vector< ArrayView< const Number > > &shared_arrays, const ArrayView< Number > &ghost_array, std::vector< MPI_Request > &requests) const
std::pair< std::vector< unsigned int >, std::vector< std::pair< unsigned int, unsigned int > > > sm_import_data
void import_from_ghosted_array_start_impl(const VectorOperation::values vector_operation, const unsigned int communication_channel, const ArrayView< const Number > &locally_owned_array, const std::vector< ArrayView< const Number > > &shared_arrays, const ArrayView< Number > &ghost_array, const ArrayView< Number > &temporary_storage, std::vector< MPI_Request > &requests) const
Full(const std::shared_ptr< const Utilities::MPI::Partitioner > &partitioner, const MPI_Comm communicator_sm)
void reset_ghost_values_impl(const ArrayView< Number > &ghost_array) const
std::pair< std::vector< unsigned int >, std::vector< std::pair< unsigned int, unsigned int > > > sm_import_data_this
const types::global_dof_index n_global_elements
virtual types::global_dof_index size() const override
std::pair< std::vector< unsigned int >, std::vector< std::pair< unsigned int, unsigned int > > > import_indices_data
const std::shared_ptr< const Utilities::MPI::Partitioner > partitioner
void export_to_ghosted_array_finish(const ArrayView< const double > &locally_owned_array, const std::vector< ArrayView< const double > > &shared_arrays, const ArrayView< double > &ghost_array, std::vector< MPI_Request > &requests) const override
PartitionerWrapper(const std::shared_ptr< const Utilities::MPI::Partitioner > &partitioner)
types::global_dof_index size() const override
unsigned int n_import_indices() const override
unsigned int locally_owned_size() const override
void export_to_ghosted_array_start(const unsigned int communication_channel, const ArrayView< const double > &locally_owned_array, const std::vector< ArrayView< const double > > &shared_arrays, const ArrayView< double > &ghost_array, const ArrayView< double > &temporary_storage, std::vector< MPI_Request > &requests) const override
void reset_ghost_values_impl(const ArrayView< Number > &ghost_array) const
void import_from_ghosted_array_finish(const VectorOperation::values vector_operation, const ArrayView< double > &locally_owned_storage, const std::vector< ArrayView< const double > > &shared_arrays, const ArrayView< double > &ghost_array, const ArrayView< const double > &temporary_storage, std::vector< MPI_Request > &requests) const override
virtual ~PartitionerWrapper()=default
void reset_ghost_values(const ArrayView< double > &ghost_array) const override
unsigned int n_ghost_indices() const override
unsigned int n_import_sm_procs() const override
void import_from_ghosted_array_start(const VectorOperation::values vector_operation, const unsigned int communication_channel, const ArrayView< const double > &locally_owned_array, const std::vector< ArrayView< const double > > &shared_arrays, const ArrayView< double > &ghost_array, const ArrayView< double > &temporary_storage, std::vector< MPI_Request > &requests) const override
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE