14#ifndef dealii_matrix_free_vector_data_exchange_h
15#define dealii_matrix_free_vector_data_exchange_h
32 namespace MatrixFreeFunctions
38 namespace VectorDataExchange
65 const unsigned int communication_channel,
70 std::vector<MPI_Request> &requests)
const = 0;
77 std::vector<MPI_Request> &requests)
const = 0;
82 const unsigned int communication_channel,
87 std::vector<MPI_Request> &requests)
const = 0;
96 std::vector<MPI_Request> &requests)
const = 0;
103 const unsigned int communication_channel,
108 std::vector<MPI_Request> &requests)
const = 0;
115 std::vector<MPI_Request> &requests)
const = 0;
120 const unsigned int communication_channel,
125 std::vector<MPI_Request> &requests)
const = 0;
134 std::vector<MPI_Request> &requests)
const = 0;
148 const std::shared_ptr<const Utilities::MPI::Partitioner>
166 size()
const override;
170 const unsigned int communication_channel,
175 std::vector<MPI_Request> &requests)
const override;
182 std::vector<MPI_Request> &requests)
const override;
187 const unsigned int communication_channel,
192 std::vector<MPI_Request> &requests)
const override;
201 std::vector<MPI_Request> &requests)
const override;
208 const unsigned int communication_channel,
213 std::vector<MPI_Request> &requests)
const override;
220 std::vector<MPI_Request> &requests)
const override;
225 const unsigned int communication_channel,
230 std::vector<MPI_Request> &requests)
const override;
239 std::vector<MPI_Request> &requests)
const override;
245 template <
typename Number>
249 const std::shared_ptr<const Utilities::MPI::Partitioner>
partitioner;
263 const std::shared_ptr<const Utilities::MPI::Partitioner> &partitioner,
279 size()
const override;
286 const unsigned int communication_channel,
291 std::vector<MPI_Request> &requests)
const override;
298 std::vector<MPI_Request> &requests)
const override;
303 const unsigned int communication_channel,
308 std::vector<MPI_Request> &requests)
const override;
317 std::vector<MPI_Request> &requests)
const override;
324 const unsigned int communication_channel,
329 std::vector<MPI_Request> &requests)
const override;
336 std::vector<MPI_Request> &requests)
const override;
341 const unsigned int communication_channel,
346 std::vector<MPI_Request> &requests)
const override;
355 std::vector<MPI_Request> &requests)
const override;
361 template <
typename Number>
364 const unsigned int communication_channel,
369 std::vector<MPI_Request> &requests)
const;
371 template <
typename Number>
377 std::vector<MPI_Request> &requests)
const;
379 template <
typename Number>
383 const unsigned int communication_channel,
388 std::vector<MPI_Request> &requests)
const;
390 template <
typename Number>
398 std::vector<MPI_Request> &requests)
const;
400 template <
typename Number>
440 std::pair<std::vector<unsigned int>,
441 std::vector<std::pair<unsigned int, unsigned int>>>
466 std::pair<std::vector<unsigned int>,
467 std::vector<std::pair<unsigned int, unsigned int>>>
480 std::pair<std::vector<unsigned int>,
481 std::vector<std::pair<unsigned int, unsigned int>>>
488 std::pair<std::vector<unsigned int>,
489 std::vector<std::pair<unsigned int, unsigned int>>>
502 std::pair<std::vector<unsigned int>,
503 std::vector<std::pair<unsigned int, unsigned int>>>
510 std::pair<std::vector<unsigned int>,
511 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
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
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