X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/b3b356352e87ae00a20f737c48e19b0c8413455a..5f1c0df379bb5f92fee1193d413c8bd57b89e3a5:/src/surf/surf_routing_cluster_fat_tree.hpp diff --git a/src/surf/surf_routing_cluster_fat_tree.hpp b/src/surf/surf_routing_cluster_fat_tree.hpp index ae7e2c09a4..410479f93b 100644 --- a/src/surf/surf_routing_cluster_fat_tree.hpp +++ b/src/surf/surf_routing_cluster_fat_tree.hpp @@ -4,11 +4,19 @@ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ -#include "surf_routing_cluster.hpp" - #ifndef SURF_ROUTING_CLUSTER_FAT_TREE_HPP_ #define SURF_ROUTING_CLUSTER_FAT_TREE_HPP_ +#include +#include +#include + +#include + +#include "surf_routing_cluster.hpp" + +namespace simgrid { +namespace surf { /** \file surf_routing_cluster_fat_tree.cpp * The class AsClusterFatTree describes PGFT, as introduced by Eitan Zahavi @@ -17,8 +25,8 @@ * address real world constraints, which are not currently enforced. */ -class FatTreeNode; -class FatTreeLink; +class XBT_PRIVATE FatTreeNode; +class XBT_PRIVATE FatTreeLink; /** \brief A node in a fat tree. * A FatTreeNode can either be a switch or a processing node. Switches are @@ -72,22 +80,21 @@ class FatTreeLink { public: FatTreeLink(sg_platf_cluster_cbarg_t cluster, FatTreeNode *source, FatTreeNode *destination); - /** Link going up in the tree - */ + /** Link going up in the tree */ Link *upLink; - /** Link going down in the tree - */ + /** Link going down in the tree */ Link *downLink; - /** Upper end of the link - */ + /** Upper end of the link */ FatTreeNode *upNode; - /** Lower end of the link - */ + /** Lower end of the link */ FatTreeNode *downNode; }; -/** \brief Fat tree representation and routing. +/** + * \class AsClusterFatTree + * + * \brief Fat tree representation and routing. * * Generate fat trees according to the topology asked for. Almost everything * is based on the work of Eitan Zahavi in "D-Mod-K Routing Providing @@ -107,13 +114,13 @@ public: * * Routing is made using a destination-mod-k scheme. */ -class AsClusterFatTree : public AsCluster { +class XBT_PRIVATE AsClusterFatTree : public AsCluster { public: - AsClusterFatTree(); + AsClusterFatTree(const char*name); ~AsClusterFatTree(); - virtual void getRouteAndLatency(RoutingEdge *src, RoutingEdge *dst, + virtual void getRouteAndLatency(NetCard *src, NetCard *dst, sg_platf_route_cbarg_t into, - double *latency); + double *latency) override; /** \brief Generate the fat tree * @@ -126,26 +133,24 @@ public: * * It will also store the cluster for future use. */ - void parse_specific_arguments(sg_platf_cluster_cbarg_t cluster); - /** \brief Add a processing node. - */ + void parse_specific_arguments(sg_platf_cluster_cbarg_t cluster) override; void addProcessingNode(int id); - void generateDotFile(const string& filename = "fatTree.dot") const; + void generateDotFile(const std::string& filename = "fatTree.dot") const; private: //description of a PGFT (TODO : better doc) - unsigned int levels; - std::vector lowerLevelNodesNumber; // number of children by node - std::vector upperLevelNodesNumber; // number of parents by node - std::vector lowerLevelPortsNumber; // ports between each level l and l-1 + unsigned int levels_ = 0; + std::vector lowerLevelNodesNumber_; // number of children by node + std::vector upperLevelNodesNumber_; // number of parents by node + std::vector lowerLevelPortsNumber_; // ports between each level l and l-1 - std::map computeNodes; - std::vector nodes; - std::vector links; - std::vector nodesByLevel; + std::map computeNodes_; + std::vector nodes_; + std::vector links_; + std::vector nodesByLevel_; - sg_platf_cluster_cbarg_t cluster; + sg_platf_cluster_cbarg_t cluster_; void addLink(FatTreeNode *parent, unsigned int parentPort, FatTreeNode *child, unsigned int childPort); @@ -156,4 +161,8 @@ private: bool areRelated(FatTreeNode *parent, FatTreeNode *child); bool isInSubTree(FatTreeNode *root, FatTreeNode *node); }; + +} +} + #endif