class XBT_PRIVATE FatTreeLink;
-/** \brief A node in a fat tree (@ref AsClusterFatTree).
+/** \brief A node in a fat tree (@ref FatTreeZone).
* A FatTreeNode can either be a switch or a processing node. Switches are
* identified by a negative ID. This class is closely related to fat
*/
/** Virtual link standing for the node global capacity.
*/
- Link* limiterLink;
+ surf::LinkImpl* limiterLink;
/** If present, communications from this node to this node will pass through it
* instead of passing by an upper level switch.
*/
- Link* loopback;
+ surf::LinkImpl* loopback;
FatTreeNode(sg_platf_cluster_cbarg_t cluster, int id, int level, int position);
};
-/** \brief Link in a fat tree (@ref AsClusterFatTree).
+/** \brief Link in a fat tree (@ref FatTreeZone).
*
* Represents a single, duplex link in a fat tree. This is necessary to have a tree.
* It is equivalent to a physical link.
public:
FatTreeLink(sg_platf_cluster_cbarg_t cluster, FatTreeNode* source, FatTreeNode* destination);
/** Link going up in the tree */
- Link* upLink;
+ surf::LinkImpl* upLink;
/** Link going down in the tree */
- Link* downLink;
+ surf::LinkImpl* downLink;
/** Upper end of the link */
FatTreeNode* upNode;
/** Lower end of the link */
FatTreeNode* downNode;
};
-/**
- * \class AsClusterFatTree
- *
- * \brief Fat tree representation and routing.
+/** @ingroup ROUTING_API
+ * @brief NetZone using a Fat-Tree topology
*
* Generate fat trees according to the topology asked for, according to:
* Eitan Zahavi, D-Mod-K Routing Providing Non-Blocking Traffic for Shift
public:
explicit FatTreeZone(NetZone* father, const char* name);
~FatTreeZone() override;
- void getLocalRoute(NetCard* src, NetCard* dst, sg_platf_route_cbarg_t into, double* latency) override;
+ void getLocalRoute(NetPoint* src, NetPoint* dst, sg_platf_route_cbarg_t into, double* latency) override;
/** \brief Generate the fat tree
*
private:
// description of a PGFT (TODO : better doc)
- unsigned int levels_ = 0;
+ unsigned long 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