* Routing is made using a destination-mod-k scheme.
*/
class XBT_PRIVATE FatTreeZone : public ClusterZone {
-public:
- explicit FatTreeZone(const std::string& name);
- FatTreeZone(const FatTreeZone&) = delete;
- FatTreeZone& operator=(const FatTreeZone&) = delete;
- ~FatTreeZone() override;
- void get_local_route(NetPoint* src, NetPoint* dst, RouteCreationArgs* into, double* latency) override;
-
- /** @brief Read the parameters in topo_parameters field.
- *
- * It will also store the cluster for future use.
- */
- void parse_specific_arguments(ClusterCreationArgs* cluster) override;
- void add_processing_node(int id);
- void generate_dot_file(const std::string& filename = "fat_tree.dot") const;
-
-private:
/** @brief Generate the fat tree
*
* Once all processing nodes have been added, this will make sure the fat
* tree is generated by calling generateLabels(), generateSwitches() and
* then connection all nodes between them, using their label.
*/
- void do_seal() override;
// description of a PGFT (TODO : better doc)
unsigned long levels_ = 0;
std::vector<unsigned int> num_children_per_node_; // number of children by node
int connect_node_to_parents(FatTreeNode* node);
bool are_related(FatTreeNode* parent, FatTreeNode* child) const;
bool is_in_sub_tree(FatTreeNode* root, FatTreeNode* node) const;
+
+ void do_seal() override;
+
+public:
+ explicit FatTreeZone(const std::string& name) : ClusterZone(name) {}
+ FatTreeZone(const FatTreeZone&) = delete;
+ FatTreeZone& operator=(const FatTreeZone&) = delete;
+ ~FatTreeZone() override;
+ void get_local_route(NetPoint* src, NetPoint* dst, RouteCreationArgs* into, double* latency) override;
+
+ /** @brief Read the parameters in topo_parameters field.
+ *
+ * It will also store the cluster for future use.
+ */
+ void parse_specific_arguments(ClusterCreationArgs* cluster) override;
+ void add_processing_node(int id);
+ void generate_dot_file(const std::string& filename = "fat_tree.dot") const;
};
} // namespace routing
} // namespace kernel