12 #ifndef SSTMAC_HARDWARE_NETWORK_TOPOLOGY_DRAGONFLY_H_INCLUDED 13 #define SSTMAC_HARDWARE_NETWORK_TOPOLOGY_DRAGONFLY_H_INCLUDED 48 if (port >= (
x_ +
y_)){
50 }
else if (port >=
x_){
91 get_coords(
long uid,
int &x,
int &y,
int &g)
const;
94 get_uid(
int x,
int y,
int g)
const;
151 std::vector<node_id>&
partners)
const;
156 std::vector<node_id>& partners)
const;
161 std::vector<node_id>& partners)
const;
166 std::vector<node_id>& partners)
const;
void bit_complement_partners(const coordinates &src_sw_coords, int port, std::vector< node_id > &partners) const
virtual void configure_geometric_paths(std::vector< int > &redundancies)
configure_geometric_paths For all possible geometric or structure paths, compute their redundances in...
int find_y_path_to_group(int myX, int myG, int dstg) const
int num_leaf_switches() const
Structured topologies can be direct (torus) or indirect (fat tree).
virtual void init_factory_params(sprockit::sim_parameters *params)
void init_common_params(sprockit::sim_parameters *params)
void minimal_route_to_group(int myX, int myY, int myG, int &dim, int &dir, int dstg) const
virtual std::string to_string() const
void tornado_send_partners(const coordinates &src_sw_coords, int port, std::vector< node_id > &partners) const
switch_id switch_number(const coordinates &coords) const
virtual void new_routing_stage(structured_routable *rtbl)
virtual void connect_objects(internal_connectable_map &switches)
Given a set of connectables, connect them appropriately.
virtual void find_path_to_group(int myX, int myY, int myG, int &dsty, int &dstx, int dstg) const
std::string printf(const char *fmt,...)
int minimal_route_to_Y(int hisy) const
virtual int num_switches() const
void tornado_recv_partners(const coordinates &src_sw_coords, int port, std::vector< node_id > &partners) const
int ndimensions() const
The number of distinct 'dimensions' in the topology.
void configure_vc_routing(std::map< routing::algorithm_t, int > &m) const
virtual void productive_path(int dim, const coordinates &src, const coordinates &dst, structured_routable::path &path) const
virtual int convert_to_port(int dim, int dir) const
The cartesian_topology class Encapsulates a topology like torus that can be naturally mapped onto an ...
SUMI = Simulator unified messagine interface It is also the name for a solid ink in Japanese - i...
void nearest_neighbor_partners(const coordinates &src_sw_coords, int port, std::vector< node_id > &partners) const
long get_uid(int x, int y, int g) const
static std::string set_string(int x, int y, int g)
int find_x_path_to_group(int myY, int myG, int dstg) const
virtual void compute_switch_coords(switch_id uid, coordinates &coords) const
Compute coordinates (e.g.
void partners(bool get_send_partner, traffic_pattern::type_t ty, node_id src, std::vector< node_id > &partner_list) const
coordinates neighbor_at_port(switch_id sid, int port) const
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.
virtual bool xy_connected_to_group(int myX, int myY, int myG, int dstg) const
int minimal_route_to_X(int hisx) const
virtual switch_id random_intermediate_switch(switch_id current_sw, switch_id dest_sw=switch_id(-1))
virtual int diameter() const
int minimal_distance(const coordinates &src_coords, const coordinates &dest_coords) const
The function accepts either source or node coordinates.
int xyg_dir_to_group(int myX, int myY, int myG, int dir) const
bool true_random_intermediate_
dimension_t dim_for_port(int port)
void get_coords(long uid, int &x, int &y, int &g) const