X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/88fad0aaff9eb463f048bfdfe4ad6218aba44ddb..4d9001cb9e77f3001a9fe06b506e7eed79156366:/include/simgrid/kernel/routing/FatTreeZone.hpp diff --git a/include/simgrid/kernel/routing/FatTreeZone.hpp b/include/simgrid/kernel/routing/FatTreeZone.hpp index 251cb3d177..484de14e25 100644 --- a/include/simgrid/kernel/routing/FatTreeZone.hpp +++ b/include/simgrid/kernel/routing/FatTreeZone.hpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2014-2018. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2014-2021. The SimGrid Team. All rights reserved. */ /* 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. */ @@ -14,7 +14,7 @@ namespace routing { class XBT_PRIVATE FatTreeLink; -/** \brief A node in a fat tree (@ref FatTreeZone). +/** @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 */ @@ -25,7 +25,7 @@ public: /* Level into the tree, with 0 being the leafs. */ unsigned int level; - /* \brief Position into the level, starting from 0. + /* @brief Position into the level, starting from 0. */ unsigned int position; /** In order to link nodes between them, each one must be assigned a label, @@ -46,26 +46,26 @@ public: /** Virtual link standing for the node global capacity. */ - surf::LinkImpl* limiter_link_; + resource::LinkImpl* limiter_link_; /** If present, communications from this node to this node will pass through it * instead of passing by an upper level switch. */ - surf::LinkImpl* loopback; - FatTreeNode(ClusterCreationArgs* cluster, int id, int level, int position); + resource::LinkImpl* loopback; + FatTreeNode(const ClusterCreationArgs* cluster, int id, int level, int position); }; -/** \brief Link in a fat tree (@ref FatTreeZone). +/** @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. */ class FatTreeLink { public: - FatTreeLink(ClusterCreationArgs* cluster, FatTreeNode* source, FatTreeNode* destination); + FatTreeLink(const ClusterCreationArgs* cluster, FatTreeNode* source, FatTreeNode* destination); /** Link going up in the tree */ - surf::LinkImpl* up_link_; + resource::LinkImpl* up_link_; /** Link going down in the tree */ - surf::LinkImpl* down_link_; + resource::LinkImpl* down_link_; /** Upper end of the link */ FatTreeNode* up_node_; /** Lower end of the link */ @@ -98,24 +98,26 @@ public: */ class XBT_PRIVATE FatTreeZone : public ClusterZone { public: - explicit FatTreeZone(NetZone* father, std::string name); + explicit FatTreeZone(NetZoneImpl* father, const std::string& name, resource::NetworkModel* netmodel); + FatTreeZone(const FatTreeZone&) = delete; + FatTreeZone& operator=(const FatTreeZone&) = delete; ~FatTreeZone() override; - void getLocalRoute(NetPoint* src, NetPoint* dst, RouteCreationArgs* into, double* latency) override; + void get_local_route(NetPoint* src, NetPoint* dst, RouteCreationArgs* into, double* latency) override; - /** \brief Generate the fat tree + /** @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 seal() override; - /** \brief Read the parameters in topo_parameters field. + /** @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 = "fatTree.dot") const; + void generate_dot_file(const std::string& filename = "fat_tree.dot") const; private: // description of a PGFT (TODO : better doc) @@ -131,13 +133,13 @@ private: ClusterCreationArgs* cluster_ = nullptr; - void addLink(FatTreeNode* parent, unsigned int parent_port, FatTreeNode* child, unsigned int child_port); - int getLevelPosition(const unsigned int level); - void generateLabels(); - void generateSwitches(); - int connectNodeToParents(FatTreeNode* node); - bool areRelated(FatTreeNode* parent, FatTreeNode* child); - bool isInSubTree(FatTreeNode* root, FatTreeNode* node); + void add_link(FatTreeNode* parent, unsigned int parent_port, FatTreeNode* child, unsigned int child_port); + int get_level_position(const unsigned int level); + void generate_labels(); + void generate_switches(); + 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; }; } // namespace routing } // namespace kernel