PartitionSet#
Fully qualified name: omni::graph::exec::unstable::PartitionSet
-
class PartitionSet#
Specialized container to enable partitioning algorithm via disjoint set like data structure.
Modifications to typically known algorithm (https://en.wikipedia.org/wiki/Disjoint-set_data_structure)
index set “0” is a special one and matching the root of the graph, i.e. root node will always have index 0
only “selected” nodes are inserted into sets and only these nodes are merged to form groups of nodes based on partitioning algorithm
This object is not ABI-safe.
Public Functions
-
inline PartitionSet(std::size_t topologyNodeCount) noexcept#
Construct a set for a static topology of a given
topologyNodeCount
nodes.
-
inline bool isMarked(INode *node) const#
Return true is give node is selected for partitioning and has a set allocated.
-
inline uint64_t find(INode *node)#
Find the set this node belongs to. Forwards the call to underlying implementation.
-
inline void merge(INode *nodeA, INode *nodeB)#
Merge two sets. Forwards the call to underlying implementation.