template<typename Gnl>
FMKWayGainMgr class

FMKWayGainMgr.

Template parameters
Gnl Generalized Netlist

Base classes

template<typename Gnl, typename GainCalc, class Derived>
class FMGainMgr<Gnl, FMKWayGainCalc<Gnl>, FMKWayGainMgr<Gnl>>

Public types

using Base = FMGainMgr<Gnl, FMKWayGainCalc<Gnl>, FMKWayGainMgr<Gnl>>
using GainCalc_ = FMKWayGainCalc<Gnl>
using node_t = typename Gnl::node_t

Constructors, destructors, conversion operators

FMKWayGainMgr(const Gnl& hyprgraph, std::uint8_t num_parts)
Constructs a new FMKWayGainMgr object.

Public functions

auto init(gsl::span<const std::uint8_t> part) -> int -> auto
Initializes the gain manager with the given partition information.
auto modify_key(const node_t& w, std::uint8_t part_w, gsl::span<const int> keys) -> void -> auto
Modifies the key for the given vertex in the gain buckets for all partitions except the given one.
auto update_move_v(const MoveInfoV<node_t>& move_info_v, int gain) -> void -> auto
Updates the move information for a vertex.
auto lock(uint8_t whichPart, const node_t& v) -> void -> auto
Locks the vertex link for the given partition and vertex.
auto lock_all(uint8_t, const node_t& v) -> void -> auto
Locks the vertex link for the given vertex in all partitions.

Function documentation

template<typename Gnl>
FMKWayGainMgr<Gnl>::FMKWayGainMgr(const Gnl& hyprgraph, std::uint8_t num_parts)

Constructs a new FMKWayGainMgr object.

Parameters
hyprgraph in The hypergraph to use.
num_parts in The number of partitions.

template<typename Gnl>
auto FMKWayGainMgr<Gnl>::init(gsl::span<const std::uint8_t> part) -> int

Initializes the gain manager with the given partition information.

Parameters
part in The partition information to initialize the gain manager with.
Returns int The result of the initialization.

template<typename Gnl>
auto FMKWayGainMgr<Gnl>::modify_key(const node_t& w, std::uint8_t part_w, gsl::span<const int> keys) -> void

Modifies the key for the given vertex in the gain buckets for all partitions except the given one.

Parameters
in The vertex to modify the key for.
part_w in The partition that the vertex belongs to.
keys in The new keys to set for the vertex in each partition.

template<typename Gnl>
auto FMKWayGainMgr<Gnl>::update_move_v(const MoveInfoV<node_t>& move_info_v, int gain) -> void

Updates the move information for a vertex.

Parameters
move_info_v in The move information for the vertex.
gain in The gain associated with the move.

template<typename Gnl>
auto FMKWayGainMgr<Gnl>::lock(uint8_t whichPart, const node_t& v) -> void

Locks the vertex link for the given partition and vertex.

Parameters
whichPart in The partition to lock the vertex link for.
in The vertex to lock the link for.

template<typename Gnl>
auto FMKWayGainMgr<Gnl>::lock_all(uint8_t, const node_t& v) -> void

Locks the vertex link for the given vertex in all partitions.

Parameters
in The vertex to lock the link for.