X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/54d19a62bc6f609898dd623e8857cd1c6474e24f..ebbdc928150e0dda1fffe5d4ab6edab9d1981904:/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 96ba5c97d0..7aaf9b1f30 100644 --- a/src/surf/surf_routing_cluster_fat_tree.hpp +++ b/src/surf/surf_routing_cluster_fat_tree.hpp @@ -17,9 +17,10 @@ * should certainly be checked for) */ + class FatTreeNode { public: - int id; // ID as given by the user + int id; // ID as given by the user, should be unique int level; // The 0th level represents the leafs of the PGFT int position; // Position in the level @@ -34,26 +35,32 @@ public: }; class FatTreeLink { -private: - unsigned int ports; - std::vector linksUp; // From source to destination - std::vector linksDown; // From destination to source - FatTreeNode source; - FatTreeNode destination; public: - FatTreeLink(int source, int destination, unsigned int ports = 0); - NetworkLink getLink(int number = 0) const; + unsigned int ports; + std::vector linksUp; // From source to destination + std::vector linksDown; // From destination to source + /* As it is symetric, it might as well be first / second instead + * of source / destination + */ + FatTreeNode *source; + FatTreeNode *destination; + //FatTreeLink(FatTreeNode *source, FatTreeNode *destination, unsigned int ports = 0); }; class AsClusterFatTree : public AsCluster { public: AsClusterFatTree(); ~AsClusterFatTree(); - virtual void getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_platf_route_cbarg_t into, double *latency) const; + virtual void getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, + sg_platf_route_cbarg_t into, + double *latency); + // virtual void getRouteAndLatency(const int src, const int dst, + // std::vector *route, + // double *latency) const; virtual void create_links(sg_platf_cluster_cbarg_t cluster); void parse_specific_arguments(sg_platf_cluster_cbarg_t cluster); void addNodes(std::vector const& id); - void generateDotFile(string filename = "fatTree.dot"); + void generateDotFile(const string& filename = "fatTree.dot") const; protected: //description of a PGFT (TODO : better doc) @@ -64,9 +71,9 @@ protected: std::vector nodes; std::map, FatTreeLink*> links; - -}; - + std::vector nodesByLevel; - + void addLink(FatTreeNode *parent, FatTreeNode *child); + void getLevelPosition(const unsigned int level, int &position, int &size); +}; #endif