Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' into 'master'
[simgrid.git] / include / simgrid / kernel / routing / FatTreeZone.hpp
index 43cb55b..7e6acce 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2021. The SimGrid Team. All rights reserved.          */
+/* Copyright (c) 2014-2022. 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. */
@@ -46,12 +46,13 @@ public:
 
   /** Virtual link standing for the node global capacity.
    */
-  resource::LinkImpl* limiter_link_;
+  resource::StandardLinkImpl* limiter_link_;
   /** If present, communications from this node to this node will pass through it
    * instead of passing by an upper level switch.
    */
-  resource::LinkImpl* loopback_;
-  FatTreeNode(int id, int level, int position, resource::LinkImpl* limiter, resource::LinkImpl* loopback)
+  resource::StandardLinkImpl* loopback_;
+  FatTreeNode(int id, int level, int position, resource::StandardLinkImpl* limiter,
+              resource::StandardLinkImpl* loopback)
       : id(id), level(level), position(position), limiter_link_(limiter), loopback_(loopback)
   {
   }
@@ -64,7 +65,8 @@ public:
  */
 class FatTreeLink {
 public:
-  FatTreeLink(FatTreeNode* src, FatTreeNode* dst, resource::LinkImpl* linkup, resource::LinkImpl* linkdown)
+  FatTreeLink(FatTreeNode* src, FatTreeNode* dst, resource::StandardLinkImpl* linkup,
+              resource::StandardLinkImpl* linkdown)
       : up_node_(dst), down_node_(src), up_link_(linkup), down_link_(linkdown)
   {
   }
@@ -73,9 +75,9 @@ public:
   /** Lower end of the link */
   FatTreeNode* down_node_;
   /** Link going up in the tree */
-  resource::LinkImpl* up_link_;
+  resource::StandardLinkImpl* up_link_;
   /** Link going down in the tree */
-  resource::LinkImpl* down_link_;
+  resource::StandardLinkImpl* down_link_;
 };
 
 /** @ingroup ROUTING_API
@@ -102,7 +104,7 @@ public:
  *
  * Routing is made using a destination-mod-k scheme.
  */
-class XBT_PRIVATE FatTreeZone : public ClusterZone {
+class XBT_PRIVATE FatTreeZone : public ClusterBase {
   /** @brief Generate the fat tree
    *
    * Once all processing nodes have been added, this will make sure the fat
@@ -115,7 +117,7 @@ class XBT_PRIVATE FatTreeZone : public ClusterZone {
   std::vector<unsigned int> num_parents_per_node_;  // number of parents by node
   std::vector<unsigned int> num_port_lower_level_;  // ports between each level l and l-1
 
-  std::map<int, std::shared_ptr<FatTreeNode>> compute_nodes_;
+  std::map<unsigned long, std::shared_ptr<FatTreeNode>> compute_nodes_;
   std::vector<std::shared_ptr<FatTreeNode>> nodes_;
   std::vector<std::shared_ptr<FatTreeLink>> links_;
   std::vector<unsigned int> nodes_by_level_;
@@ -131,10 +133,10 @@ class XBT_PRIVATE FatTreeZone : public ClusterZone {
   void do_seal() override;
 
 public:
-  using ClusterZone::ClusterZone;
+  explicit FatTreeZone(const std::string& name) : ClusterBase(name){};
   FatTreeZone(const FatTreeZone&) = delete;
   FatTreeZone& operator=(const FatTreeZone&) = delete;
-  void get_local_route(NetPoint* src, NetPoint* dst, Route* into, double* latency) override;
+  void get_local_route(const NetPoint* src, const NetPoint* dst, Route* into, double* latency) override;
 
   /**
    * @brief Parse the topology parameters from string format
@@ -148,7 +150,7 @@ public:
   /** @brief Set FatTree topology */
   void set_topology(unsigned int n_levels, const std::vector<unsigned int>& down_links,
                     const std::vector<unsigned int>& up_links, const std::vector<unsigned int>& link_count);
-  void add_processing_node(int id, resource::LinkImpl* limiter, resource::LinkImpl* loopback);
+  void add_processing_node(int id, resource::StandardLinkImpl* limiter, resource::StandardLinkImpl* loopback);
   /**
    * @brief Build upper levels (switches) in Fat-Tree
    *