Partition< LocalIndexType, GlobalIndexType > Class Template Reference#
|
Reference API
|
#include <ginkgo/core/distributed/partition.hpp>
Public Types | |
| using | local_index_type = LocalIndexType |
| using | global_index_type = GlobalIndexType |
Public Types inherited from gko::EnablePolymorphicAssignment< ConcreteType, ResultType > | |
| using | result_type = ResultType |
Public Types inherited from gko::ConvertibleTo< ResultType > | |
| using | result_type = ResultType |
Public Member Functions | |
| size_type | get_size () const |
| size_type | get_num_ranges () const noexcept |
| comm_index_type | get_num_parts () const noexcept |
| comm_index_type | get_num_empty_parts () const noexcept |
| const global_index_type * | get_range_bounds () const noexcept |
| const comm_index_type * | get_part_ids () const noexcept |
| const local_index_type * | get_range_starting_indices () const noexcept |
| const local_index_type * | get_part_sizes () const noexcept |
| local_index_type | get_part_size (comm_index_type part) const |
| const segmented_array< size_type > & | get_ranges_by_part () const |
| bool | has_connected_parts () const |
| bool | has_ordered_parts () const |
Public Member Functions inherited from gko::EnableAbstractPolymorphicObject< AbstractObject, PolymorphicBase > | |
| std::unique_ptr< AbstractObject > | create_default (std::shared_ptr< const Executor > exec) const |
| std::unique_ptr< AbstractObject > | create_default () const |
| std::unique_ptr< AbstractObject > | clone (std::shared_ptr< const Executor > exec) const |
| std::unique_ptr< AbstractObject > | clone () const |
| AbstractObject * | copy_from (const PolymorphicObject *other) |
| template<typename Derived > | |
| std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, AbstractObject > * | copy_from (std::unique_ptr< Derived > &&other) |
| template<typename Derived > | |
| std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, AbstractObject > * | copy_from (const std::unique_ptr< Derived > &other) |
| AbstractObject * | copy_from (const std::shared_ptr< const PolymorphicObject > &other) |
| AbstractObject * | move_from (ptr_param< PolymorphicObject > other) |
| AbstractObject * | clear () |
Public Member Functions inherited from gko::PolymorphicObject | |
| PolymorphicObject & | operator= (const PolymorphicObject &) |
| std::unique_ptr< PolymorphicObject > | create_default (std::shared_ptr< const Executor > exec) const |
| std::unique_ptr< PolymorphicObject > | create_default () const |
| std::unique_ptr< PolymorphicObject > | clone (std::shared_ptr< const Executor > exec) const |
| std::unique_ptr< PolymorphicObject > | clone () const |
| PolymorphicObject * | copy_from (const PolymorphicObject *other) |
| template<typename Derived , typename Deleter > | |
| std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, PolymorphicObject > * | copy_from (std::unique_ptr< Derived, Deleter > &&other) |
| template<typename Derived , typename Deleter > | |
| std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, PolymorphicObject > * | copy_from (const std::unique_ptr< Derived, Deleter > &other) |
| PolymorphicObject * | copy_from (const std::shared_ptr< const PolymorphicObject > &other) |
| PolymorphicObject * | move_from (ptr_param< PolymorphicObject > other) |
| PolymorphicObject * | clear () |
| std::shared_ptr< const Executor > | get_executor () const noexcept |
Public Member Functions inherited from gko::log::EnableLogging< PolymorphicObject > | |
| void | add_logger (std::shared_ptr< const Logger > logger) override |
| void | remove_logger (const Logger *logger) override |
| void | remove_logger (ptr_param< const Logger > logger) |
| const std::vector< std::shared_ptr< const Logger > > & | get_loggers () const override |
| void | clear_loggers () override |
Public Member Functions inherited from gko::log::Loggable | |
| void | remove_logger (ptr_param< const Logger > logger) |
Public Member Functions inherited from gko::EnablePolymorphicAssignment< ConcreteType, ResultType > | |
| void | convert_to (result_type *result) const override |
| void | move_to (result_type *result) override |
Public Member Functions inherited from gko::ConvertibleTo< ResultType > | |
| void | convert_to (ptr_param< result_type > result) const |
| void | move_to (ptr_param< result_type > result) |
Static Public Member Functions | |
| 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) |
| 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={}) |
| 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) |
Friends | |
| class | EnablePolymorphicObject< Partition > |
Additional Inherited Members | |
Protected Member Functions inherited from gko::EnablePolymorphicObject< ConcreteObject, PolymorphicBase > | |
| std::unique_ptr< PolymorphicObject > | create_default_impl (std::shared_ptr< const Executor > exec) const override |
| PolymorphicObject * | copy_from_impl (const PolymorphicObject *other) override |
| PolymorphicObject * | copy_from_impl (std::unique_ptr< PolymorphicObject > other) override |
| PolymorphicObject * | move_from_impl (PolymorphicObject *other) override |
| PolymorphicObject * | move_from_impl (std::unique_ptr< PolymorphicObject > other) override |
| PolymorphicObject * | clear_impl () override |
Protected Member Functions inherited from gko::PolymorphicObject | |
| PolymorphicObject (std::shared_ptr< const Executor > exec) | |
| PolymorphicObject (const PolymorphicObject &other) | |
Protected Member Functions inherited from gko::log::EnableLogging< PolymorphicObject > | |
| void | log (Params &&... params) const |
Protected Attributes inherited from gko::log::EnableLogging< PolymorphicObject > | |
| std::vector< std::shared_ptr< const Logger > > | loggers_ |
Detailed Description
class gko::experimental::distributed::Partition< LocalIndexType, GlobalIndexType >
Represents a partition of a range of indices [0, size) into a disjoint set of parts. The partition is stored as a set of consecutive ranges [begin, end) with an associated part ID and local index (number of indices in this part before begin). Global indices are stored as 64 bit signed integers (int64), part-local indices use LocalIndexType, Part IDs use 32 bit signed integers (int).
For example, consider the interval [0, 13) that is partitioned into the following ranges:
These ranges are distributed on three part with:
The part ids can be queried from the get_part_ids array, and the ranges are represented as offsets, accessed by get_range_bounds, leading to the offset array:
so that individual ranges are given by [r[i], r[i + 1]). Since each part may be associated with multiple ranges, it is possible to get the starting index for each range that is local to the owning part, see get_range_starting_indices. These indices can be used to easily iterate over part local data. For example, the above partition has the following starting indices
which you can use to iterate only over the the second range of part 0 (the third global range) with
- Template Parameters
-
LocalIndexType The index type used for part-local indices. To prevent overflows, no single part's size may exceed this index type's maximum value. GlobalIndexType The index type used for the global indices. Needs to be at least as large a type as LocalIndexType.
Member Function Documentation
◆ build_from_contiguous()
|
static |
Builds a partition consisting of contiguous ranges, one for each part.
- Parameters
-
exec the Executor on which the partition should be built ranges the boundaries of the ranges representing each part. Part part_id[i] contains the indices [ranges[i], ranges[i + 1]). Has to contain at least one element. The first element has to be 0. part_ids the part ids of the provided ranges. If empty, then it will assume range i belongs to part i.
- Returns
- a Partition representing the given contiguous partitioning.
◆ build_from_global_size_uniform()
|
static |
Builds a partition by evenly distributing the global range.
- Parameters
-
exec the Executor on which the partition should be built num_parts the number of parst used in this partition global_size the global size of this partition
- Returns
- a Partition where each range has either
floor(global_size/num_parts)orfloor(global_size/num_parts) + 1indices.
◆ build_from_mapping()
|
static |
Builds a partition from a given mapping global_index -> part_id.
- Parameters
-
exec the Executor on which the partition should be built mapping the mapping from global indices to part IDs. num_parts the number of parts used in the mapping.
- Returns
- a Partition representing the given mapping as a set of ranges
◆ get_num_empty_parts()
|
inlinenoexcept |
Returns the number of empty parts within this partition.
- Returns
- number of empty parts.
◆ get_num_parts()
|
inlinenoexcept |
Returns the number of parts represented in this partition.
- Returns
- number of parts.
◆ get_num_ranges()
|
inlinenoexcept |
Returns the number of ranges stored by this partition. This size refers to the data returned by get_range_bounds().
- Returns
- number of ranges.
References gko::array< ValueType >::get_size().
◆ get_part_ids()
|
inlinenoexcept |
Returns the part IDs of the ranges in this partition. For each range from get_range_bounds(), it stores the part ID in the interval [0, get_num_parts() - 1].
- Returns
- part ID array.
References gko::array< ValueType >::get_const_data().
◆ get_part_size()
| local_index_type gko::experimental::distributed::Partition< LocalIndexType, GlobalIndexType >::get_part_size | ( | comm_index_type | part | ) | const |
Returns the size of a part given by its part ID.
- Warning
- Triggers a copy from device to host.
- Parameters
-
part the part ID.
- Returns
- size of part.
◆ get_part_sizes()
|
inlinenoexcept |
Returns the part size array. part_sizes[p] stores the total number of indices in part p.
- Returns
- part size array.
References gko::array< ValueType >::get_const_data().
◆ get_range_bounds()
|
inlinenoexcept |
Returns the ranges boundary array stored by this partition. range_bounds[i] is the beginning (inclusive) and range_bounds[i + 1] is the end (exclusive) of the ith range.
- Returns
- range boundaries array.
References gko::array< ValueType >::get_const_data().
◆ get_range_starting_indices()
|
inlinenoexcept |
Returns the part-local starting index for each range in this partition.
Consider the partition on [0, 10) with
Then range_starting_indices[0] = 0, range_starting_indices[1] = 0, range_starting_indices[2] = 4.
- Returns
- part-local starting index array.
References gko::array< ValueType >::get_const_data().
◆ get_ranges_by_part()
|
inline |
Returns the range IDs segmented by their part ID.
- Returns
- range IDs segmented by part IDs
◆ get_size()
|
inline |
Returns the total number of elements represented by this partition.
- Returns
- number elements.
◆ has_connected_parts()
| bool gko::experimental::distributed::Partition< LocalIndexType, GlobalIndexType >::has_connected_parts | ( | ) | const |
Checks if each part has no more than one contiguous range.
- Returns
- true if each part has no more than one contiguous range.
◆ has_ordered_parts()
| bool gko::experimental::distributed::Partition< LocalIndexType, GlobalIndexType >::has_ordered_parts | ( | ) | const |
Checks if the ranges are ordered by their part index.
Implies that the partition is connected.
- Returns
- true if the ranges are ordered by their part index.
The documentation for this class was generated from the following files:
- ginkgo/core/distributed/assembly.hpp
- ginkgo/core/distributed/partition.hpp
Generated by
Public Types inherited from