X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/b592b5aa6acbd39d705426f2b275ee8736548d0d..HEAD:/include/simgrid/kernel/routing/DragonflyZone.hpp diff --git a/include/simgrid/kernel/routing/DragonflyZone.hpp b/include/simgrid/kernel/routing/DragonflyZone.hpp index 382c4d1823..acb1122ae5 100644 --- a/include/simgrid/kernel/routing/DragonflyZone.hpp +++ b/include/simgrid/kernel/routing/DragonflyZone.hpp @@ -1,28 +1,30 @@ -/* Copyright (c) 2014-2021. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2014-2023. 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. */ -#ifndef SURF_ROUTING_CLUSTER_DRAGONFLY_HPP_ -#define SURF_ROUTING_CLUSTER_DRAGONFLY_HPP_ +#ifndef SIMGRID_ROUTING_CLUSTER_DRAGONFLY_HPP_ +#define SIMGRID_ROUTING_CLUSTER_DRAGONFLY_HPP_ #include #include -namespace simgrid { -namespace kernel { -namespace routing { +namespace simgrid::kernel::routing { class DragonflyRouter { public: unsigned int group_; unsigned int chassis_; unsigned int blade_; - resource::LinkImpl* blue_link_ = nullptr; - std::vector black_links_; - std::vector green_links_; - std::vector my_nodes_; - DragonflyRouter(unsigned group, unsigned chassis, unsigned blade) : group_(group), chassis_(chassis), blade_(blade) {} + resource::StandardLinkImpl* blue_link_ = nullptr; + resource::StandardLinkImpl* limiter_ = nullptr; + std::vector black_links_; + std::vector green_links_; + std::vector my_nodes_; + DragonflyRouter(unsigned group, unsigned chassis, unsigned blade, resource::StandardLinkImpl* limiter) + : group_(group), chassis_(chassis), blade_(blade), limiter_(limiter) + { + } }; /** @ingroup ROUTING_API @@ -58,17 +60,17 @@ public: * is also not realistic, as blue level can use more links than a single * Aries can handle, thus it should use several routers. */ -class XBT_PUBLIC DragonflyZone : public ClusterZone { +class XBT_PUBLIC DragonflyZone : public ClusterBase { public: struct Coords { - unsigned group; - unsigned chassis; - unsigned blade; - unsigned node; + unsigned long group; + unsigned long chassis; + unsigned long blade; + unsigned long node; }; explicit DragonflyZone(const std::string& name); - void get_local_route(NetPoint* src, NetPoint* dst, RouteCreationArgs* into, double* latency) override; + void get_local_route(const NetPoint* src, const NetPoint* dst, Route* into, double* latency) override; /** * @brief Parse topology parameters from string format * @@ -83,17 +85,17 @@ public: /** @brief Set Dragonfly topology */ void set_topology(unsigned int n_groups, unsigned int groups_links, unsigned int n_chassis, unsigned int chassis_links, unsigned int n_routers, unsigned int routers_links, unsigned int nodes); + /** @brief Build upper levels (routers) in Dragonfly */ + 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; - XBT_ATTRIB_DEPRECATED_v330("Please use rankId_to_coords(int)") void rankId_to_coords(int rank_id, - unsigned int coords[4]) const; + Coords rankId_to_coords(unsigned long rank_id) const; private: - void do_seal() override; - void generate_routers(); + void generate_routers(const s4u::ClusterCallbacks& set_callbacks); void generate_links(); - void generate_link(const std::string& id, int numlinks, resource::LinkImpl** linkup, resource::LinkImpl** linkdown); + void generate_link(const std::string& id, int numlinks, resource::StandardLinkImpl** linkup, + resource::StandardLinkImpl** linkdown); unsigned int num_nodes_per_blade_ = 0; unsigned int num_blades_per_chassis_ = 0; @@ -105,7 +107,5 @@ private: unsigned int num_links_per_link_ = 1; // splitduplex -> 2, only for local link std::vector routers_; }; -} // namespace routing -} // namespace kernel -} // namespace simgrid +} // namespace simgrid::kernel::routing #endif