SST/macro
Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
sstmac::hw::fat_tree Class Reference

The fat tree network generates a k-ary fat tree with l tiers. More...

#include <fat_tree.h>

Inheritance diagram for sstmac::hw::fat_tree:
Inheritance graph
Collaboration diagram for sstmac::hw::fat_tree:
Collaboration graph

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_idnodes_connected_to_injection_switch (switch_id swaddr) const
 
std::vector< node_idnodes_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 &current_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 &current, 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 &current_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_idnodes_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_
 

Detailed Description

The fat tree network generates a k-ary fat tree with l tiers.

Definition at line 91 of file fat_tree.h.

Constructor & Destructor Documentation

virtual sstmac::hw::fat_tree::~fat_tree ( )
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().

Here is the call graph for this function:

Member Function Documentation

virtual void sstmac::hw::fat_tree::compute_switch_coords ( switch_id  swid,
coordinates coords 
) const
protectedvirtual

Compute coordinates (e.g.

X,Y,Z for 3D torus)

Parameters
swidThe 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 void sstmac::hw::fat_tree::connect_objects ( internal_connectable_map &  objects)
virtual

Given a set of connectables, connect them appropriately.

Parameters
objectsThe set of objects to connect
clonerIf in parallel mode, not all objects may exist. The factory creates missing objects.
Exceptions
value_errorIf invalid switchid is passed to cloner

Implements sstmac::hw::structured_topology.

virtual int sstmac::hw::fat_tree::convert_to_port ( int  dim,
int  dir 
) const
virtual
std::string sstmac::hw::fat_tree::default_router ( ) const
inline
static int sstmac::hw::fat_tree::downColumnConnection ( int  k,
int  myColumn,
int  downPort,
int  columnSize 
)
static
virtual void sstmac::hw::fat_tree::init_factory_params ( sprockit::sim_parameters *  params)
virtual

Reimplemented from sstmac::hw::abstract_fat_tree.

virtual int sstmac::hw::fat_tree::minimal_distance ( const coordinates src_coords,
const coordinates dest_coords 
) const
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.

Parameters
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.
Returns
The number of hops to final destination

Implements sstmac::hw::structured_topology.

virtual void sstmac::hw::fat_tree::minimal_route_to_coords ( const coordinates src_coords,
const coordinates dest_coords,
structured_routable::path path 
) const
virtual

Workhorse function for implementing minimal_route_to_switch and #minimal_route_to_node.

Given source/dest coordinates, find the minimal path.

Parameters
current_sw_addrThe addr of the current switch
dest_sw_addrThe addr of the destination switch
path[inout] A complete path descriptor to the destination switch

Implements sstmac::hw::structured_topology.

virtual void sstmac::hw::fat_tree::minimal_route_to_switch ( switch_id  current_sw_addr,
switch_id  dest_sw_addr,
structured_routable::path path 
) const
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.

Parameters
current_sw_addrThe addr of the current switch
dest_sw_addrThe 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
coordinates sstmac::hw::fat_tree::neighbor_at_port ( switch_id  sid,
int  port 
) const
virtual

Reimplemented from sstmac::hw::structured_topology.

virtual int sstmac::hw::fat_tree::num_switches ( ) const
inlinevirtual
void sstmac::hw::fat_tree::productive_path ( int  dim,
const coordinates src,
const coordinates dst,
structured_routable::path path 
) const
virtual
Parameters
dimThe dimension you want to move in. You might need to traverse other dimensions FIRST before you make progress on this dimension.
srcThe coordinates of the source switch
dstThe coordinates of the dest switch
path[inout] The path configuration for making progress on dim

Implements sstmac::hw::structured_topology.

int sstmac::hw::fat_tree::switch_at_row_col ( int  row,
int  col 
) const
inline
switch_id sstmac::hw::fat_tree::switch_number ( const coordinates coords) const
virtual
virtual std::string sstmac::hw::fat_tree::to_string ( ) const
inlinevirtual

Definition at line 97 of file fat_tree.h.

static int sstmac::hw::fat_tree::upColumnConnection ( int  k,
int  myColumn,
int  upPort,
int  columnSize 
)
static

The documentation for this class was generated from the following file: