33#ifndef GKO_PUBLIC_CORE_DISTRIBUTED_PARTITION_HPP_
34#define GKO_PUBLIC_CORE_DISTRIBUTED_PARTITION_HPP_
37#include <ginkgo/core/base/array.hpp>
38#include <ginkgo/core/base/polymorphic_object.hpp>
39#include <ginkgo/core/base/types.hpp>
43namespace experimental {
49namespace distributed {
106template <
typename LocalIndexType =
int32,
typename GlobalIndexType =
int64>
109 Partition<LocalIndexType, GlobalIndexType>>,
111 Partition<LocalIndexType, GlobalIndexType>>,
116 "GlobalIndexType must be at least as large as "
159 return num_empty_parts_;
255 std::shared_ptr<const Executor> exec,
272 std::shared_ptr<const Executor> exec,
296 Partition(std::shared_ptr<const Executor> exec,
308 starting_indices_.
fill(0);
318 void finalize_construction();
322 global_index_type size_;
323 array<global_index_type> offsets_;
324 array<local_index_type> starting_indices_;
325 array<local_index_type> part_sizes_;
326 array<comm_index_type> part_ids_;
This mixin implements a static create() method on ConcreteType that dynamically allocates the memory,...
Definition polymorphic_object.hpp:776
This mixin is used to enable a default PolymorphicObject::copy_from() implementation for objects that...
Definition polymorphic_object.hpp:752
void move_to(result_type *result) override
Converts the implementer to an object of type result_type by moving data from this object.
Definition polymorphic_object.hpp:760
void convert_to(result_type *result) const override
Converts the implementer to an object of type result_type.
Definition polymorphic_object.hpp:758
This mixin inherits from (a subclass of) PolymorphicObject and provides a base implementation of a ne...
Definition polymorphic_object.hpp:691
std::shared_ptr< const Executor > get_executor() const noexcept
Returns the Executor of the object.
Definition polymorphic_object.hpp:263
An array is a container which encapsulates fixed-sized arrays, stored on the Executor tied to the arr...
Definition array.hpp:187
const value_type * get_const_data() const noexcept
Returns a constant pointer to the block of memory used to store the elements of the array.
Definition array.hpp:655
void fill(const value_type value)
Fill the array with the given value.
size_type get_num_elems() const noexcept
Returns the number of elements in the array.
Definition array.hpp:637
Represents a partition of a range of indices [0, size) into a disjoint set of parts.
Definition partition.hpp:112
comm_index_type get_num_empty_parts() const noexcept
Returns the number of empty parts within this partition.
Definition partition.hpp:157
size_type get_num_ranges() const noexcept
Returns the number of ranges stored by this partition.
Definition partition.hpp:140
const local_index_type * get_part_sizes() const noexcept
Returns the part size array.
Definition partition.hpp:210
const local_index_type * get_range_starting_indices() const noexcept
Returns the part-local starting index for each range in this partition.
Definition partition.hpp:199
static std::unique_ptr< Partition > build_from_global_size_uniform(std::shared_ptr< const Executor > exec, comm_index_type num_parts, global_index_type global_size)
Builds a partition by evenly distributing the global range.
bool has_connected_parts() const
Checks if each part has no more than one contiguous range.
const comm_index_type * get_part_ids() const noexcept
Returns the part IDs of the ranges in this partition.
Definition partition.hpp:181
local_index_type get_part_size(comm_index_type part) const
Returns the size of a part given by its part ID.
Definition partition.hpp:223
size_type get_size() const
Returns the total number of elements represented by this partition.
Definition partition.hpp:132
comm_index_type get_num_parts() const noexcept
Returns the number of parts represented in this partition.
Definition partition.hpp:150
static std::unique_ptr< Partition > build_from_contiguous(std::shared_ptr< const Executor > exec, const array< global_index_type > &ranges, const array< comm_index_type > &part_ids={})
Builds a partition consisting of contiguous ranges, one for each part.
static std::unique_ptr< Partition > build_from_mapping(std::shared_ptr< const Executor > exec, const array< comm_index_type > &mapping, comm_index_type num_parts)
Builds a partition from a given mapping global_index -> part_id.
bool has_ordered_parts() const
Checks if the ranges are ordered by their part index.
const global_index_type * get_range_bounds() const noexcept
Returns the ranges boundary array stored by this partition.
Definition partition.hpp:169
int comm_index_type
Index type for enumerating processes in a distributed application.
Definition types.hpp:807
The Ginkgo namespace.
Definition abstract_factory.hpp:48
constexpr T one()
Returns the multiplicative identity for T.
Definition math.hpp:803
std::size_t size_type
Integral type used for allocation quantities.
Definition types.hpp:120