From b6e64458951b36d382c2ab7bf093cdfd512e0066 Mon Sep 17 00:00:00 2001 From: =?utf8?q?St=C3=A9phane=20Castelli?= Date: Wed, 7 May 2014 15:24:34 +0200 Subject: [PATCH 1/1] Completion of the routing for fat trees --- src/surf/surf_routing_cluster_fat_tree.cpp | 27 +++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/src/surf/surf_routing_cluster_fat_tree.cpp b/src/surf/surf_routing_cluster_fat_tree.cpp index 8e55925c77..99232af44f 100644 --- a/src/surf/surf_routing_cluster_fat_tree.cpp +++ b/src/surf/surf_routing_cluster_fat_tree.cpp @@ -7,6 +7,7 @@ #include + AsClusterFatTree::AsClusterFatTree() : levels(0) {} AsClusterFatTree::~AsClusterFatTree() { @@ -16,8 +17,18 @@ AsClusterFatTree::~AsClusterFatTree() { } bool AsClusterFatTree::isInSubTree(FatTreeNode *root, FatTreeNode *node) { - // stub - return false; + for (unsigned int i = 0 ; i < node->level ; i++) { + if(root->label[i] != node->label[i]) { + return false; + } + } + + for (unsigned int i = root->level + 1 ; i < this->levels ; i++) { + if(root->label[i] != node->label[i]) { + return false; + } + } + return true; } void AsClusterFatTree::getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, @@ -43,6 +54,9 @@ void AsClusterFatTree::getRouteAndLatency(RoutingEdgePtr src, this->lowerLevelNodesNumber[currentNode->level]; d = d % k; route.push_back(currentNode->parents[d]->upLink); + if(latency) { + *latency += currentNode->parents[d]->upLink->getLatency(); + } currentNode = currentNode->parents[d]->upNode; } @@ -52,10 +66,18 @@ void AsClusterFatTree::getRouteAndLatency(RoutingEdgePtr src, if(i % this->lowerLevelNodesNumber[currentNode->level] == destination->label[currentNode->level]) { route.push_back(currentNode->children[i]->downLink); + if(latency) { + *latency += currentNode->children[d]->downLink->getLatency(); + } currentNode = currentNode->children[i]->downNode; } } } + + for (unsigned int i = 0 ; i < route.size() ; i++) { + xbt_dynar_push_as(into->link_list, void*, route[i]); + } + } /* This function makes the assumption that parse_specific_arguments() and @@ -343,4 +365,3 @@ FatTreeLink::FatTreeLink(sg_platf_cluster_cbarg_t cluster, FatTreeNode *downNode uniqueId++; } - -- 2.20.1