 |
Ginkgo
Generated from pipelines/2662685947 branch based on develop. Ginkgo version 2.0.0
A numerical linear algebra library targeting many-core architectures
|
5 #ifndef GKO_PUBLIC_CORE_DISTRIBUTED_PARTITION_HPP_
6 #define GKO_PUBLIC_CORE_DISTRIBUTED_PARTITION_HPP_
9 #include <ginkgo/core/base/array.hpp>
10 #include <ginkgo/core/base/polymorphic_object.hpp>
11 #include <ginkgo/core/base/segmented_array.hpp>
12 #include <ginkgo/core/base/types.hpp>
16 namespace experimental {
22 namespace distributed {
79 template <
typename LocalIndexType =
int32,
typename GlobalIndexType =
int64>
81 :
public PolymorphicObject,
82 public EnableCloneable<Partition<LocalIndexType, GlobalIndexType>> {
83 friend class EnableCloneable<Partition>;
84 static_assert(
sizeof(GlobalIndexType) >=
sizeof(LocalIndexType),
85 "GlobalIndexType must be at least as large as "
92 using local_index_type = LocalIndexType;
93 using global_index_type = GlobalIndexType;
127 return num_empty_parts_;
200 return ranges_by_part_;
229 std::shared_ptr<const Executor> exec,
246 std::shared_ptr<const Executor> exec,
262 std::shared_ptr<const Executor> exec, comm_index_type num_parts,
263 global_index_type global_size);
266 Partition(std::shared_ptr<const Executor> exec,
267 comm_index_type num_parts = 0,
size_type num_ranges = 0);
269 static std::unique_ptr<Partition> create(
270 std::shared_ptr<const Executor> exec, comm_index_type num_parts = 0,
278 void finalize_construction();
280 comm_index_type num_parts_;
281 comm_index_type num_empty_parts_;
282 global_index_type size_;
296 #endif // GKO_PUBLIC_CORE_DISTRIBUTED_PARTITION_HPP_
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.
local_index_type get_part_size(comm_index_type part) const
Returns the size of a part given by its part ID.
const local_index_type * get_part_sizes() const noexcept
Returns the part size array.
Definition: partition.hpp:178
std::size_t size_type
Integral type used for allocation quantities.
Definition: types.hpp:90
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:167
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.
const global_index_type * get_range_bounds() const noexcept
Returns the ranges boundary array stored by this partition.
Definition: partition.hpp:137
The Ginkgo namespace.
Definition: abstract_factory.hpp:20
comm_index_type get_num_parts() const noexcept
Returns the number of parts represented in this partition.
Definition: partition.hpp:118
bool has_ordered_parts() const
Checks if the ranges are ordered by their part index.
const comm_index_type * get_part_ids() const noexcept
Returns the part IDs of the ranges in this partition.
Definition: partition.hpp:149
size_type get_size() const
Returns the total number of elements represented by this partition.
Definition: partition.hpp:100
comm_index_type get_num_empty_parts() const noexcept
Returns the number of empty parts within this partition.
Definition: partition.hpp:125
void convert_to(result_type *result) const override
Converts the implementer to an object of type result_type.
Definition: polymorphic_object.hpp:404
const segmented_array< size_type > & get_ranges_by_part() const
Returns the range IDs segmented by their part ID.
Definition: partition.hpp:198
bool has_connected_parts() const
Checks if each part has no more than one contiguous range.
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:696
size_type get_num_ranges() const noexcept
Returns the number of ranges stored by this partition.
Definition: partition.hpp:108
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:406
size_type get_size() const noexcept
Returns the number of elements in the array.
Definition: array.hpp:670
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.