X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/a8e449cf588e53c1d83aef41a1cbb07995a291c9..9cca09ad88fcaeb49f2637de97df519c3920aaa4:/src/kernel/routing/DragonflyZone.cpp diff --git a/src/kernel/routing/DragonflyZone.cpp b/src/kernel/routing/DragonflyZone.cpp index 7dde15fa42..38e788f480 100644 --- a/src/kernel/routing/DragonflyZone.cpp +++ b/src/kernel/routing/DragonflyZone.cpp @@ -47,8 +47,7 @@ void DragonflyZone::parse_specific_arguments(ClusterCreationArgs* cluster) std::vector tmp; boost::split(parameters, cluster->topo_parameters, boost::is_any_of(";")); - // TODO : we have to check for zeros and negative numbers, or it might crash - if (parameters.size() != 4) { + if (parameters.size() != 4 || parameters.empty()) { surf_parse_error( "Dragonfly are defined by the number of groups, chassis per groups, blades per chassis, nodes per blade"); } @@ -290,7 +289,7 @@ void DragonflyZone::getLocalRoute(NetPoint* src, NetPoint* dst, sg_platf_route_c dst->id()); if ((src->id() == dst->id()) && hasLoopback_) { - std::pair info = privateLinks_.at(src->id() * linkCountPerNode_); + std::pair info = privateLinks_.at(nodePosition(src->id())); route->link_list->push_back(info.first); if (latency) @@ -318,8 +317,7 @@ void DragonflyZone::getLocalRoute(NetPoint* src, NetPoint* dst, sg_platf_route_c *latency += myRouter->myNodes_[myCoords[3] * numLinksperLink_]->latency(); if (hasLimiter_) { // limiter for sender - std::pair info = - privateLinks_.at(src->id() * linkCountPerNode_ + (hasLoopback_ ? 1 : 0)); + std::pair info = privateLinks_.at(nodePositionWithLoopback(src->id())); route->link_list->push_back(info.first); } @@ -369,8 +367,7 @@ void DragonflyZone::getLocalRoute(NetPoint* src, NetPoint* dst, sg_platf_route_c } if (hasLimiter_) { // limiter for receiver - std::pair info = - privateLinks_.at(dst->id() * linkCountPerNode_ + (hasLoopback_ ? 1 : 0)); + std::pair info = privateLinks_.at(nodePositionWithLoopback(dst->id())); route->link_list->push_back(info.first); }