16 #ifndef SSTMAC_HARDWARE_NETWORK_TOPOLOGY_FATTREE_H_INCLUDED 17 #define SSTMAC_HARDWARE_NETWORK_TOPOLOGY_FATTREE_H_INCLUDED 56 for (
int i=0; i < exp; ++i){
98 return "fat tree topology";
110 convert_to_port(
int dim,
int dir)
const;
126 configure_vc_routing(std::map<routing::algorithm_t, int> &m)
const;
151 nearest_common_ancestor_level(
156 nearest_common_ancestor_level(
161 nearest_common_ancestor_level(
166 nearest_common_ancestor_level(
181 upColumnConnection(
int k,
int myColumn,
int upPort,
int columnSize);
184 downColumnConnection(
int k,
int myColumn,
int downPort,
int columnSize);
197 return "simple fat tree topology";
210 return num_switches_;
214 convert_to_port(
int dim,
int dir)
const;
218 int* switches_per_lp,
220 int *switch_to_thread,
221 int& local_num_switches,
252 configure_vc_routing(std::map<routing::algorithm_t, int> &m)
const;
264 int num_hops(
int srcLevel,
int srcOffset,
int dstLevel,
int dstOffset)
const;
std::vector< node_id > nodes_connected_to_switch(switch_id swaddr) const
std::vector< int > level_offsets_
virtual std::string to_string() const
virtual int minimal_distance(const coordinates &src_coords, const coordinates &dest_coords) const =0
The function accepts either source or node coordinates.
std::vector< node_id > nodes_connected_to_injection_switch(switch_id swaddr) const
virtual std::string to_string() const
virtual void connect_objects(internal_connectable_map &objects)=0
Given a set of connectables, connect them appropriately.
virtual int ndimensions() const
The number of distinct 'dimensions' in the topology.
virtual void compute_switch_coords(switch_id swid, coordinates &coords) const =0
Compute coordinates (e.g.
The fat tree network generates a k-ary fat tree with l tiers.
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.
int switch_at_row_col(int row, int col) const
virtual ~simple_fat_tree()
std::vector< node_id > nodes_connected_to_ejection_switch(switch_id swaddr) const
virtual void init_factory_params(sprockit::sim_parameters *params)
virtual int num_switches() const
SUMI = Simulator unified messagine interface It is also the name for a solid ink in Japanese - i...
std::vector< double > tapering_
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 int num_leaf_switches() const
Structured topologies can be direct (torus) or indirect (fat tree).
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.
Encapsulates a topology like torus, fat tree, butterfly which has a regular, well-defined structure...
static int pow(int a, int exp)
virtual switch_id switch_number(const coordinates &coords) const =0
Class for storing all the partitions given to us by METIS.
std::string default_router() const
virtual void productive_path(int dim, const coordinates &src, const coordinates &dst, structured_routable::path &path) const =0