Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
yet another bunch of int -> unsigned long
authorSUTER Frederic <frederic.suter@cc.in2p3.fr>
Sun, 5 Sep 2021 11:53:56 +0000 (13:53 +0200)
committerSUTER Frederic <frederic.suter@cc.in2p3.fr>
Sun, 5 Sep 2021 14:11:57 +0000 (16:11 +0200)
17 files changed:
examples/cpp/clusters-multicpu/s4u-clusters-multicpu.cpp
include/simgrid/kernel/routing/ClusterZone.hpp
include/simgrid/kernel/routing/DragonflyZone.hpp
include/simgrid/kernel/routing/FatTreeZone.hpp
include/simgrid/kernel/routing/FloydZone.hpp
include/simgrid/kernel/routing/TorusZone.hpp
include/simgrid/s4u/NetZone.hpp
src/kernel/routing/ClusterZone.cpp
src/kernel/routing/DragonflyZone.cpp
src/kernel/routing/FatTreeZone.cpp
src/kernel/routing/NetZone_test.hpp
src/kernel/routing/TorusZone.cpp
src/plugins/host_dvfs.cpp
src/surf/cpu_interface.cpp
src/surf/cpu_interface.hpp
src/surf/sg_platf.cpp
teshsuite/simdag/flatifier/flatifier.tesh

index ec90b02..18c1184 100644 (file)
@@ -89,7 +89,7 @@ public:
  * @return netpoint, gateway: the netpoint to the StarZone and CPU0 as gateway
  */
 static std::pair<simgrid::kernel::routing::NetPoint*, simgrid::kernel::routing::NetPoint*>
