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

The abstract_butterfly class Encapsulates operations common to both butterfly and flattened_butterfly. More...

#include <butterfly.h>

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

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 &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 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 &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 std::vector< node_idnodes_connected_to_injection_switch (switch_id swaddr) const
 
virtual std::vector< node_idnodes_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_idnodes_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_
 

Detailed Description

The abstract_butterfly class Encapsulates operations common to both butterfly and flattened_butterfly.

Definition at line 28 of file butterfly.h.

Member Enumeration Documentation

Enumerator
up_dimension 
down_dimension 

Definition at line 32 of file butterfly.h.

Constructor & Destructor Documentation

virtual sstmac::hw::abstract_butterfly::~abstract_butterfly ( )
inlinevirtual

Definition at line 38 of file butterfly.h.

References init_factory_params().

Here is the call graph for this function:

Member Function Documentation

void sstmac::hw::abstract_butterfly::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.

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().

int sstmac::hw::abstract_butterfly::diameter ( ) const
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().

Here is the call graph for this function:

virtual void sstmac::hw::abstract_butterfly::init_factory_params ( sprockit::sim_parameters *  params)
virtual
int sstmac::hw::abstract_butterfly::kary ( ) const
inline

kary

Returns
The branching degree of the butterfly

Definition at line 48 of file butterfly.h.

References kary_.

int sstmac::hw::abstract_butterfly::nfly ( ) const
inline

nfly

Returns
The number of stages in the butterfly

Definition at line 57 of file butterfly.h.

References nfly_.

virtual int sstmac::hw::abstract_butterfly::num_leaf_switches ( ) const
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.

Returns
The number of switches in a column of the 2D physical layout

Implements sstmac::hw::structured_topology.

Definition at line 79 of file butterfly.h.

References nswitches_per_col_.

int sstmac::hw::abstract_butterfly::num_switches_per_col ( ) const
inline

num_switches_per_col The butterfly is physically laid out as a 2D-graid of cols and rows

Returns
The number of switches in a column of the 2D physical layout

Definition at line 67 of file butterfly.h.

References nswitches_per_col_.

virtual void sstmac::hw::abstract_butterfly::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.

Reimplemented in sstmac::hw::flattened_butterfly.

Referenced by diameter().

switch_id sstmac::hw::abstract_butterfly::switch_number ( const coordinates coords) const
protectedvirtual

Member Data Documentation

int sstmac::hw::abstract_butterfly::kary_
protected

Definition at line 106 of file butterfly.h.

Referenced by kary().

int sstmac::hw::abstract_butterfly::nfly_
protected
long sstmac::hw::abstract_butterfly::nswitches_per_col_
protected

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