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.
|
| DragonflyZone (NetZone *father, const char *name) |
|
| ~DragonflyZone () override |
|
void | getLocalRoute (NetCard *src, NetCard *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 (sg_platf_cluster_cbarg_t 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 (char *id, int numlinks, Link **linkup, Link **linkdown) |
|
unsigned int * | rankId_to_coords (int rankId) |
|
| ClusterZone (NetZone *father, const char *name) |
|
void | getGraph (xbt_graph_t graph, xbt_dict_t nodes, xbt_dict_t edges) override |
|
virtual void | create_links_for_node (sg_platf_cluster_cbarg_t cluster, int id, int rank, int position) |
|
simgrid::s4u::Host * | createHost (const char *name, std::vector< double > *speedPerPstate, int coreAmount) |
| Make an host within that NetZone. More...
|
|
void | addBypassRoute (sg_platf_route_cbarg_t e_route) override |
| Creates a new route in this NetZone. More...
|
|
char * | name () |
|
NetZone * | father () |
|
xbt_dict_t | children () |
|
xbt_dynar_t | hosts () |
|
std::unordered_map< std::string, std::string > * | properties () |
| Get the properties assigned to a host. More...
|
|
const char * | property (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::NetCard *elm) |
|
virtual void | addRoute (sg_platf_route_cbarg_t route) |
|