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

#include <fat_tree.h>

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

Public Types

enum  dimension_t { up_dimension = 1, down_dimension = 0 }
 

Public Member Functions

int l () const
 
int k () const
 
virtual void init_factory_params (sprockit::sim_parameters *params)
 
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 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 &current_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 switch_id switch_number (const coordinates &coords) const =0
 
virtual void productive_path (int dim, const coordinates &src, const coordinates &dst, structured_routable::path &path) const =0
 
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_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 &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 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
 
virtual void compute_switch_coords (switch_id swid, coordinates &coords) const =0
 Compute coordinates (e.g. More...
 

Static Public Member Functions

static int pow (int a, int exp)
 

Protected Member Functions

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
 

Protected Attributes

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

Definition at line 25 of file fat_tree.h.

Member Enumeration Documentation

Enumerator
up_dimension 
down_dimension 

Definition at line 29 of file fat_tree.h.

Member Function Documentation

int sstmac::hw::abstract_fat_tree::diameter ( ) const
inlinevirtual

Implements sstmac::hw::structured_topology.

Definition at line 63 of file fat_tree.h.

References l_.

virtual void sstmac::hw::abstract_fat_tree::init_factory_params ( sprockit::sim_parameters *  params)
virtual
int sstmac::hw::abstract_fat_tree::k ( ) const
inline

Definition at line 40 of file fat_tree.h.

References init_factory_params(), and k_.

Referenced by sstmac::hw::fat_tree::switch_at_row_col().

Here is the call graph for this function:

int sstmac::hw::abstract_fat_tree::l ( ) const
inline

Definition at line 35 of file fat_tree.h.

References l_.

virtual int sstmac::hw::abstract_fat_tree::ndimensions ( ) const
inlinevirtual

The number of distinct 'dimensions' in the topology.

This can correspond directly to standard X,Y,Z dimensions or the the number of levels in a fat tree. The keyword topology_redundant vector should have this many entries.

Implements sstmac::hw::structured_topology.

Definition at line 48 of file fat_tree.h.

std::vector<node_id> sstmac::hw::abstract_fat_tree::nodes_connected_to_ejection_switch ( switch_id  swaddr) const
virtual

Reimplemented from sstmac::hw::structured_topology.

Referenced by num_leaf_switches().

std::vector<node_id> sstmac::hw::abstract_fat_tree::nodes_connected_to_injection_switch ( switch_id  swaddr) const
virtual

Reimplemented from sstmac::hw::structured_topology.

Referenced by num_leaf_switches().

std::vector<node_id> sstmac::hw::abstract_fat_tree::nodes_connected_to_switch ( switch_id  swaddr) const
protectedvirtual

Reimplemented from sstmac::hw::structured_topology.

Referenced by num_leaf_switches().

virtual int sstmac::hw::abstract_fat_tree::num_leaf_switches ( ) const
inlinevirtual

Structured topologies can be direct (torus) or indirect (fat tree).

We therefore need to distinguish the total number of switches and the number of leaf switches - i.e. those directly connected to nodes. For direct topologies, num_switches and num_leaf_switches are the same. For indirect, num_leaf_switches < num_switches.

Returns
The number of leaf switches directly connected to compute nodes

Implements sstmac::hw::structured_topology.

Definition at line 68 of file fat_tree.h.

References nodes_connected_to_ejection_switch(), nodes_connected_to_injection_switch(), nodes_connected_to_switch(), and numleafswitches_.

Here is the call graph for this function:

static int sstmac::hw::abstract_fat_tree::pow ( int  a,
int  exp 
)
inlinestatic

Definition at line 54 of file fat_tree.h.

Member Data Documentation

int sstmac::hw::abstract_fat_tree::k_
protected

Definition at line 83 of file fat_tree.h.

Referenced by k().

int sstmac::hw::abstract_fat_tree::l_
protected

Definition at line 83 of file fat_tree.h.

Referenced by diameter(), l(), and sstmac::hw::fat_tree::num_switches().

int sstmac::hw::abstract_fat_tree::numleafswitches_
protected
int sstmac::hw::abstract_fat_tree::toplevel_
protected

Definition at line 84 of file fat_tree.h.


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