SST/macro
|
The butterfly class Encapsulates a butterfly topology as described in "High Performance Datacenter Networks" by Abts and Kim. More...
#include <butterfly.h>
Public Member Functions | |
virtual std::string | to_string () const |
virtual void | init_factory_params (sprockit::sim_parameters *params) |
virtual | ~butterfly () |
virtual int | num_switches () const |
void | minimal_route_to_coords (const coordinates &src_coords, const coordinates &dest_coords, structured_routable::path &path) const |
Workhorse function for implementing minimal_route_to_switch and #minimal_route_to_node. More... | |
int | minimal_distance (const coordinates &src_coords, const coordinates &dest_coords) const |
The function accepts either source or node coordinates. More... | |
switch_id | switch_number (const coordinates &coords) const |
virtual void | connect_objects (internal_connectable_map &switches) |
Given a set of connectables, connect them appropriately. More... | |
switch_id | endpoint_to_ejection_switch (node_id nodeaddr, int &switch_port) const |
virtual int | convert_to_port (int dim, int dir) const |
int | ndimensions () const |
Each level in a kary-nfly counts as a dimension. More... | |
std::vector< node_id > | nodes_connected_to_injection_switch (switch_id swaddr) const |
std::vector< node_id > | nodes_connected_to_ejection_switch (switch_id swaddr) const |
void | productive_paths (structured_routable::path_set &paths, const coordinates ¤t, const coordinates &dst) |
Public Member Functions inherited from sstmac::hw::abstract_butterfly | |
virtual | ~abstract_butterfly () |
int | kary () const |
kary More... | |
int | nfly () const |
nfly More... | |
int | num_switches_per_col () const |
num_switches_per_col The butterfly is physically laid out as a 2D-graid of cols and rows More... | |
virtual int | num_leaf_switches () const |
num_switches_per_col The butterfly is physically laid out as a 2D-graid of cols and rows. More... | |
int | diameter () const |
virtual void | productive_path (int dim, const coordinates &src, const coordinates &dst, structured_routable::path &path) const |
void | configure_vc_routing (std::map< routing::algorithm_t, int > &m) const |
Public Member Functions inherited from sstmac::hw::structured_topology | |
virtual | ~structured_topology () |
virtual void | build_internal_connectables (internal_connectable_map &connectables, sprockit::factory< connectable > *factory, partition *part, int my_rank, sprockit::sim_parameters *params, connectable *dummy) |
virtual void | build_endpoint_connectables (end_point_connectable_map &connectables, sprockit::factory< connectable > *factory, partition *part, int my_rank, sprockit::sim_parameters *params) |
virtual void | build_interface_connectables (int conc, end_point_connectable_map &connectables, sprockit::factory2< connectable > *nic_factory, partition *part, int my_rank, sprockit::sim_parameters *params, sprockit::factory_type *interconnect) |
virtual void | minimal_routes_to_coords (const coordinates &src_coords, const coordinates &dest_coords, structured_routable::path ¤t_path, structured_routable::path_set &paths) const |
virtual int | endpoints_per_switch (switch_id addr) const |
Given a switch address, return number of nodes connected to it. More... | |
virtual int | num_nodes () const |
virtual int | num_endpoints () const |
coordinates | switch_coords (switch_id swid) const |
Compute coordinates (e.g. More... | |
virtual coordinates | node_coords (node_id nid) const |
Compute coordinates (e.g. More... | |
coordinates | endpoint_coords (node_id nid) const |
virtual switch_id | endpoint_to_injection_switch (node_id nodeaddr, int &switch_port) const |
virtual int | endpoint_to_ejection_port (node_id addr) const |
virtual int | endpoint_to_injection_port (node_id addr) const |
virtual int | endpoint_to_switch_port (node_id nid) const |
void | finalize_init () |
std::string | label (node_id nid) const |
std::string | label (switch_id sid) const |
virtual void | minimal_route_to_switch (switch_id current_sw_addr, switch_id dest_sw_addr, structured_routable::path &path) const |
Implementation of topology::minimal_route_to_switch. More... | |
virtual void | minimal_routes_to_switch (switch_id current_sw_addr, switch_id dest_sw_addr, structured_routable::path ¤t_path, structured_routable::path_set &paths) const |
virtual void | eject_paths_on_switch (node_id dest_addr, switch_id sw_addr, structured_routable::path_set &paths) const |
virtual int | num_hops_to_node (node_id src, node_id dst) const |
virtual coordinates | neighbor_at_port (switch_id sid, int port) const |
virtual node_id | node_addr (const coordinates &coords) const |
virtual node_id | node_addr (const coordinates &sw_coords, int port) const |
virtual void | send_partners (traffic_pattern::type_t ty, node_id src_node, std::vector< node_id > &partners) const |
virtual void | recv_partners (traffic_pattern::type_t ty, node_id src_node, std::vector< node_id > &partners) const |
Private Member Functions | |
virtual void | compute_switch_coords (switch_id uid, coordinates &coords) const |
Compute coordinates (e.g. More... | |
int | last_col_index_start () const |
Private Attributes | |
long | last_col_index_start_ |
Additional Inherited Members | |
Public Types inherited from sstmac::hw::abstract_butterfly | |
enum | dimension_t { up_dimension = 0, down_dimension = 1 } |
Protected Member Functions inherited from sstmac::hw::structured_topology | |
void | configure_injection_geometry (std::vector< int > &redundancies) |
virtual std::vector< node_id > | nodes_connected_to_switch (switch_id swaddr) const |
structured_topology () | |
void | partners (bool get_send_partner, traffic_pattern::type_t ty, node_id src, std::vector< node_id > &partner_list) const |
virtual void | nearest_neighbor_partners (const coordinates &src_sw_coords, int port, std::vector< node_id > &partners) const |
virtual void | tornado_recv_partners (const coordinates &src_sw_coords, int port, std::vector< node_id > &partners) const |
virtual void | tornado_send_partners (const coordinates &src_sw_coords, int port, std::vector< node_id > &partners) const |
virtual void | bit_complement_partners (const coordinates &src_sw_coords, int port, std::vector< node_id > &partners) const |
Protected Attributes inherited from sstmac::hw::abstract_butterfly | |
int | kary_ |
int | nfly_ |
long | nswitches_per_col_ |
Protected Attributes inherited from sstmac::hw::structured_topology | |
int | eject_geometric_id_ |
int | injection_redundancy_ |
bool | outputgraph_ |
The butterfly class Encapsulates a butterfly topology as described in "High Performance Datacenter Networks" by Abts and Kim.
Definition at line 117 of file butterfly.h.
|
inlinevirtual |
Definition at line 130 of file butterfly.h.
|
privatevirtual |
Compute coordinates (e.g.
X,Y,Z for 3D torus)
swid | The unique index defining a switch location |
coords | [inout] The unique coordinates of the switch |
Reimplemented from sstmac::hw::abstract_butterfly.
|
virtual |
Given a set of connectables, connect them appropriately.
objects | The set of objects to connect |
cloner | If in parallel mode, not all objects may exist. The factory creates missing objects. |
value_error | If invalid switchid is passed to cloner |
Implements sstmac::hw::structured_topology.
|
virtual |
|
virtual |
Reimplemented from sstmac::hw::structured_topology.
|
virtual |
Reimplemented from sstmac::hw::abstract_butterfly.
|
inlineprivate |
Definition at line 187 of file butterfly.h.
|
virtual |
The function accepts either source or node coordinates.
This gives the minimal distance counting the number of hops between switches. If node coordinates are given, the last coordinate is just ignored.
src_coords. | The source coordinates. This can be either switch or node coordinates. |
dest_coords. | The destination coordinates. This can be either switch or node coordinates. |
Implements sstmac::hw::structured_topology.
|
virtual |
Workhorse function for implementing minimal_route_to_switch and #minimal_route_to_node.
Given source/dest coordinates, find the minimal path.
current_sw_addr | The addr of the current switch |
dest_sw_addr | The addr of the destination switch |
path | [inout] A complete path descriptor to the destination switch |
Implements sstmac::hw::structured_topology.
|
inlinevirtual |
Each level in a kary-nfly counts as a dimension.
Implements sstmac::hw::structured_topology.
Definition at line 166 of file butterfly.h.
References sstmac::hw::abstract_butterfly::compute_switch_coords(), sstmac::hw::abstract_butterfly::nfly_, sstmac::hw::structured_topology::nodes_connected_to_ejection_switch(), sstmac::hw::structured_topology::nodes_connected_to_injection_switch(), and sstmac::hw::structured_topology::productive_paths().
|
virtual |
Reimplemented from sstmac::hw::structured_topology.
|
virtual |
Reimplemented from sstmac::hw::structured_topology.
|
inlinevirtual |
Definition at line 133 of file butterfly.h.
References sstmac::hw::structured_topology::connect_objects(), sstmac::hw::structured_topology::endpoint_to_ejection_switch(), sstmac::hw::structured_topology::minimal_distance(), sstmac::hw::structured_topology::minimal_route_to_coords(), sstmac::hw::abstract_butterfly::nfly_, sstmac::hw::abstract_butterfly::nswitches_per_col_, and sstmac::hw::abstract_butterfly::switch_number().
|
virtual |
Reimplemented from sstmac::hw::structured_topology.
|
virtual |
Reimplemented from sstmac::hw::abstract_butterfly.
|
inlinevirtual |
Definition at line 123 of file butterfly.h.
References sstmac::hw::abstract_butterfly::init_factory_params().
|
private |
Definition at line 192 of file butterfly.h.