SimGrid
3.21
Versatile Simulation of Distributed Systems
|
NetZone using a Dragonfly topology.
Generate dragonfly according to the topology asked for, according to: Cray Cascade: a Scalable HPC System based on a Dragonfly Network Greg Faanes, Abdulla Bataineh, Duncan Roweth, Tom Court, Edwin Froese, Bob Alverson, Tim Johnson, Joe Kopnick, Mike Higgins and James Reinhard Cray Inc, Chippewa Falls, Wisconsin, USA or http://www.cray.com/sites/default/files/resources/CrayXCNetwork.pdf
We use the same denomination for the different levels, with a Green, Black and Blue color scheme for the three different levels.
Description of the topology has to be given with a string of type : "3,4;4,3;5,1;2"
Last part : "2" : 2 nodes per blade Third part : "5,1" : five blades/routers per chassis, with one link between each (green network) Second part : "4,3" = four chassis per group, with three links between each nth router of each chassis (black network) First part : "3,4" = three electrical groups, linked in an alltoall pattern by 4 links each (blue network)
LIMITATIONS (for now):
#include <DragonflyZone.hpp>
Inherits simgrid::kernel::routing::ClusterZone.
Public Member Functions | |
DragonflyZone (NetZoneImpl *father, std::string name, resource::NetworkModel *netmodel) | |
~DragonflyZone () override | |
void | get_local_route (NetPoint *src, NetPoint *dst, RouteCreationArgs *into, double *latency) override |
Probe the routing path between two points that are local to the called NetZone. More... | |
void | parse_specific_arguments (ClusterCreationArgs *cluster) override |
void | seal () override |
Seal your netzone once you're done adding content, and before routing stuff through it. More... | |
void | rankId_to_coords (int rank_id, unsigned int coords[4]) |
![]() | |
ClusterZone (NetZoneImpl *father, std::string name, resource::NetworkModel *netmodel) | |
void | get_graph (xbt_graph_t graph, std::map< std::string, xbt_node_t > *nodes, std::map< std::string, xbt_edge_t > *edges) override |
virtual void | create_links_for_node (ClusterCreationArgs *cluster, int id, int rank, unsigned int position) |
unsigned int | node_pos (int id) |
unsigned int | node_pos_with_loopback (int id) |
unsigned int | node_pos_with_loopback_limiter (int id) |
![]() | |
s4u::NetZone * | get_iface () |
simgrid::s4u::Host * | create_host (const char *name, std::vector< double > *speed_per_pstate, int core_count, std::map< std::string, std::string > *props) |
Make an host within that NetZone. More... | |
virtual void | add_bypass_route (NetPoint *src, NetPoint *dst, NetPoint *gw_src, NetPoint *gw_dst, std::vector< resource::LinkImpl *> &link_list, bool symmetrical) |
Creates a new route in this NetZone. More... | |
virtual int | add_component (kernel::routing::NetPoint *elm) |
virtual void | add_route (kernel::routing::NetPoint *src, kernel::routing::NetPoint *dst, kernel::routing::NetPoint *gw_src, kernel::routing::NetPoint *gw_dst, std::vector< kernel::resource::LinkImpl *> &link_list, bool symmetrical) |
unsigned int | get_table_size () |
std::vector< kernel::routing::NetPoint * > | get_vertices () |
NetZoneImpl * | get_father () |
std::vector< NetZoneImpl * > * | get_children () |
const std::string & | get_name () const |
Retrieves the name of that netzone as a C++ string. More... | |
const char * | get_cname () const |
Retrieves the name of that netzone as a C string. More... | |
std::vector< s4u::Host * > | get_all_hosts () |
int | get_host_count () |
Additional Inherited Members | |
![]() | |
enum | RoutingMode { RoutingMode::unset = 0, RoutingMode::base, RoutingMode::recursive } |
![]() | |
static void | get_global_route (routing::NetPoint *src, routing::NetPoint *dst, std::vector< resource::LinkImpl *> &links, double *latency) |
![]() | |
std::unordered_map< unsigned int, std::pair< kernel::resource::LinkImpl *, kernel::resource::LinkImpl * > > | private_links_ |
void * | loopback_ = nullptr |
kernel::resource::LinkImpl * | backbone_ = nullptr |
NetPoint * | router_ = nullptr |
bool | has_limiter_ = false |
bool | has_loopback_ = false |
unsigned int | num_links_per_node_ = 1 |
![]() | |
resource::NetworkModel * | network_model_ |
RoutingMode | hierarchy_ = RoutingMode::unset |
![]() | |
NetZoneImpl (NetZoneImpl *father, std::string name, resource::NetworkModel *network_model) | |
virtual | ~NetZoneImpl () |
bool | get_bypass_route (routing::NetPoint *src, routing::NetPoint *dst, std::vector< resource::LinkImpl *> &links, double *latency) |
retrieves the list of all routes of size 1 (of type src x dst x Link) More... | |
|
explicit |
|
override |
|
overridevirtual |
Probe the routing path between two points that are local to the called NetZone.
src | where from |
dst | where to |
into | Container into which the traversed links and gateway informations should be pushed |
latency | Accumulator in which the latencies should be added (caller must set it to 0) |
Reimplemented from simgrid::kernel::routing::ClusterZone.
|
overridevirtual |
Reimplemented from simgrid::kernel::routing::ClusterZone.
|
overridevirtual |
Seal your netzone once you're done adding content, and before routing stuff through it.
Reimplemented from simgrid::kernel::routing::NetZoneImpl.
void simgrid::kernel::routing::DragonflyZone::rankId_to_coords | ( | int | rank_id, |
unsigned int | coords[4] | ||
) |