X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/1f5649e6da1087111b7201e30e59f6e80104984c..82f71f716643bf7c4ba1c63793439b753fcfa954:/src/surf/AsClusterTorus.cpp diff --git a/src/surf/AsClusterTorus.cpp b/src/surf/AsClusterTorus.cpp index 41655cc1d8..d53146eae3 100644 --- a/src/surf/AsClusterTorus.cpp +++ b/src/surf/AsClusterTorus.cpp @@ -34,12 +34,11 @@ namespace simgrid { } void AsClusterTorus::create_links_for_node(sg_platf_cluster_cbarg_t cluster, int id, int rank, int position) { - s_sg_platf_link_cbarg_t link = SG_PLATF_LINK_INITIALIZER; char *link_id; unsigned int j = 0; - /** + /* * Create all links that exist in the torus. - * Each rank creates #dimensions-1 links + * Each rank creates @a dimensions-1 links */ int neighbour_rank_id = 0; // The other node the link connects int current_dimension = 0, // which dimension are we currently in? @@ -48,6 +47,7 @@ namespace simgrid { dim_product = 1; // Needed to calculate the next neighbour_id for (j = 0; j < xbt_dynar_length(dimensions_); j++) { + s_sg_platf_link_cbarg_t link; memset(&link, 0, sizeof(link)); current_dimension = xbt_dynar_get_as(dimensions_, j, int); neighbour_rank_id = @@ -63,21 +63,21 @@ namespace simgrid { s_surf_parsing_link_up_down_t info; if (link.policy == SURF_LINK_FULLDUPLEX) { char *tmp_link = bprintf("%s_UP", link_id); - info.link_up = Link::byName(tmp_link); + info.linkUp = Link::byName(tmp_link); free(tmp_link); tmp_link = bprintf("%s_DOWN", link_id); - info.link_down = Link::byName(tmp_link); + info.linkDown = Link::byName(tmp_link); free(tmp_link); } else { - info.link_up = Link::byName(link_id); - info.link_down = info.link_up; + info.linkUp = Link::byName(link_id); + info.linkDown = info.linkUp; } - /** + /* * Add the link to its appropriate position; * note that position rankId*(xbt_dynar_length(dimensions)+has_loopack?+has_limiter?) * holds the link "rankId->rankId" */ - xbt_dynar_set(upDownLinks_, position + j, &info); + xbt_dynar_set(privateLinks_, position + j, &info); dim_product *= current_dimension; xbt_free(link_id); } @@ -92,8 +92,7 @@ namespace simgrid { if (!xbt_dynar_is_empty(dimensions)) { dimensions_ = xbt_dynar_new(sizeof(int), NULL); - /** - * We are in a torus cluster + /* We are in a torus cluster * Parse attribute dimensions="dim1,dim2,dim3,...,dimN" * and safe it in a dynarray. * Additionally, we need to know how many ranks we have in total @@ -103,7 +102,7 @@ namespace simgrid { xbt_dynar_set_as(dimensions_, iter, int, tmp); } - nb_links_per_node_ = xbt_dynar_length(dimensions_); + linkCountPerNode_ = xbt_dynar_length(dimensions_); } xbt_dynar_free(&dimensions); @@ -117,24 +116,24 @@ namespace simgrid { if (dst->isRouter() || src->isRouter()) return; - if ((src->id() == dst->id()) && has_loopback_) { - s_surf_parsing_link_up_down_t info = xbt_dynar_get_as(upDownLinks_, src->id() * nb_links_per_node_, s_surf_parsing_link_up_down_t); + if ((src->id() == dst->id()) && hasLoopback_) { + s_surf_parsing_link_up_down_t info = xbt_dynar_get_as(privateLinks_, src->id() * linkCountPerNode_, s_surf_parsing_link_up_down_t); - route->link_list->push_back(info.link_up); + route->link_list->push_back(info.linkUp); if (lat) - *lat += info.link_up->getLatency(); + *lat += info.linkUp->getLatency(); return; } - /** + /* * Dimension based routing routes through each dimension consecutively * TODO Change to dynamic assignment */ unsigned int j, cur_dim, dim_product = 1; int current_node = src->id(); int unsigned next_node = 0; - /** + /* * Arrays that hold the coordinates of the current node and * the target; comparing the values at the i-th position of * both arrays, we can easily assess whether we need to route @@ -143,7 +142,7 @@ namespace simgrid { unsigned int *myCoords, *targetCoords; myCoords = rankId_to_coords(src->id(), dimensions_); targetCoords = rankId_to_coords(dst->id(), dimensions_); - /** + /* * linkOffset describes the offset where the link * we want to use is stored * (+1 is added because each node has a link from itself to itself, @@ -171,8 +170,8 @@ namespace simgrid { next_node = (current_node + dim_product); // HERE: We use *CURRENT* node for calculation (as opposed to next_node) - nodeOffset = current_node * (nb_links_per_node_); - linkOffset = nodeOffset + has_loopback_ + has_limiter_ + j; + nodeOffset = current_node * (linkCountPerNode_); + linkOffset = nodeOffset + (hasLoopback_?1:0) + (hasLimiter_?1:0) + j; use_lnk_up = true; assert(linkOffset >= 0); } else { // Route to the left @@ -182,8 +181,8 @@ namespace simgrid { next_node = (current_node - dim_product); // HERE: We use *next* node for calculation (as opposed to current_node!) - nodeOffset = next_node * (nb_links_per_node_); - linkOffset = nodeOffset + j + has_loopback_ + has_limiter_; + nodeOffset = next_node * (linkCountPerNode_); + linkOffset = nodeOffset + j + (hasLoopback_?1:0) + (hasLimiter_?1:0) ; use_lnk_up = false; assert(linkOffset >= 0); @@ -199,21 +198,21 @@ namespace simgrid { s_surf_parsing_link_up_down_t info; - if (has_limiter_) { // limiter for sender - info = xbt_dynar_get_as(upDownLinks_, nodeOffset + has_loopback_, s_surf_parsing_link_up_down_t); - route->link_list->push_back(info.link_up); + if (hasLimiter_) { // limiter for sender + info = xbt_dynar_get_as(privateLinks_, nodeOffset + hasLoopback_, s_surf_parsing_link_up_down_t); + route->link_list->push_back(info.linkUp); } - info = xbt_dynar_get_as(upDownLinks_, linkOffset, s_surf_parsing_link_up_down_t); + info = xbt_dynar_get_as(privateLinks_, linkOffset, s_surf_parsing_link_up_down_t); if (use_lnk_up == false) { - route->link_list->push_back(info.link_down); + route->link_list->push_back(info.linkDown); if (lat) - *lat += info.link_down->getLatency(); + *lat += info.linkDown->getLatency(); } else { - route->link_list->push_back(info.link_up); + route->link_list->push_back(info.linkUp); if (lat) - *lat += info.link_up->getLatency(); + *lat += info.linkUp->getLatency(); } current_node = next_node; next_node = 0;