SST/macro
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
sstmac::hw::cartesian_topology Class Referenceabstract

The cartesian_topology class Encapsulates a topology like torus that can be naturally mapped onto an n-dimensional Cartesian (integer) coordinate system. More...

#include <cartesian_topology.h>

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

Public Member Functions

virtual void configure_geometric_paths (std::vector< int > &redundancies)=0
 configure_geometric_paths For all possible geometric or structure paths, compute their redundances in terms of number of ports that go in the same geometric or structural direction, e.g. 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
 
- Public Member Functions inherited from sstmac::hw::structured_topology
virtual ~structured_topology ()
 
virtual int num_leaf_switches () const =0
 Structured topologies can be direct (torus) or indirect (fat tree). More...
 
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 diameter () const =0
 
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 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
 
virtual void compute_switch_coords (switch_id swid, coordinates &coords) const =0
 Compute coordinates (e.g. More...
 

Protected Member Functions

virtual void init_factory_params (sprockit::sim_parameters *params)
 
- 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

std::vector< int > red_
 The number of redundant links (ports) comprising a geometric or structure direction in the topology. More...
 
- Protected Attributes inherited from sstmac::hw::structured_topology
int eject_geometric_id_
 
int injection_redundancy_
 
bool outputgraph_
 

Detailed Description

The cartesian_topology class Encapsulates a topology like torus that can be naturally mapped onto an n-dimensional Cartesian (integer) coordinate system.

Definition at line 14 of file cartesian_topology.h.

Member Function Documentation

virtual void sstmac::hw::cartesian_topology::configure_geometric_paths ( std::vector< int > &  redundancies)
pure virtual

configure_geometric_paths For all possible geometric or structure paths, compute their redundances in terms of number of ports that go in the same geometric or structural direction, e.g.

might be 3 ports that all go +X on a router

Parameters
[in,out]redundancies

Implemented in sstmac::hw::dragonfly, sstmac::hw::hdtorus, and sstmac::hw::tiled_dragonfly.

Referenced by sstmac::hw::multipath_router< ParentRouter >::set_topology().

virtual void sstmac::hw::cartesian_topology::init_factory_params ( sprockit::sim_parameters *  params)
protectedvirtual
virtual void sstmac::hw::cartesian_topology::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

Reimplemented from sstmac::hw::structured_topology.

Reimplemented in sstmac::hw::tiled_dragonfly.

Member Data Documentation

std::vector<int> sstmac::hw::cartesian_topology::red_
protected

The number of redundant links (ports) comprising a geometric or structure direction in the topology.

Definition at line 44 of file cartesian_topology.h.


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