-create_hostzone(const sg4::NetZone* zone, const std::vector<unsigned int>& /*coord*/, int id)
+create_hostzone(const sg4::NetZone* zone, const std::vector<unsigned long>& /*coord*/, unsigned long id)
 {
   constexpr int num_cpus    = 8;     //!< Number of CPUs in the zone
   constexpr double speed    = 1e9;   //!< Speed of each CPU
@@ -139,7 +139,7 @@ create_hostzone(const sg4::NetZone* zone, const std::vector<unsigned int>& /*coo
  * @param id Internal identifier in the torus (for information)
  * @return Limiter link
  */
-static sg4::Link* create_limiter(sg4::NetZone* zone, const std::vector<unsigned int>& /*coord*/, int id)
+static sg4::Link* create_limiter(sg4::NetZone* zone, const std::vector<unsigned long>& /*coord*/, unsigned long id)
 {
   return zone->create_link("limiter-" + std::to_string(id), 1e9)->seal();
 }
index 7944122..1dd04ac 100644 (file)
@@ -119,11 +119,11 @@ protected:
   bool has_backbone() const { return backbone_ != nullptr; }
   void set_router(NetPoint* router) { router_ = router; }
   /** @brief Sets gateway for the leaf */
-  void set_gateway(unsigned int position, NetPoint* gateway);
+  void set_gateway(unsigned long position, NetPoint* gateway);
   /** @brief Gets gateway for the leaf or nullptr */
-  NetPoint* get_gateway(unsigned int position);
-  void add_private_link_at(unsigned int position, std::pair<resource::LinkImpl*, resource::LinkImpl*> link);
-  bool private_link_exists_at(unsigned int position) const
+  NetPoint* get_gateway(unsigned long position);
+  void add_private_link_at(unsigned long position, std::pair<resource::LinkImpl*, resource::LinkImpl*> link);
+  bool private_link_exists_at(unsigned long position) const
   {
     return private_links_.find(position) != private_links_.end();
   }
index e543435..22604f0 100644 (file)
@@ -91,7 +91,7 @@ public:
   void build_upper_levels(const s4u::ClusterCallbacks& set_callbacks);
   /** @brief Set the characteristics of links inside the Dragonfly zone */
   void set_link_characteristics(double bw, double lat, s4u::Link::SharingPolicy sharing_policy) override;
-  Coords rankId_to_coords(int rank_id) const;
+  Coords rankId_to_coords(unsigned long rank_id) const;
   XBT_ATTRIB_DEPRECATED_v330("Please use rankId_to_coords(int)") void rankId_to_coords(int rank_id,
                                                                                        unsigned int coords[4]) const;
 
index 33cb078..a493182 100644 (file)
@@ -115,7 +115,7 @@ class XBT_PRIVATE FatTreeZone : public ClusterBase {
   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_;
index 83539d1..46f1208 100644 (file)
@@ -23,7 +23,7 @@ namespace routing {
  */
 class XBT_PRIVATE FloydZone : public RoutedZone {
   /* vars to compute the Floyd algorithm. */
-  std::vector<std::vector<int>> predecessor_table_;
+  std::vector<std::vector<unsigned long>> predecessor_table_;
   std::vector<std::vector<unsigned long>> cost_table_;
   std::vector<std::vector<std::unique_ptr<Route>>> link_table_;
 
index 2335bbf..36fb7bd 100644 (file)
@@ -24,7 +24,7 @@ class XBT_PRIVATE TorusZone : public ClusterBase {
 
 public:
   explicit TorusZone(const std::string& name) : ClusterBase(name){};
-  void create_torus_links(int id, int rank, unsigned long position);
+  void create_torus_links(unsigned long id, int rank, unsigned long position);
   void get_local_route(const NetPoint* src, const NetPoint* dst, Route* into, double* latency) override;
   void set_topology(const std::vector<unsigned long>& dimensions);
 
index 7649167..6c0f3e7 100644 (file)
@@ -211,7 +211,7 @@ struct ClusterCallbacks {
    * @return pair<NetPoint*, NetPoint*>: returns a pair of netpoint and gateway.
    */
   using ClusterNetPointCb = std::pair<kernel::routing::NetPoint*, kernel::routing::NetPoint*>(
-      NetZone* zone, const std::vector<unsigned int>& coord, int id);
+      NetZone* zone, const std::vector<unsigned long>& coord, unsigned long id);
   /**
    * @brief Callback used to set the links for some leaf of the cluster (Torus, FatTree, etc)
    *
@@ -227,7 +227,7 @@ struct ClusterCallbacks {
    * @param id: Internal identifier of the element
    * @return Pointer to the Link
    */
-  using ClusterLinkCb = Link*(NetZone* zone, const std::vector<unsigned int>& coord, int id);
+  using ClusterLinkCb = Link*(NetZone* zone, const std::vector<unsigned long>& coord, unsigned long id);
 
   std::function<ClusterNetPointCb> netpoint;
   std::function<ClusterLinkCb> loopback = {};
index 6cb3575..8405293 100644 (file)
@@ -40,19 +40,19 @@ void ClusterBase::set_link_characteristics(double bw, double lat, s4u::Link::Sha
   link_lat_            = lat;
 }
 
-void ClusterBase::add_private_link_at(unsigned int position, std::pair<resource::LinkImpl*, resource::LinkImpl*> link)
+void ClusterBase::add_private_link_at(unsigned long position, std::pair<resource::LinkImpl*, resource::LinkImpl*> link)
 {
   private_links_.insert({position, link});
 }
 
-void ClusterBase::set_gateway(unsigned int position, NetPoint* gateway)
+void ClusterBase::set_gateway(unsigned long position, NetPoint* gateway)
 {
   xbt_assert(not gateway || not gateway->is_netzone(), "ClusterBase: gateway cannot be another netzone %s",
              gateway->get_cname());
   gateways_[position] = gateway;
 }
 
-NetPoint* ClusterBase::get_gateway(unsigned int position)
+NetPoint* ClusterBase::get_gateway(unsigned long position)
 {
   NetPoint* res = nullptr;
   auto it       = gateways_.find(position);
@@ -73,13 +73,13 @@ void ClusterBase::fill_leaf_from_cb(unsigned long position, const std::vector<un
   *limiter_link = nullptr;
 
   // auxiliary function to get dims from index
-  auto index_to_dims = [&dimensions](int index) {
-    std::vector<unsigned int> dims_array(dimensions.size());
+  auto index_to_dims = [&dimensions](unsigned long index) {
+    std::vector<unsigned long> dims_array(dimensions.size());
     for (auto i = static_cast<int>(dimensions.size() - 1); i >= 0; --i) {
       if (index <= 0) {
         break;
       }
-      unsigned int value = index % dimensions[i];
+      unsigned long value = index % dimensions[i];
       dims_array[i]      = value;
       index              = (index / dimensions[i]);
     }
index 8e67452..2512b4f 100644 (file)
@@ -20,7 +20,7 @@ namespace routing {
 
 DragonflyZone::DragonflyZone(const std::string& name) : ClusterBase(name) {}
 
-DragonflyZone::Coords DragonflyZone::rankId_to_coords(int rankId) const
+DragonflyZone::Coords DragonflyZone::rankId_to_coords(unsigned long rankId) const
 {
   // coords : group, chassis, blade, node
   Coords coords;
@@ -150,7 +150,7 @@ void DragonflyZone::build_upper_levels(const s4u::ClusterCallbacks& set_callback
 
 void DragonflyZone::generate_routers(const s4u::ClusterCallbacks& set_callbacks)
 {
-  int id = 0;
+  unsigned long id = 2 * num_groups_ * num_chassis_per_group_ * num_blades_per_chassis_ * num_nodes_per_blade_;
   /* get limiter for this router */
   auto get_limiter = [this, &id, &set_callbacks](unsigned int i, unsigned int j,
                                                  unsigned int k) -> resource::LinkImpl* {
@@ -432,7 +432,6 @@ NetZone* create_dragonfly_zone(const std::string& name, const NetZone* parent, c
     zone->fill_leaf_from_cb(i, dimensions, set_callbacks, &netpoint, &loopback, &limiter);
   }
   zone->build_upper_levels(set_callbacks);
-
   return zone->get_iface();
 }
 } // namespace s4u
index 8642501..ee43020 100644 (file)
@@ -259,7 +259,7 @@ void FatTreeZone::generate_switches(const s4u::ClusterCallbacks& set_callbacks)
     return limiter;
   };
   // Create the switches
-  int k = 0;
+  unsigned long k = 2 * nodes_.size();
   for (unsigned int i = 0; i < this->levels_; i++) {
     for (unsigned int j = 0; j < this->nodes_by_level_[i + 1]; j++) {
       k--;
index 1850025..e0a047a 100644 (file)
@@ -13,7 +13,7 @@
 // Callback function common to several routing unit tests
 struct CreateHost {
   std::pair<simgrid::kernel::routing::NetPoint*, simgrid::kernel::routing::NetPoint*>
-  operator()(simgrid::s4u::NetZone* zone, const std::vector<unsigned int>& /*coord*/, int id) const
+  operator()(simgrid::s4u::NetZone* zone, const std::vector<unsigned long>& /*coord*/, unsigned long id) const
   {
     const simgrid::s4u::Host* host = zone->create_host(std::to_string(id), 1e9)->seal();
     return std::make_pair(host->get_netpoint(), nullptr);
index ca8c430..ce370db 100644 (file)
@@ -20,14 +20,15 @@ namespace simgrid {
 namespace kernel {
 namespace routing {
 
-void TorusZone::create_torus_links(int id, int rank, unsigned long position)
+void TorusZone::create_torus_links(unsigned long id, int rank, unsigned long position)
 {
   /* Create all links that exist in the torus. Each rank creates @a dimensions-1 links */
   int dim_product = 1; // Needed to calculate the next neighbor_id
 
   for (unsigned long j = 0; j < dimensions_.size(); j++) {
-    int current_dimension = dimensions_[j]; // which dimension are we currently in?
-                                            // we need to iterate over all dimensions and create all links there
+    unsigned long current_dimension =
+        dimensions_[j]; // which dimension are we currently in?
+                        // we need to iterate over all dimensions and create all links there
     // The other node the link connects
     int neighbor_rank_id = ((rank / dim_product) % current_dimension == current_dimension - 1)
                                ? rank - (current_dimension - 1) * dim_product
index 85ed693..bb830cf 100644 (file)
@@ -205,7 +205,7 @@ public:
        */
       // Load is now < freq_up_threshold; exclude pstate 0 (the fastest)
       // because pstate 0 can only be selected if load > freq_up_threshold_
-      unsigned long new_pstate = static_cast<unsigned long>(get_max_pstate() - load * (get_max_pstate() + 1));
+      auto new_pstate = get_max_pstate() - static_cast<unsigned long>(load) * (get_max_pstate() + 1);
       if (new_pstate < get_min_pstate())
         new_pstate = get_min_pstate();
       get_host()->set_pstate(new_pstate);
index f6eeaa0..df62d8a 100644 (file)
@@ -65,12 +65,13 @@ void CpuImpl::reset_vcpu(CpuImpl* that)
   this->speed_per_pstate_.assign(that->speed_per_pstate_.begin(), that->speed_per_pstate_.end());
 }
 
-CpuImpl* CpuImpl::set_pstate(int pstate_index)
+CpuImpl* CpuImpl::set_pstate(unsigned long pstate_index)
 {
-  xbt_assert(pstate_index <= static_cast<int>(speed_per_pstate_.size()),
-             "Invalid parameters for CPU %s (pstate %d > length of pstates %d). Please fix your platform file, or your "
-             "call to change the pstate.",
-             get_cname(), pstate_index, static_cast<int>(speed_per_pstate_.size()));
+  xbt_assert(
+      pstate_index <= speed_per_pstate_.size(),
+      "Invalid parameters for CPU %s (pstate %lu > length of pstates %lu). Please fix your platform file, or your "
+      "call to change the pstate.",
+      get_cname(), pstate_index, speed_per_pstate_.size());
 
   double new_peak_speed = speed_per_pstate_[pstate_index];
   pstate_               = pstate_index;
@@ -89,10 +90,9 @@ CpuImpl* CpuImpl::set_pstate_speed(const std::vector<double>& speed_per_state)
   return this;
 }
 
-double CpuImpl::get_pstate_peak_speed(int pstate_index) const
+double CpuImpl::get_pstate_peak_speed(unsigned long pstate_index) const
 {
-  xbt_assert((pstate_index <= static_cast<int>(speed_per_pstate_.size())),
-             "Invalid parameters (pstate index out of bounds)");
+  xbt_assert((pstate_index <= speed_per_pstate_.size()), "Invalid parameters (pstate index out of bounds)");
 
   return speed_per_pstate_[pstate_index];
 }
index 82c24be..8f63dd4 100644 (file)
@@ -53,7 +53,7 @@ class XBT_PUBLIC CpuImpl : public Resource_T<CpuImpl> {
 
   s4u::Host* piface_;
   int core_count_ = 1;
-  int pstate_ = 0;                       /*< Current pstate (index in the speed_per_pstate_)*/
+  unsigned long pstate_ = 0;             /*< Current pstate (index in the speed_per_pstate_)*/
   std::vector<double> speed_per_pstate_; /*< List of supported CPU capacities (pstate related). Not 'const' because VCPU
                                             get modified on migration */
   s4u::Host::SharingPolicy sharing_policy_ = s4u::Host::SharingPolicy::LINEAR;
@@ -97,12 +97,12 @@ public:
   virtual double get_speed_ratio() { return speed_.scale; }
 
   /** @brief Get the peak processor speed (in flops/s), at the specified pstate */
-  virtual double get_pstate_peak_speed(int pstate_index) const;
+  virtual double get_pstate_peak_speed(unsigned long pstate_index) const;
 
   virtual unsigned long get_pstate_count() const { return speed_per_pstate_.size(); }
 
-  virtual int get_pstate() const { return pstate_; }
-  virtual CpuImpl* set_pstate(int pstate_index);
+  virtual unsigned long get_pstate() const { return pstate_; }
+  virtual CpuImpl* set_pstate(unsigned long pstate_index);
 
   /*< @brief Setup the profile file with availability events (peak speed changes due to external load).
    * Profile must contain relative values (ratio between 0 and 1)
index 5810642..48b2c01 100644 (file)
@@ -151,10 +151,10 @@ void sg_platf_new_disk(const simgrid::kernel::routing::DiskCreationArgs* disk)
 /** @brief Auxiliary function to create hosts */
 static std::pair<simgrid::kernel::routing::NetPoint*, simgrid::kernel::routing::NetPoint*>
 sg_platf_cluster_create_host(const simgrid::kernel::routing::ClusterCreationArgs* cluster, simgrid::s4u::NetZone* zone,
-                             const std::vector<unsigned int>& /*coord*/, int id)
+                             const std::vector<unsigned long>& /*coord*/, unsigned long id)
 {
   xbt_assert(static_cast<unsigned long>(id) < cluster->radicals.size(),
-             "Zone(%s): error when creating host number %d in the zone. Insufficient number of radicals available "
+             "Zone(%s): error when creating host number %lu in the zone. Insufficient number of radicals available "
              "(total = %zu). Check the 'radical' parameter in XML",
              cluster->id.c_str(), id, cluster->radicals.size());
 
@@ -170,11 +170,12 @@ sg_platf_cluster_create_host(const simgrid::kernel::routing::ClusterCreationArgs
 /** @brief Auxiliary function to create loopback links */
 static simgrid::s4u::Link*
 sg_platf_cluster_create_loopback(const simgrid::kernel::routing::ClusterCreationArgs* cluster,
-                                 simgrid::s4u::NetZone* zone, const std::vector<unsigned int>& /*coord*/, int id)
+                                 simgrid::s4u::NetZone* zone, const std::vector<unsigned long>& /*coord*/,
+                                 unsigned long id)
 {
   xbt_assert(static_cast<unsigned long>(id) < cluster->radicals.size(),
-             "Zone(%s): error when creating loopback for host number %d in the zone. Insufficient number of radicals "
-             "available "
+             "Zone(%s): error when creating loopback for host number %lu in the zone. Insufficient number of "
+             "radicals available "
              "(total = %zu). Check the 'radical' parameter in XML",
              cluster->id.c_str(), id, cluster->radicals.size());
 
@@ -191,7 +192,8 @@ sg_platf_cluster_create_loopback(const simgrid::kernel::routing::ClusterCreation
 /** @brief Auxiliary function to create limiter links */
 static simgrid::s4u::Link* sg_platf_cluster_create_limiter(const simgrid::kernel::routing::ClusterCreationArgs* cluster,
                                                            simgrid::s4u::NetZone* zone,
-                                                           const std::vector<unsigned int>& /*coord*/, int id)
+                                                           const std::vector<unsigned long>& /*coord*/,
+                                                           unsigned long id)
 {
   std::string link_id = std::string(cluster->id) + "_link_" + std::to_string(id) + "_limiter";
   XBT_DEBUG("Cluster: creating limiter link=%s bw=%f", link_id.c_str(), cluster->limiter_link);
index 8935cba..80a1f7a 100644 (file)
@@ -1226,10 +1226,6 @@ $ ${bindir:=.}/flatifier ../platforms/cluster_dragonfly_noncontiguous_rad.xml "-
 >   <link id="black_link_in_group_0_between_chassis_0_and_1_blade_0_6_UP" bandwidth="375000000" latency="0.000050000"/>
 >   <link id="black_link_in_group_0_between_chassis_0_and_1_blade_1_7_DOWN" bandwidth="375000000" latency="0.000050000"/>
 >   <link id="black_link_in_group_0_between_chassis_0_and_1_blade_1_7_UP" bandwidth="375000000" latency="0.000050000"/>
->   <link id="bob_cluster_link_-1_limiter" bandwidth="150000000" latency="0.000000000"/>
->   <link id="bob_cluster_link_-2_limiter" bandwidth="150000000" latency="0.000000000"/>
->   <link id="bob_cluster_link_-3_limiter" bandwidth="150000000" latency="0.000000000"/>
->   <link id="bob_cluster_link_-4_limiter" bandwidth="150000000" latency="0.000000000"/>
 >   <link id="bob_cluster_link_0_limiter" bandwidth="150000000" latency="0.000000000"/>
 >   <link id="bob_cluster_link_0_loopback" bandwidth="100000000" latency="0.000000000" sharing_policy="FATPIPE"/>
 >   <link id="bob_cluster_link_1002_loopback" bandwidth="100000000" latency="0.000000000" sharing_policy="FATPIPE"/>
@@ -1238,6 +1234,10 @@ $ ${bindir:=.}/flatifier ../platforms/cluster_dragonfly_noncontiguous_rad.xml "-
 >   <link id="bob_cluster_link_1_limiter" bandwidth="150000000" latency="0.000000000"/>
 >   <link id="bob_cluster_link_2_limiter" bandwidth="150000000" latency="0.000000000"/>
 >   <link id="bob_cluster_link_3_limiter" bandwidth="150000000" latency="0.000000000"/>
+>   <link id="bob_cluster_link_4_limiter" bandwidth="150000000" latency="0.000000000"/>
+>   <link id="bob_cluster_link_5_limiter" bandwidth="150000000" latency="0.000000000"/>
+>   <link id="bob_cluster_link_6_limiter" bandwidth="150000000" latency="0.000000000"/>
+>   <link id="bob_cluster_link_7_limiter" bandwidth="150000000" latency="0.000000000"/>
 >   <link id="green_link_in_chassis_0_between_routers_0_and_1_4_DOWN" bandwidth="125000000" latency="0.000050000"/>
 >   <link id="green_link_in_chassis_0_between_routers_0_and_1_4_UP" bandwidth="125000000" latency="0.000050000"/>
 >   <link id="green_link_in_chassis_1_between_routers_0_and_1_5_DOWN" bandwidth="125000000" latency="0.000050000"/>
@@ -1254,46 +1254,46 @@ $ ${bindir:=.}/flatifier ../platforms/cluster_dragonfly_noncontiguous_rad.xml "-
 >   <link_ctn id="bob_cluster_link_0_loopback"/>
 >   </route>
 >   <route src="node-0.simgrid.org" dst="node-1002.simgrid.org">
->   <link_ctn id="bob_cluster_link_0_limiter"/><link_ctn id="local_link_from_router_0_to_node_0_0_UP"/><link_ctn id="bob_cluster_link_-1_limiter"/><link_ctn id="green_link_in_chassis_0_between_routers_0_and_1_4_UP"/><link_ctn id="bob_cluster_link_-2_limiter"/><link_ctn id="local_link_from_router_1_to_node_0_1_DOWN"/><link_ctn id="bob_cluster_link_1_limiter"/>
+>   <link_ctn id="bob_cluster_link_0_limiter"/><link_ctn id="local_link_from_router_0_to_node_0_0_UP"/><link_ctn id="bob_cluster_link_7_limiter"/><link_ctn id="green_link_in_chassis_0_between_routers_0_and_1_4_UP"/><link_ctn id="bob_cluster_link_6_limiter"/><link_ctn id="local_link_from_router_1_to_node_0_1_DOWN"/><link_ctn id="bob_cluster_link_1_limiter"/>
 >   </route>
 >   <route src="node-0.simgrid.org" dst="node-1003.simgrid.org">
->   <link_ctn id="bob_cluster_link_0_limiter"/><link_ctn id="local_link_from_router_0_to_node_0_0_UP"/><link_ctn id="bob_cluster_link_-1_limiter"/><link_ctn id="black_link_in_group_0_between_chassis_0_and_1_blade_0_6_UP"/><link_ctn id="bob_cluster_link_-3_limiter"/><link_ctn id="local_link_from_router_2_to_node_0_2_DOWN"/><link_ctn id="bob_cluster_link_2_limiter"/>
+>   <link_ctn id="bob_cluster_link_0_limiter"/><link_ctn id="local_link_from_router_0_to_node_0_0_UP"/><link_ctn id="bob_cluster_link_7_limiter"/><link_ctn id="black_link_in_group_0_between_chassis_0_and_1_blade_0_6_UP"/><link_ctn id="bob_cluster_link_5_limiter"/><link_ctn id="local_link_from_router_2_to_node_0_2_DOWN"/><link_ctn id="bob_cluster_link_2_limiter"/>
 >   </route>
 >   <route src="node-0.simgrid.org" dst="node-1004.simgrid.org">
->   <link_ctn id="bob_cluster_link_0_limiter"/><link_ctn id="local_link_from_router_0_to_node_0_0_UP"/><link_ctn id="bob_cluster_link_-1_limiter"/><link_ctn id="green_link_in_chassis_0_between_routers_0_and_1_4_UP"/><link_ctn id="bob_cluster_link_-2_limiter"/><link_ctn id="black_link_in_group_0_between_chassis_0_and_1_blade_1_7_UP"/><link_ctn id="bob_cluster_link_-4_limiter"/><link_ctn id="local_link_from_router_3_to_node_0_3_DOWN"/><link_ctn id="bob_cluster_link_3_limiter"/>
+>   <link_ctn id="bob_cluster_link_0_limiter"/><link_ctn id="local_link_from_router_0_to_node_0_0_UP"/><link_ctn id="bob_cluster_link_7_limiter"/><link_ctn id="green_link_in_chassis_0_between_routers_0_and_1_4_UP"/><link_ctn id="bob_cluster_link_6_limiter"/><link_ctn id="black_link_in_group_0_between_chassis_0_and_1_blade_1_7_UP"/><link_ctn id="bob_cluster_link_4_limiter"/><link_ctn id="local_link_from_router_3_to_node_0_3_DOWN"/><link_ctn id="bob_cluster_link_3_limiter"/>
 >   </route>
 >   <route src="node-1002.simgrid.org" dst="node-0.simgrid.org">
->   <link_ctn id="bob_cluster_link_1_limiter"/><link_ctn id="local_link_from_router_1_to_node_0_1_UP"/><link_ctn id="bob_cluster_link_-2_limiter"/><link_ctn id="green_link_in_chassis_0_between_routers_0_and_1_4_DOWN"/><link_ctn id="bob_cluster_link_-1_limiter"/><link_ctn id="local_link_from_router_0_to_node_0_0_DOWN"/><link_ctn id="bob_cluster_link_0_limiter"/>
+>   <link_ctn id="bob_cluster_link_1_limiter"/><link_ctn id="local_link_from_router_1_to_node_0_1_UP"/><link_ctn id="bob_cluster_link_6_limiter"/><link_ctn id="green_link_in_chassis_0_between_routers_0_and_1_4_DOWN"/><link_ctn id="bob_cluster_link_7_limiter"/><link_ctn id="local_link_from_router_0_to_node_0_0_DOWN"/><link_ctn id="bob_cluster_link_0_limiter"/>
 >   </route>
 >   <route src="node-1002.simgrid.org" dst="node-1002.simgrid.org">
 >   <link_ctn id="bob_cluster_link_1002_loopback"/>
 >   </route>
 >   <route src="node-1002.simgrid.org" dst="node-1003.simgrid.org">
->   <link_ctn id="bob_cluster_link_1_limiter"/><link_ctn id="local_link_from_router_1_to_node_0_1_UP"/><link_ctn id="bob_cluster_link_-2_limiter"/><link_ctn id="green_link_in_chassis_0_between_routers_0_and_1_4_DOWN"/><link_ctn id="bob_cluster_link_-1_limiter"/><link_ctn id="black_link_in_group_0_between_chassis_0_and_1_blade_0_6_UP"/><link_ctn id="bob_cluster_link_-3_limiter"/><link_ctn id="local_link_from_router_2_to_node_0_2_DOWN"/><link_ctn id="bob_cluster_link_2_limiter"/>
+>   <link_ctn id="bob_cluster_link_1_limiter"/><link_ctn id="local_link_from_router_1_to_node_0_1_UP"/><link_ctn id="bob_cluster_link_6_limiter"/><link_ctn id="green_link_in_chassis_0_between_routers_0_and_1_4_DOWN"/><link_ctn id="bob_cluster_link_7_limiter"/><link_ctn id="black_link_in_group_0_between_chassis_0_and_1_blade_0_6_UP"/><link_ctn id="bob_cluster_link_5_limiter"/><link_ctn id="local_link_from_router_2_to_node_0_2_DOWN"/><link_ctn id="bob_cluster_link_2_limiter"/>
 >   </route>
 >   <route src="node-1002.simgrid.org" dst="node-1004.simgrid.org">
->   <link_ctn id="bob_cluster_link_1_limiter"/><link_ctn id="local_link_from_router_1_to_node_0_1_UP"/><link_ctn id="bob_cluster_link_-2_limiter"/><link_ctn id="black_link_in_group_0_between_chassis_0_and_1_blade_1_7_UP"/><link_ctn id="bob_cluster_link_-4_limiter"/><link_ctn id="local_link_from_router_3_to_node_0_3_DOWN"/><link_ctn id="bob_cluster_link_3_limiter"/>
+>   <link_ctn id="bob_cluster_link_1_limiter"/><link_ctn id="local_link_from_router_1_to_node_0_1_UP"/><link_ctn id="bob_cluster_link_6_limiter"/><link_ctn id="black_link_in_group_0_between_chassis_0_and_1_blade_1_7_UP"/><link_ctn id="bob_cluster_link_4_limiter"/><link_ctn id="local_link_from_router_3_to_node_0_3_DOWN"/><link_ctn id="bob_cluster_link_3_limiter"/>
 >   </route>
 >   <route src="node-1003.simgrid.org" dst="node-0.simgrid.org">
->   <link_ctn id="bob_cluster_link_2_limiter"/><link_ctn id="local_link_from_router_2_to_node_0_2_UP"/><link_ctn id="bob_cluster_link_-3_limiter"/><link_ctn id="black_link_in_group_0_between_chassis_0_and_1_blade_0_6_DOWN"/><link_ctn id="bob_cluster_link_-1_limiter"/><link_ctn id="local_link_from_router_0_to_node_0_0_DOWN"/><link_ctn id="bob_cluster_link_0_limiter"/>
+>   <link_ctn id="bob_cluster_link_2_limiter"/><link_ctn id="local_link_from_router_2_to_node_0_2_UP"/><link_ctn id="bob_cluster_link_5_limiter"/><link_ctn id="black_link_in_group_0_between_chassis_0_and_1_blade_0_6_DOWN"/><link_ctn id="bob_cluster_link_7_limiter"/><link_ctn id="local_link_from_router_0_to_node_0_0_DOWN"/><link_ctn id="bob_cluster_link_0_limiter"/>
 >   </route>
 >   <route src="node-1003.simgrid.org" dst="node-1002.simgrid.org">
->   <link_ctn id="bob_cluster_link_2_limiter"/><link_ctn id="local_link_from_router_2_to_node_0_2_UP"/><link_ctn id="bob_cluster_link_-3_limiter"/><link_ctn id="green_link_in_chassis_1_between_routers_0_and_1_5_UP"/><link_ctn id="bob_cluster_link_-2_limiter"/><link_ctn id="local_link_from_router_1_to_node_0_1_DOWN"/><link_ctn id="bob_cluster_link_1_limiter"/>
+>   <link_ctn id="bob_cluster_link_2_limiter"/><link_ctn id="local_link_from_router_2_to_node_0_2_UP"/><link_ctn id="bob_cluster_link_5_limiter"/><link_ctn id="green_link_in_chassis_1_between_routers_0_and_1_5_UP"/><link_ctn id="bob_cluster_link_6_limiter"/><link_ctn id="local_link_from_router_1_to_node_0_1_DOWN"/><link_ctn id="bob_cluster_link_1_limiter"/>
 >   </route>
 >   <route src="node-1003.simgrid.org" dst="node-1003.simgrid.org">
 >   <link_ctn id="bob_cluster_link_1003_loopback"/>
 >   </route>
 >   <route src="node-1003.simgrid.org" dst="node-1004.simgrid.org">
->   <link_ctn id="bob_cluster_link_2_limiter"/><link_ctn id="local_link_from_router_2_to_node_0_2_UP"/><link_ctn id="bob_cluster_link_-3_limiter"/><link_ctn id="green_link_in_chassis_1_between_routers_0_and_1_5_UP"/><link_ctn id="bob_cluster_link_-2_limiter"/><link_ctn id="black_link_in_group_0_between_chassis_0_and_1_blade_1_7_UP"/><link_ctn id="bob_cluster_link_-4_limiter"/><link_ctn id="local_link_from_router_3_to_node_0_3_DOWN"/><link_ctn id="bob_cluster_link_3_limiter"/>
+>   <link_ctn id="bob_cluster_link_2_limiter"/><link_ctn id="local_link_from_router_2_to_node_0_2_UP"/><link_ctn id="bob_cluster_link_5_limiter"/><link_ctn id="green_link_in_chassis_1_between_routers_0_and_1_5_UP"/><link_ctn id="bob_cluster_link_6_limiter"/><link_ctn id="black_link_in_group_0_between_chassis_0_and_1_blade_1_7_UP"/><link_ctn id="bob_cluster_link_4_limiter"/><link_ctn id="local_link_from_router_3_to_node_0_3_DOWN"/><link_ctn id="bob_cluster_link_3_limiter"/>
 >   </route>
 >   <route src="node-1004.simgrid.org" dst="node-0.simgrid.org">
->   <link_ctn id="bob_cluster_link_3_limiter"/><link_ctn id="local_link_from_router_3_to_node_0_3_UP"/><link_ctn id="bob_cluster_link_-4_limiter"/><link_ctn id="green_link_in_chassis_1_between_routers_0_and_1_5_DOWN"/><link_ctn id="bob_cluster_link_-1_limiter"/><link_ctn id="local_link_from_router_0_to_node_0_0_DOWN"/><link_ctn id="bob_cluster_link_0_limiter"/>
+>   <link_ctn id="bob_cluster_link_3_limiter"/><link_ctn id="local_link_from_router_3_to_node_0_3_UP"/><link_ctn id="bob_cluster_link_4_limiter"/><link_ctn id="green_link_in_chassis_1_between_routers_0_and_1_5_DOWN"/><link_ctn id="bob_cluster_link_7_limiter"/><link_ctn id="local_link_from_router_0_to_node_0_0_DOWN"/><link_ctn id="bob_cluster_link_0_limiter"/>
 >   </route>
 >   <route src="node-1004.simgrid.org" dst="node-1002.simgrid.org">
->   <link_ctn id="bob_cluster_link_3_limiter"/><link_ctn id="local_link_from_router_3_to_node_0_3_UP"/><link_ctn id="bob_cluster_link_-4_limiter"/><link_ctn id="black_link_in_group_0_between_chassis_0_and_1_blade_1_7_DOWN"/><link_ctn id="bob_cluster_link_-2_limiter"/><link_ctn id="local_link_from_router_1_to_node_0_1_DOWN"/><link_ctn id="bob_cluster_link_1_limiter"/>
+>   <link_ctn id="bob_cluster_link_3_limiter"/><link_ctn id="local_link_from_router_3_to_node_0_3_UP"/><link_ctn id="bob_cluster_link_4_limiter"/><link_ctn id="black_link_in_group_0_between_chassis_0_and_1_blade_1_7_DOWN"/><link_ctn id="bob_cluster_link_6_limiter"/><link_ctn id="local_link_from_router_1_to_node_0_1_DOWN"/><link_ctn id="bob_cluster_link_1_limiter"/>
 >   </route>
 >   <route src="node-1004.simgrid.org" dst="node-1003.simgrid.org">
->   <link_ctn id="bob_cluster_link_3_limiter"/><link_ctn id="local_link_from_router_3_to_node_0_3_UP"/><link_ctn id="bob_cluster_link_-4_limiter"/><link_ctn id="green_link_in_chassis_1_between_routers_0_and_1_5_DOWN"/><link_ctn id="bob_cluster_link_-1_limiter"/><link_ctn id="black_link_in_group_0_between_chassis_0_and_1_blade_0_6_UP"/><link_ctn id="bob_cluster_link_-3_limiter"/><link_ctn id="local_link_from_router_2_to_node_0_2_DOWN"/><link_ctn id="bob_cluster_link_2_limiter"/>
+>   <link_ctn id="bob_cluster_link_3_limiter"/><link_ctn id="local_link_from_router_3_to_node_0_3_UP"/><link_ctn id="bob_cluster_link_4_limiter"/><link_ctn id="green_link_in_chassis_1_between_routers_0_and_1_5_DOWN"/><link_ctn id="bob_cluster_link_7_limiter"/><link_ctn id="black_link_in_group_0_between_chassis_0_and_1_blade_0_6_UP"/><link_ctn id="bob_cluster_link_5_limiter"/><link_ctn id="local_link_from_router_2_to_node_0_2_DOWN"/><link_ctn id="bob_cluster_link_2_limiter"/>
 >   </route>
 >   <route src="node-1004.simgrid.org" dst="node-1004.simgrid.org">
 >   <link_ctn id="bob_cluster_link_1004_loopback"/>
@@ -1311,10 +1311,6 @@ $ ${bindir:=.}/flatifier ../platforms/cluster_fat_tree_noncontiguous_rad.xml "--
 >   <host id="node-119.simgrid.org" speed="1000000000"/>
 >   <host id="node-120.simgrid.org" speed="1000000000"/>
 >   <link id="__loopback__" bandwidth="10000000000" latency="0.000000000" sharing_policy="FATPIPE"/>
->   <link id="bob_cluster_link_-1_limiter" bandwidth="50000000" latency="0.000000000"/>
->   <link id="bob_cluster_link_-2_limiter" bandwidth="50000000" latency="0.000000000"/>
->   <link id="bob_cluster_link_-3_limiter" bandwidth="50000000" latency="0.000000000"/>
->   <link id="bob_cluster_link_-4_limiter" bandwidth="50000000" latency="0.000000000"/>
 >   <link id="bob_cluster_link_0_limiter" bandwidth="50000000" latency="0.000000000"/>
 >   <link id="bob_cluster_link_100_loopback" bandwidth="100000000" latency="0.000000000" sharing_policy="FATPIPE"/>
 >   <link id="bob_cluster_link_101_loopback" bandwidth="100000000" latency="0.000000000" sharing_policy="FATPIPE"/>
@@ -1323,74 +1319,78 @@ $ ${bindir:=.}/flatifier ../platforms/cluster_fat_tree_noncontiguous_rad.xml "--
 >   <link id="bob_cluster_link_1_limiter" bandwidth="50000000" latency="0.000000000"/>
 >   <link id="bob_cluster_link_2_limiter" bandwidth="50000000" latency="0.000000000"/>
 >   <link id="bob_cluster_link_3_limiter" bandwidth="50000000" latency="0.000000000"/>
->   <link id="link_from_-1_-3_4_DOWN" bandwidth="125000000" latency="0.000050000"/>
->   <link id="link_from_-1_-3_4_UP" bandwidth="125000000" latency="0.000050000"/>
->   <link id="link_from_-1_-3_5_DOWN" bandwidth="125000000" latency="0.000050000"/>
->   <link id="link_from_-1_-3_5_UP" bandwidth="125000000" latency="0.000050000"/>
->   <link id="link_from_-1_-4_6_DOWN" bandwidth="125000000" latency="0.000050000"/>
->   <link id="link_from_-1_-4_6_UP" bandwidth="125000000" latency="0.000050000"/>
->   <link id="link_from_-1_-4_7_DOWN" bandwidth="125000000" latency="0.000050000"/>
->   <link id="link_from_-1_-4_7_UP" bandwidth="125000000" latency="0.000050000"/>
->   <link id="link_from_-2_-3_8_DOWN" bandwidth="125000000" latency="0.000050000"/>
->   <link id="link_from_-2_-3_8_UP" bandwidth="125000000" latency="0.000050000"/>
->   <link id="link_from_-2_-3_9_DOWN" bandwidth="125000000" latency="0.000050000"/>
->   <link id="link_from_-2_-3_9_UP" bandwidth="125000000" latency="0.000050000"/>
->   <link id="link_from_-2_-4_10_DOWN" bandwidth="125000000" latency="0.000050000"/>
->   <link id="link_from_-2_-4_10_UP" bandwidth="125000000" latency="0.000050000"/>
->   <link id="link_from_-2_-4_11_DOWN" bandwidth="125000000" latency="0.000050000"/>
->   <link id="link_from_-2_-4_11_UP" bandwidth="125000000" latency="0.000050000"/>
->   <link id="link_from_0_-1_0_DOWN" bandwidth="125000000" latency="0.000050000"/>
->   <link id="link_from_0_-1_0_UP" bandwidth="125000000" latency="0.000050000"/>
->   <link id="link_from_1_-1_1_DOWN" bandwidth="125000000" latency="0.000050000"/>
->   <link id="link_from_1_-1_1_UP" bandwidth="125000000" latency="0.000050000"/>
->   <link id="link_from_2_-2_2_DOWN" bandwidth="125000000" latency="0.000050000"/>
->   <link id="link_from_2_-2_2_UP" bandwidth="125000000" latency="0.000050000"/>
->   <link id="link_from_3_-2_3_DOWN" bandwidth="125000000" latency="0.000050000"/>
->   <link id="link_from_3_-2_3_UP" bandwidth="125000000" latency="0.000050000"/>
+>   <link id="bob_cluster_link_4_limiter" bandwidth="50000000" latency="0.000000000"/>
+>   <link id="bob_cluster_link_5_limiter" bandwidth="50000000" latency="0.000000000"/>
+>   <link id="bob_cluster_link_6_limiter" bandwidth="50000000" latency="0.000000000"/>
+>   <link id="bob_cluster_link_7_limiter" bandwidth="50000000" latency="0.000000000"/>
+>   <link id="link_from_0_7_0_DOWN" bandwidth="125000000" latency="0.000050000"/>
+>   <link id="link_from_0_7_0_UP" bandwidth="125000000" latency="0.000050000"/>
+>   <link id="link_from_1_7_1_DOWN" bandwidth="125000000" latency="0.000050000"/>
+>   <link id="link_from_1_7_1_UP" bandwidth="125000000" latency="0.000050000"/>
+>   <link id="link_from_2_6_2_DOWN" bandwidth="125000000" latency="0.000050000"/>
+>   <link id="link_from_2_6_2_UP" bandwidth="125000000" latency="0.000050000"/>
+>   <link id="link_from_3_6_3_DOWN" bandwidth="125000000" latency="0.000050000"/>
+>   <link id="link_from_3_6_3_UP" bandwidth="125000000" latency="0.000050000"/>
+>   <link id="link_from_6_4_10_DOWN" bandwidth="125000000" latency="0.000050000"/>
+>   <link id="link_from_6_4_10_UP" bandwidth="125000000" latency="0.000050000"/>
+>   <link id="link_from_6_4_11_DOWN" bandwidth="125000000" latency="0.000050000"/>
+>   <link id="link_from_6_4_11_UP" bandwidth="125000000" latency="0.000050000"/>
+>   <link id="link_from_6_5_8_DOWN" bandwidth="125000000" latency="0.000050000"/>
+>   <link id="link_from_6_5_8_UP" bandwidth="125000000" latency="0.000050000"/>
+>   <link id="link_from_6_5_9_DOWN" bandwidth="125000000" latency="0.000050000"/>
+>   <link id="link_from_6_5_9_UP" bandwidth="125000000" latency="0.000050000"/>
+>   <link id="link_from_7_4_6_DOWN" bandwidth="125000000" latency="0.000050000"/>
+>   <link id="link_from_7_4_6_UP" bandwidth="125000000" latency="0.000050000"/>
+>   <link id="link_from_7_4_7_DOWN" bandwidth="125000000" latency="0.000050000"/>
+>   <link id="link_from_7_4_7_UP" bandwidth="125000000" latency="0.000050000"/>
+>   <link id="link_from_7_5_4_DOWN" bandwidth="125000000" latency="0.000050000"/>
+>   <link id="link_from_7_5_4_UP" bandwidth="125000000" latency="0.000050000"/>
+>   <link id="link_from_7_5_5_DOWN" bandwidth="125000000" latency="0.000050000"/>
+>   <link id="link_from_7_5_5_UP" bandwidth="125000000" latency="0.000050000"/>
 >   <route src="node-100.simgrid.org" dst="node-100.simgrid.org">
 >   <link_ctn id="bob_cluster_link_100_loopback"/>
 >   </route>
 >   <route src="node-100.simgrid.org" dst="node-101.simgrid.org">
->   <link_ctn id="bob_cluster_link_0_limiter"/><link_ctn id="link_from_0_-1_0_UP"/><link_ctn id="link_from_1_-1_1_DOWN"/><link_ctn id="bob_cluster_link_-1_limiter"/><link_ctn id="bob_cluster_link_1_limiter"/>
+>   <link_ctn id="bob_cluster_link_0_limiter"/><link_ctn id="link_from_0_7_0_UP"/><link_ctn id="link_from_1_7_1_DOWN"/><link_ctn id="bob_cluster_link_7_limiter"/><link_ctn id="bob_cluster_link_1_limiter"/>
 >   </route>
 >   <route src="node-100.simgrid.org" dst="node-119.simgrid.org">
->   <link_ctn id="bob_cluster_link_0_limiter"/><link_ctn id="link_from_0_-1_0_UP"/><link_ctn id="bob_cluster_link_-1_limiter"/><link_ctn id="link_from_-1_-3_4_UP"/><link_ctn id="link_from_-2_-3_8_DOWN"/><link_ctn id="bob_cluster_link_-3_limiter"/><link_ctn id="link_from_2_-2_2_DOWN"/><link_ctn id="bob_cluster_link_-2_limiter"/><link_ctn id="bob_cluster_link_2_limiter"/>
+>   <link_ctn id="bob_cluster_link_0_limiter"/><link_ctn id="link_from_0_7_0_UP"/><link_ctn id="bob_cluster_link_7_limiter"/><link_ctn id="link_from_7_5_4_UP"/><link_ctn id="link_from_6_5_8_DOWN"/><link_ctn id="bob_cluster_link_5_limiter"/><link_ctn id="link_from_2_6_2_DOWN"/><link_ctn id="bob_cluster_link_6_limiter"/><link_ctn id="bob_cluster_link_2_limiter"/>
 >   </route>
 >   <route src="node-100.simgrid.org" dst="node-120.simgrid.org">
->   <link_ctn id="bob_cluster_link_0_limiter"/><link_ctn id="link_from_0_-1_0_UP"/><link_ctn id="bob_cluster_link_-1_limiter"/><link_ctn id="link_from_-1_-4_6_UP"/><link_ctn id="link_from_-2_-4_10_DOWN"/><link_ctn id="bob_cluster_link_-4_limiter"/><link_ctn id="link_from_3_-2_3_DOWN"/><link_ctn id="bob_cluster_link_-2_limiter"/><link_ctn id="bob_cluster_link_3_limiter"/>
+>   <link_ctn id="bob_cluster_link_0_limiter"/><link_ctn id="link_from_0_7_0_UP"/><link_ctn id="bob_cluster_link_7_limiter"/><link_ctn id="link_from_7_4_6_UP"/><link_ctn id="link_from_6_4_10_DOWN"/><link_ctn id="bob_cluster_link_4_limiter"/><link_ctn id="link_from_3_6_3_DOWN"/><link_ctn id="bob_cluster_link_6_limiter"/><link_ctn id="bob_cluster_link_3_limiter"/>
 >   </route>
 >   <route src="node-101.simgrid.org" dst="node-100.simgrid.org">
->   <link_ctn id="bob_cluster_link_1_limiter"/><link_ctn id="link_from_1_-1_1_UP"/><link_ctn id="link_from_0_-1_0_DOWN"/><link_ctn id="bob_cluster_link_-1_limiter"/><link_ctn id="bob_cluster_link_0_limiter"/>
+>   <link_ctn id="bob_cluster_link_1_limiter"/><link_ctn id="link_from_1_7_1_UP"/><link_ctn id="link_from_0_7_0_DOWN"/><link_ctn id="bob_cluster_link_7_limiter"/><link_ctn id="bob_cluster_link_0_limiter"/>
 >   </route>
 >   <route src="node-101.simgrid.org" dst="node-101.simgrid.org">
 >   <link_ctn id="bob_cluster_link_101_loopback"/>
 >   </route>
 >   <route src="node-101.simgrid.org" dst="node-119.simgrid.org">
->   <link_ctn id="bob_cluster_link_1_limiter"/><link_ctn id="link_from_1_-1_1_UP"/><link_ctn id="bob_cluster_link_-1_limiter"/><link_ctn id="link_from_-1_-3_4_UP"/><link_ctn id="link_from_-2_-3_8_DOWN"/><link_ctn id="bob_cluster_link_-3_limiter"/><link_ctn id="link_from_2_-2_2_DOWN"/><link_ctn id="bob_cluster_link_-2_limiter"/><link_ctn id="bob_cluster_link_2_limiter"/>
+>   <link_ctn id="bob_cluster_link_1_limiter"/><link_ctn id="link_from_1_7_1_UP"/><link_ctn id="bob_cluster_link_7_limiter"/><link_ctn id="link_from_7_5_4_UP"/><link_ctn id="link_from_6_5_8_DOWN"/><link_ctn id="bob_cluster_link_5_limiter"/><link_ctn id="link_from_2_6_2_DOWN"/><link_ctn id="bob_cluster_link_6_limiter"/><link_ctn id="bob_cluster_link_2_limiter"/>
 >   </route>
 >   <route src="node-101.simgrid.org" dst="node-120.simgrid.org">
->   <link_ctn id="bob_cluster_link_1_limiter"/><link_ctn id="link_from_1_-1_1_UP"/><link_ctn id="bob_cluster_link_-1_limiter"/><link_ctn id="link_from_-1_-4_6_UP"/><link_ctn id="link_from_-2_-4_10_DOWN"/><link_ctn id="bob_cluster_link_-4_limiter"/><link_ctn id="link_from_3_-2_3_DOWN"/><link_ctn id="bob_cluster_link_-2_limiter"/><link_ctn id="bob_cluster_link_3_limiter"/>
+>   <link_ctn id="bob_cluster_link_1_limiter"/><link_ctn id="link_from_1_7_1_UP"/><link_ctn id="bob_cluster_link_7_limiter"/><link_ctn id="link_from_7_4_6_UP"/><link_ctn id="link_from_6_4_10_DOWN"/><link_ctn id="bob_cluster_link_4_limiter"/><link_ctn id="link_from_3_6_3_DOWN"/><link_ctn id="bob_cluster_link_6_limiter"/><link_ctn id="bob_cluster_link_3_limiter"/>
 >   </route>
 >   <route src="node-119.simgrid.org" dst="node-100.simgrid.org">
->   <link_ctn id="bob_cluster_link_2_limiter"/><link_ctn id="link_from_2_-2_2_UP"/><link_ctn id="bob_cluster_link_-2_limiter"/><link_ctn id="link_from_-2_-3_8_UP"/><link_ctn id="link_from_-1_-3_4_DOWN"/><link_ctn id="bob_cluster_link_-3_limiter"/><link_ctn id="link_from_0_-1_0_DOWN"/><link_ctn id="bob_cluster_link_-1_limiter"/><link_ctn id="bob_cluster_link_0_limiter"/>
+>   <link_ctn id="bob_cluster_link_2_limiter"/><link_ctn id="link_from_2_6_2_UP"/><link_ctn id="bob_cluster_link_6_limiter"/><link_ctn id="link_from_6_5_8_UP"/><link_ctn id="link_from_7_5_4_DOWN"/><link_ctn id="bob_cluster_link_5_limiter"/><link_ctn id="link_from_0_7_0_DOWN"/><link_ctn id="bob_cluster_link_7_limiter"/><link_ctn id="bob_cluster_link_0_limiter"/>
 >   </route>
 >   <route src="node-119.simgrid.org" dst="node-101.simgrid.org">
->   <link_ctn id="bob_cluster_link_2_limiter"/><link_ctn id="link_from_2_-2_2_UP"/><link_ctn id="bob_cluster_link_-2_limiter"/><link_ctn id="link_from_-2_-4_10_UP"/><link_ctn id="link_from_-1_-4_6_DOWN"/><link_ctn id="bob_cluster_link_-4_limiter"/><link_ctn id="link_from_1_-1_1_DOWN"/><link_ctn id="bob_cluster_link_-1_limiter"/><link_ctn id="bob_cluster_link_1_limiter"/>
+>   <link_ctn id="bob_cluster_link_2_limiter"/><link_ctn id="link_from_2_6_2_UP"/><link_ctn id="bob_cluster_link_6_limiter"/><link_ctn id="link_from_6_4_10_UP"/><link_ctn id="link_from_7_4_6_DOWN"/><link_ctn id="bob_cluster_link_4_limiter"/><link_ctn id="link_from_1_7_1_DOWN"/><link_ctn id="bob_cluster_link_7_limiter"/><link_ctn id="bob_cluster_link_1_limiter"/>
 >   </route>
 >   <route src="node-119.simgrid.org" dst="node-119.simgrid.org">
 >   <link_ctn id="bob_cluster_link_119_loopback"/>
 >   </route>
 >   <route src="node-119.simgrid.org" dst="node-120.simgrid.org">
->   <link_ctn id="bob_cluster_link_2_limiter"/><link_ctn id="link_from_2_-2_2_UP"/><link_ctn id="link_from_3_-2_3_DOWN"/><link_ctn id="bob_cluster_link_-2_limiter"/><link_ctn id="bob_cluster_link_3_limiter"/>
+>   <link_ctn id="bob_cluster_link_2_limiter"/><link_ctn id="link_from_2_6_2_UP"/><link_ctn id="link_from_3_6_3_DOWN"/><link_ctn id="bob_cluster_link_6_limiter"/><link_ctn id="bob_cluster_link_3_limiter"/>
 >   </route>
 >   <route src="node-120.simgrid.org" dst="node-100.simgrid.org">
->   <link_ctn id="bob_cluster_link_3_limiter"/><link_ctn id="link_from_3_-2_3_UP"/><link_ctn id="bob_cluster_link_-2_limiter"/><link_ctn id="link_from_-2_-3_8_UP"/><link_ctn id="link_from_-1_-3_4_DOWN"/><link_ctn id="bob_cluster_link_-3_limiter"/><link_ctn id="link_from_0_-1_0_DOWN"/><link_ctn id="bob_cluster_link_-1_limiter"/><link_ctn id="bob_cluster_link_0_limiter"/>
+>   <link_ctn id="bob_cluster_link_3_limiter"/><link_ctn id="link_from_3_6_3_UP"/><link_ctn id="bob_cluster_link_6_limiter"/><link_ctn id="link_from_6_5_8_UP"/><link_ctn id="link_from_7_5_4_DOWN"/><link_ctn id="bob_cluster_link_5_limiter"/><link_ctn id="link_from_0_7_0_DOWN"/><link_ctn id="bob_cluster_link_7_limiter"/><link_ctn id="bob_cluster_link_0_limiter"/>
 >   </route>
 >   <route src="node-120.simgrid.org" dst="node-101.simgrid.org">
->   <link_ctn id="bob_cluster_link_3_limiter"/><link_ctn id="link_from_3_-2_3_UP"/><link_ctn id="bob_cluster_link_-2_limiter"/><link_ctn id="link_from_-2_-4_10_UP"/><link_ctn id="link_from_-1_-4_6_DOWN"/><link_ctn id="bob_cluster_link_-4_limiter"/><link_ctn id="link_from_1_-1_1_DOWN"/><link_ctn id="bob_cluster_link_-1_limiter"/><link_ctn id="bob_cluster_link_1_limiter"/>
+>   <link_ctn id="bob_cluster_link_3_limiter"/><link_ctn id="link_from_3_6_3_UP"/><link_ctn id="bob_cluster_link_6_limiter"/><link_ctn id="link_from_6_4_10_UP"/><link_ctn id="link_from_7_4_6_DOWN"/><link_ctn id="bob_cluster_link_4_limiter"/><link_ctn id="link_from_1_7_1_DOWN"/><link_ctn id="bob_cluster_link_7_limiter"/><link_ctn id="bob_cluster_link_1_limiter"/>
 >   </route>
 >   <route src="node-120.simgrid.org" dst="node-119.simgrid.org">
->   <link_ctn id="bob_cluster_link_3_limiter"/><link_ctn id="link_from_3_-2_3_UP"/><link_ctn id="link_from_2_-2_2_DOWN"/><link_ctn id="bob_cluster_link_-2_limiter"/><link_ctn id="bob_cluster_link_2_limiter"/>
+>   <link_ctn id="bob_cluster_link_3_limiter"/><link_ctn id="link_from_3_6_3_UP"/><link_ctn id="link_from_2_6_2_DOWN"/><link_ctn id="bob_cluster_link_6_limiter"/><link_ctn id="bob_cluster_link_2_limiter"/>
 >   </route>
 >   <route src="node-120.simgrid.org" dst="node-120.simgrid.org">
 >   <link_ctn id="bob_cluster_link_120_loopback"/>