X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/a18117755285a374ec3d5830309c924f2830e3ba..d27569cf3d838674e1325b58e2b9184b5b700bf5:/src/kernel/routing/FatTreeZone.cpp diff --git a/src/kernel/routing/FatTreeZone.cpp b/src/kernel/routing/FatTreeZone.cpp index 97c57d3bcc..7a0222aae7 100644 --- a/src/kernel/routing/FatTreeZone.cpp +++ b/src/kernel/routing/FatTreeZone.cpp @@ -21,12 +21,12 @@ namespace simgrid { namespace kernel { namespace routing { -AsClusterFatTree::AsClusterFatTree(As* father, const char* name) : AsCluster(father, name) +FatTreeZone::FatTreeZone(NetZone* father, const char* name) : ClusterZone(father, name) { XBT_DEBUG("Creating a new fat tree."); } -AsClusterFatTree::~AsClusterFatTree() +FatTreeZone::~FatTreeZone() { for (unsigned int i = 0; i < this->nodes_.size(); i++) { delete this->nodes_[i]; @@ -36,7 +36,7 @@ AsClusterFatTree::~AsClusterFatTree() } } -bool AsClusterFatTree::isInSubTree(FatTreeNode* root, FatTreeNode* node) +bool FatTreeZone::isInSubTree(FatTreeNode* root, FatTreeNode* node) { XBT_DEBUG("Is %d(%u,%u) in the sub tree of %d(%u,%u) ?", node->id, node->level, node->position, root->id, root->level, root->position); @@ -57,7 +57,7 @@ bool AsClusterFatTree::isInSubTree(FatTreeNode* root, FatTreeNode* node) return true; } -void AsClusterFatTree::getLocalRoute(NetCard* src, NetCard* dst, sg_platf_route_cbarg_t into, double* latency) +void FatTreeZone::getLocalRoute(NetCard* src, NetCard* dst, sg_platf_route_cbarg_t into, double* latency) { if (dst->isRouter() || src->isRouter()) @@ -129,7 +129,7 @@ void AsClusterFatTree::getLocalRoute(NetCard* src, NetCard* dst, sg_platf_route_ /* This function makes the assumption that parse_specific_arguments() and * addNodes() have already been called */ -void AsClusterFatTree::seal() +void FatTreeZone::seal() { if (this->levels_ == 0) { return; @@ -175,7 +175,7 @@ void AsClusterFatTree::seal() } } -int AsClusterFatTree::connectNodeToParents(FatTreeNode* node) +int FatTreeZone::connectNodeToParents(FatTreeNode* node) { std::vector::iterator currentParentNode = this->nodes_.begin(); int connectionsNumber = 0; @@ -199,7 +199,7 @@ int AsClusterFatTree::connectNodeToParents(FatTreeNode* node) return connectionsNumber; } -bool AsClusterFatTree::areRelated(FatTreeNode* parent, FatTreeNode* child) +bool FatTreeZone::areRelated(FatTreeNode* parent, FatTreeNode* child) { std::stringstream msgBuffer; @@ -231,11 +231,10 @@ bool AsClusterFatTree::areRelated(FatTreeNode* parent, FatTreeNode* child) return true; } -void AsClusterFatTree::generateSwitches() +void FatTreeZone::generateSwitches() { XBT_DEBUG("Generating switches."); this->nodesByLevel_.resize(this->levels_ + 1, 0); - unsigned int nodesRequired = 0; // Take care of the number of nodes by level this->nodesByLevel_[0] = 1; @@ -259,7 +258,6 @@ void AsClusterFatTree::generateSwitches() nodesInThisLevel *= this->lowerLevelNodesNumber_[j]; this->nodesByLevel_[i + 1] = nodesInThisLevel; - nodesRequired += nodesInThisLevel; } // Create the switches @@ -278,7 +276,7 @@ void AsClusterFatTree::generateSwitches() } } -void AsClusterFatTree::generateLabels() +void FatTreeZone::generateLabels() { XBT_DEBUG("Generating labels."); // TODO : check if nodesByLevel and nodes are filled @@ -324,7 +322,7 @@ void AsClusterFatTree::generateLabels() } } -int AsClusterFatTree::getLevelPosition(const unsigned int level) +int FatTreeZone::getLevelPosition(const unsigned int level) { xbt_assert(level <= this->levels_, "The impossible did happen. Yet again."); int tempPosition = 0; @@ -335,7 +333,7 @@ int AsClusterFatTree::getLevelPosition(const unsigned int level) return tempPosition; } -void AsClusterFatTree::addProcessingNode(int id) +void FatTreeZone::addProcessingNode(int id) { using std::make_pair; static int position = 0; @@ -347,7 +345,7 @@ void AsClusterFatTree::addProcessingNode(int id) this->nodes_.push_back(newNode); } -void AsClusterFatTree::addLink(FatTreeNode* parent, unsigned int parentPort, FatTreeNode* child, unsigned int childPort) +void FatTreeZone::addLink(FatTreeNode* parent, unsigned int parentPort, FatTreeNode* child, unsigned int childPort) { FatTreeLink* newLink; newLink = new FatTreeLink(this->cluster_, child, parent); @@ -359,7 +357,7 @@ void AsClusterFatTree::addLink(FatTreeNode* parent, unsigned int parentPort, Fat this->links_.push_back(newLink); } -void AsClusterFatTree::parse_specific_arguments(sg_platf_cluster_cbarg_t cluster) +void FatTreeZone::parse_specific_arguments(sg_platf_cluster_cbarg_t cluster) { std::vector parameters; std::vector tmp; @@ -406,7 +404,7 @@ void AsClusterFatTree::parse_specific_arguments(sg_platf_cluster_cbarg_t cluster this->cluster_ = cluster; } -void AsClusterFatTree::generateDotFile(const std::string& filename) const +void FatTreeZone::generateDotFile(const std::string& filename) const { std::ofstream file; file.open(filename, std::ios::out | std::ios::trunc); @@ -440,7 +438,7 @@ FatTreeNode::FatTreeNode(sg_platf_cluster_cbarg_t cluster, int id, int level, in linkTemplate.id = bprintf("limiter_%d", id); sg_platf_new_link(&linkTemplate); this->limiterLink = Link::byName(linkTemplate.id); - free((void*)linkTemplate.id); + free(const_cast(linkTemplate.id)); } if (cluster->loopback_bw || cluster->loopback_lat) { memset(&linkTemplate, 0, sizeof(linkTemplate)); @@ -450,7 +448,7 @@ FatTreeNode::FatTreeNode(sg_platf_cluster_cbarg_t cluster, int id, int level, in linkTemplate.id = bprintf("loopback_%d", id); sg_platf_new_link(&linkTemplate); this->loopback = Link::byName(linkTemplate.id); - free((void*)linkTemplate.id); + free(const_cast(linkTemplate.id)); } } @@ -465,22 +463,18 @@ FatTreeLink::FatTreeLink(sg_platf_cluster_cbarg_t cluster, FatTreeNode* downNode linkTemplate.policy = cluster->sharing_policy; // sthg to do with that ? linkTemplate.id = bprintf("link_from_%d_to_%d_%d", downNode->id, upNode->id, uniqueId); sg_platf_new_link(&linkTemplate); - Link* link; - std::string tmpID; + if (cluster->sharing_policy == SURF_LINK_FULLDUPLEX) { - tmpID = std::string(linkTemplate.id) + "_UP"; - link = Link::byName(tmpID.c_str()); - this->upLink = link; // check link? + std::string tmpID = std::string(linkTemplate.id) + "_UP"; + this->upLink = Link::byName(tmpID.c_str()); // check link? tmpID = std::string(linkTemplate.id) + "_DOWN"; - link = Link::byName(tmpID.c_str()); - this->downLink = link; // check link ? + this->downLink = Link::byName(tmpID.c_str()); // check link ? } else { - link = Link::byName(linkTemplate.id); - this->upLink = link; - this->downLink = link; + this->upLink = Link::byName(linkTemplate.id); + this->downLink = this->upLink; } + free(const_cast(linkTemplate.id)); uniqueId++; - free((void*)linkTemplate.id); } } }