#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
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
*/
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
*
*
* 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 std::string& filename = "fatTree.dot") const;
private:
//description of a PGFT (TODO : better doc)
- unsigned int levels;
- std::vector<unsigned int> lowerLevelNodesNumber; // number of children by node
- std::vector<unsigned int> upperLevelNodesNumber; // number of parents by node
- std::vector<unsigned int> lowerLevelPortsNumber; // ports between each level l and l-1
+ unsigned int levels_ = 0;
+ std::vector<unsigned int> lowerLevelNodesNumber_; // number of children by node
+ std::vector<unsigned int> upperLevelNodesNumber_; // number of parents by node
+ std::vector<unsigned int> lowerLevelPortsNumber_; // ports between each level l and l-1
- std::map<int, FatTreeNode*> computeNodes;
- std::vector<FatTreeNode*> nodes;
- std::vector<FatTreeLink*> links;
- std::vector<unsigned int> nodesByLevel;
+ std::map<int, FatTreeNode*> computeNodes_;
+ std::vector<FatTreeNode*> nodes_;
+ std::vector<FatTreeLink*> links_;
+ std::vector<unsigned int> 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);
bool areRelated(FatTreeNode *parent, FatTreeNode *child);
bool isInSubTree(FatTreeNode *root, FatTreeNode *node);
};
+
+}
+}
+
#endif