SST/macro
|
The fat tree network generates a k-ary fat tree with l tiers. More...
#include <fat_tree.h>
Public Member Functions | |
virtual std::string | to_string () const |
virtual | ~fat_tree () |
virtual void | init_factory_params (sprockit::sim_parameters *params) |
virtual void | connect_objects (internal_connectable_map &switches) |
Given a set of connectables, connect them appropriately. More... | |
virtual int | convert_to_port (int dim, int dir) const |
virtual int | num_switches () const |
std::string | default_router () const |
coordinates | neighbor_at_port (switch_id sid, int port) const |
void | configure_vc_routing (std::map< routing::algorithm_t, int > &m) const |
switch_id | switch_number (const coordinates &coords) const |
void | productive_path (int dim, const coordinates &src, const coordinates &dst, structured_routable::path &path) 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_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 | nearest_common_ancestor_level (const switch_id &src_sw_addr, const switch_id &dst_sw_addr) const |
int | nearest_common_ancestor_level (const switch_id &src_sw_addr, const coordinates &dst_coords) const |
int | nearest_common_ancestor_level (const coordinates &src_coords, const switch_id &dst_sw_addr) const |
int | nearest_common_ancestor_level (const coordinates &src_corrds, const coordinates &dst_coords) const |
virtual int | minimal_distance (const coordinates &src_coords, const coordinates &dest_coords) const |
The function accepts either source or node coordinates. More... | |
int | switch_at_row_col (int row, int col) const |
Public Member Functions inherited from sstmac::hw::abstract_fat_tree | |
int | l () const |
int | k () const |
virtual int | ndimensions () const |
The number of distinct 'dimensions' in the topology. More... | |
int | diameter () const |
virtual int | num_leaf_switches () const |
Structured topologies can be direct (torus) or indirect (fat tree). 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 |
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_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_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 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 |
Static Public Member Functions | |
static int | upColumnConnection (int k, int myColumn, int upPort, int columnSize) |
static int | downColumnConnection (int k, int myColumn, int downPort, int columnSize) |
Static Public Member Functions inherited from sstmac::hw::abstract_fat_tree | |
static int | pow (int a, int exp) |
Protected Member Functions | |
virtual void | compute_switch_coords (switch_id uid, coordinates &coords) const |
Compute coordinates (e.g. More... | |
Protected Member Functions inherited from sstmac::hw::abstract_fat_tree | |
std::vector< node_id > | nodes_connected_to_switch (switch_id swaddr) const |
Protected Member Functions inherited from sstmac::hw::structured_topology | |
void | configure_injection_geometry (std::vector< int > &redundancies) |
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 |
Additional Inherited Members | |
Public Types inherited from sstmac::hw::abstract_fat_tree | |
enum | dimension_t { up_dimension = 1, down_dimension = 0 } |
Protected Attributes inherited from sstmac::hw::abstract_fat_tree | |
int | l_ |
int | k_ |
int | numleafswitches_ |
int | toplevel_ |
Protected Attributes inherited from sstmac::hw::structured_topology | |
int | eject_geometric_id_ |
int | injection_redundancy_ |
bool | outputgraph_ |
The fat tree network generates a k-ary fat tree with l tiers.
Definition at line 91 of file fat_tree.h.
|
inlinevirtual |
Definition at line 101 of file fat_tree.h.
References sstmac::hw::structured_topology::connect_objects(), and sstmac::hw::abstract_fat_tree::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.
void sstmac::hw::fat_tree::configure_vc_routing | ( | std::map< routing::algorithm_t, int > & | m | ) | const |
|
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 |
|
inline |
Definition at line 118 of file fat_tree.h.
References sstmac::hw::structured_topology::minimal_distance(), sstmac::hw::structured_topology::minimal_route_to_coords(), sstmac::hw::structured_topology::minimal_route_to_switch(), sstmac::hw::structured_topology::neighbor_at_port(), sstmac::hw::structured_topology::productive_path(), and sstmac::hw::structured_topology::switch_number().
|
static |
|
virtual |
Reimplemented from sstmac::hw::abstract_fat_tree.
|
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.
|
virtual |
Implementation of topology::minimal_route_to_switch.
For structured topologies, this basically just computes the coordinates of source, dest switch and calls minimal_route_to_coords.
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 |
Reimplemented from sstmac::hw::structured_topology.
int sstmac::hw::fat_tree::nearest_common_ancestor_level | ( | const switch_id & | src_sw_addr, |
const switch_id & | dst_sw_addr | ||
) | const |
int sstmac::hw::fat_tree::nearest_common_ancestor_level | ( | const switch_id & | src_sw_addr, |
const coordinates & | dst_coords | ||
) | const |
int sstmac::hw::fat_tree::nearest_common_ancestor_level | ( | const coordinates & | src_coords, |
const switch_id & | dst_sw_addr | ||
) | const |
int sstmac::hw::fat_tree::nearest_common_ancestor_level | ( | const coordinates & | src_corrds, |
const coordinates & | dst_coords | ||
) | const |
|
virtual |
Reimplemented from sstmac::hw::structured_topology.
|
inlinevirtual |
Definition at line 113 of file fat_tree.h.
References sstmac::hw::abstract_fat_tree::l_, and sstmac::hw::abstract_fat_tree::numleafswitches_.
|
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.
|
inline |
Definition at line 176 of file fat_tree.h.
References sstmac::hw::structured_topology::compute_switch_coords(), sstmac::hw::abstract_fat_tree::k(), and sstmac::hw::abstract_fat_tree::numleafswitches_.
|
virtual |
Implements sstmac::hw::structured_topology.
|
inlinevirtual |
Definition at line 97 of file fat_tree.h.
|
static |