SST/macro
|
The abstract_butterfly class Encapsulates operations common to both butterfly and flattened_butterfly. More...
#include <butterfly.h>
Public Types | |
enum | dimension_t { up_dimension = 0, down_dimension = 1 } |
Public Member Functions | |
virtual | ~abstract_butterfly () |
virtual void | init_factory_params (sprockit::sim_parameters *params) |
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 | connect_objects (internal_connectable_map &objects)=0 |
Given a set of connectables, connect them appropriately. More... | |
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_route_to_coords (const coordinates &src_coords, const coordinates &dest_coords, structured_routable::path &path) const =0 |
Workhorse function for implementing minimal_route_to_switch and #minimal_route_to_node. More... | |
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 | minimal_distance (const coordinates &src_coords, const coordinates &dest_coords) const =0 |
The function accepts either source or node coordinates. More... | |
virtual int | ndimensions () const =0 |
The number of distinct 'dimensions' in the topology. More... | |
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_ejection_switch (node_id nodeaddr, int &switch_port) 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 () |
virtual void | productive_paths (structured_routable::path_set &paths, const coordinates ¤t, const coordinates &dst) |
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 std::vector< node_id > | nodes_connected_to_injection_switch (switch_id swaddr) const |
virtual std::vector< node_id > | nodes_connected_to_ejection_switch (switch_id swid) 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 |
Protected Member Functions | |
void | compute_switch_coords (switch_id uid, coordinates &coords) const |
Compute coordinates (e.g. More... | |
switch_id | switch_number (const coordinates &coords) const |
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 | |
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 abstract_butterfly class Encapsulates operations common to both butterfly and flattened_butterfly.
Definition at line 28 of file butterfly.h.
Enumerator | |
---|---|
up_dimension | |
down_dimension |
Definition at line 32 of file butterfly.h.
|
inlinevirtual |
Definition at line 38 of file butterfly.h.
References init_factory_params().
|
protectedvirtual |
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 |
Implements sstmac::hw::structured_topology.
Reimplemented in sstmac::hw::butterfly, and sstmac::hw::flattened_butterfly.
Referenced by diameter(), and sstmac::hw::butterfly::ndimensions().
void sstmac::hw::abstract_butterfly::configure_vc_routing | ( | std::map< routing::algorithm_t, int > & | m | ) | const |
Referenced by diameter().
|
inlinevirtual |
Implements sstmac::hw::structured_topology.
Definition at line 84 of file butterfly.h.
References compute_switch_coords(), configure_vc_routing(), nfly_, productive_path(), and switch_number().
|
virtual |
Reimplemented from sstmac::hw::structured_topology.
Reimplemented in sstmac::hw::butterfly, and sstmac::hw::flattened_butterfly.
Referenced by sstmac::hw::butterfly::to_string(), and ~abstract_butterfly().
|
inline |
kary
Definition at line 48 of file butterfly.h.
References kary_.
|
inline |
nfly
Definition at line 57 of file butterfly.h.
References nfly_.
|
inlinevirtual |
num_switches_per_col The butterfly is physically laid out as a 2D-graid of cols and rows.
A butterfly is an indirect network. Only the first column of switches are actually connected to compute nodes.
Implements sstmac::hw::structured_topology.
Definition at line 79 of file butterfly.h.
References nswitches_per_col_.
|
inline |
num_switches_per_col The butterfly is physically laid out as a 2D-graid of cols and rows
Definition at line 67 of file butterfly.h.
References nswitches_per_col_.
|
virtual |
dim | The dimension you want to move in. You might need to traverse other dimensions FIRST before you make progress on this dimension. |
src | The coordinates of the source switch |
dst | The coordinates of the dest switch |
path | [inout] The path configuration for making progress on dim |
Implements sstmac::hw::structured_topology.
Reimplemented in sstmac::hw::flattened_butterfly.
Referenced by diameter().
|
protectedvirtual |
Implements sstmac::hw::structured_topology.
Reimplemented in sstmac::hw::butterfly, and sstmac::hw::flattened_butterfly.
Referenced by diameter(), and sstmac::hw::butterfly::num_switches().
|
protected |
Definition at line 106 of file butterfly.h.
Referenced by kary().
|
protected |
Definition at line 107 of file butterfly.h.
Referenced by diameter(), sstmac::hw::flattened_butterfly::ndimensions(), sstmac::hw::butterfly::ndimensions(), nfly(), and sstmac::hw::butterfly::num_switches().
|
protected |
Definition at line 108 of file butterfly.h.
Referenced by num_leaf_switches(), sstmac::hw::flattened_butterfly::num_switches(), sstmac::hw::butterfly::num_switches(), and num_switches_per_col().