SimGrid  3.18
Versatile Simulation of Distributed Systems
simgrid::kernel::routing::DragonflyZone Class Reference

Detailed Description

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):

  • Routing is only static and uses minimal routes.
  • When n links are used between two routers/groups, we consider only one link with n times the bandwidth (needs to be validated on a real system)
  • All links have the same characteristics for now
  • Blue links are all attached to routers in the chassis n°0. This limits the number of groups possible to the number of blades in a chassis. This is also not realistic, as blue level can use more links than a single Aries can handle, thus it should use several routers.

#include <DragonflyZone.hpp>

Inheritance diagram for simgrid::kernel::routing::DragonflyZone:
simgrid::kernel::routing::ClusterZone simgrid::kernel::routing::NetZoneImpl simgrid::s4u::NetZone

Public Member Functions

 DragonflyZone (NetZone *father, std::string name)
 
 ~DragonflyZone () override
 
void getLocalRoute (NetPoint *src, NetPoint *dst, sg_platf_route_cbarg_t 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 generateRouters ()
 
void generateLinks ()
 
void createLink (const std::string &id, int numlinks, surf::LinkImpl **linkup, surf::LinkImpl **linkdown)
 
- Public Member Functions inherited from simgrid::kernel::routing::ClusterZone
 ClusterZone (NetZone *father, std::string name)
 
void getGraph (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 nodePosition (int id)
 
unsigned int nodePositionWithLoopback (int id)
 
unsigned int nodePositionWithLimiter (int id)
 
- Public Member Functions inherited from simgrid::kernel::routing::NetZoneImpl
simgrid::s4u::HostcreateHost (const char *name, std::vector< double > *speedPerPstate, int coreAmount, std::map< std::string, std::string > *props)
 Make an host within that NetZone. More...
 
void addBypassRoute (NetPoint *src, NetPoint *dst, NetPoint *gw_src, NetPoint *gw_dst, std::vector< simgrid::surf::LinkImpl *> &link_list, bool symmetrical) override
 Creates a new route in this NetZone. More...
 
- Public Member Functions inherited from simgrid::s4u::NetZone
const std::stringgetName () const
 Retrieves the name of that netzone as a C++ string. More...
 
const char * getCname () const
 Retrieves the name of that netzone as a C string. More...
 
NetZonegetFather ()
 
std::vector< NetZone * > * getChildren ()
 
void getHosts (std::vector< s4u::Host *> *whereto)
 
std::unordered_map< std::string, std::string > * getProperties ()
 Get the properties assigned to a host. More...
 
const char * getProperty (const char *key)
 Retrieve the property value (or nullptr if not set) More...
 
void setProperty (const char *key, const char *value)
 
virtual int addComponent (kernel::routing::NetPoint *elm)
 
virtual void addRoute (kernel::routing::NetPoint *src, kernel::routing::NetPoint *dst, kernel::routing::NetPoint *gw_src, kernel::routing::NetPoint *gw_dst, std::vector< simgrid::surf::LinkImpl *> &link_list, bool symmetrical)
 

Additional Inherited Members

- Public Types inherited from simgrid::kernel::routing::NetZoneImpl
enum  RoutingMode { RoutingMode::unset = 0, RoutingMode::base, RoutingMode::recursive }
 
- Static Public Member Functions inherited from simgrid::kernel::routing::NetZoneImpl
static void getGlobalRoute (routing::NetPoint *src, routing::NetPoint *dst, std::vector< surf::LinkImpl *> &links, double *latency)
 
- Public Attributes inherited from simgrid::kernel::routing::ClusterZone
std::unordered_map< unsigned int, std::pair< surf::LinkImpl *, surf::LinkImpl * > > privateLinks_
 
surf::LinkImplbackbone_ = nullptr
 
voidloopback_ = nullptr
 
NetPointrouter_ = nullptr
 
bool hasLimiter_ = false
 
bool hasLoopback_ = false
 
unsigned int linkCountPerNode_ = 1
 
- Public Attributes inherited from simgrid::kernel::routing::NetZoneImpl
RoutingMode hierarchy_ = RoutingMode::unset
 
- Static Public Attributes inherited from simgrid::s4u::NetZone
static simgrid::xbt::signal< void(bool symmetrical, kernel::routing::NetPoint *src, kernel::routing::NetPoint *dst, kernel::routing::NetPoint *gw_src, kernel::routing::NetPoint *gw_dst, std::vector< surf::LinkImpl * > &link_list)> onRouteCreation
 
static simgrid::xbt::signal< void(NetZone &)> onCreation
 
static simgrid::xbt::signal< void(NetZone &)> onSeal
 
- Protected Member Functions inherited from simgrid::kernel::routing::NetZoneImpl
 NetZoneImpl (NetZone *father, std::string name)
 
virtual ~NetZoneImpl ()
 
bool getBypassRoute (routing::NetPoint *src, routing::NetPoint *dst, std::vector< surf::LinkImpl *> &links, double *latency)
 retrieves the list of all routes of size 1 (of type src x dst x Link) More...
 
- Protected Member Functions inherited from simgrid::s4u::NetZone
 NetZone (NetZone *father, std::string name)
 
virtual ~NetZone ()
 
unsigned int getTableSize ()
 
std::vector< kernel::routing::NetPoint * > getVertices ()
 

Constructor & Destructor Documentation

◆ DragonflyZone()

simgrid::kernel::routing::DragonflyZone::DragonflyZone ( NetZone father,
std::string  name 
)
explicit

◆ ~DragonflyZone()

simgrid::kernel::routing::DragonflyZone::~DragonflyZone ( )
override

Member Function Documentation

◆ getLocalRoute()

void simgrid::kernel::routing::DragonflyZone::getLocalRoute ( NetPoint src,
NetPoint dst,
sg_platf_route_cbarg_t  into,
double *  latency 
)
overridevirtual

Probe the routing path between two points that are local to the called NetZone.

Parameters
srcwhere from
dstwhere to
intoContainer into which the traversed links and gateway informations should be pushed
latencyAccumulator in which the latencies should be added (caller must set it to 0)

Reimplemented from simgrid::kernel::routing::ClusterZone.

◆ parse_specific_arguments()

void simgrid::kernel::routing::DragonflyZone::parse_specific_arguments ( ClusterCreationArgs cluster)
overridevirtual

◆ seal()

void simgrid::kernel::routing::DragonflyZone::seal ( )
overridevirtual

Seal your netzone once you're done adding content, and before routing stuff through it.

Reimplemented from simgrid::s4u::NetZone.

◆ generateRouters()

void simgrid::kernel::routing::DragonflyZone::generateRouters ( )

◆ generateLinks()

void simgrid::kernel::routing::DragonflyZone::generateLinks ( )

◆ createLink()

void simgrid::kernel::routing::DragonflyZone::createLink ( const std::string id,
int  numlinks,
surf::LinkImpl **  linkup,
surf::LinkImpl **  linkdown 
)

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