Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add a add_route for hosts, without gateways
authorMartin Quinson <martin.quinson@ens-rennes.fr>
Wed, 19 Jul 2023 22:10:08 +0000 (00:10 +0200)
committerMartin Quinson <martin.quinson@ens-rennes.fr>
Wed, 19 Jul 2023 22:10:08 +0000 (00:10 +0200)
ChangeLog
examples/cpp/comm-failure/s4u-comm-failure.cpp
examples/cpp/network-factors/s4u-network-factors.cpp
examples/cpp/network-nonlinear/s4u-network-nonlinear.cpp
examples/cpp/platform-comm-serialize/s4u-platform-comm-serialize.cpp
examples/cpp/platform-failures/s4u-platform-failures.cpp
examples/python/comm-failure/comm-failure.py
include/simgrid/s4u/NetZone.hpp
src/bindings/python/simgrid_python.cpp
src/s4u/s4u_Netzone.cpp

index 6e5f715..4015db4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,7 @@ SimGrid (3.34.1) not released (Target: fall 2023)
 
 S4U:
  - New class ActivitySet to ease wait_any()/test_any()/wait_all()
+ - New function NetZone::add_route(host1, host2, links) when you don't need gateways
 
 Python:
  - Make the host_load plugin available from Python. See examples/python/plugin-host-load
index 9f36c75..8544a4c 100644 (file)
@@ -86,8 +86,8 @@ int main(int argc, char** argv)
   sg4::LinkInRoute linkto2{zone->create_link("linkto2", "1bps")->seal()};
   sg4::LinkInRoute linkto3{zone->create_link("linkto3", "1bps")->seal()};
 
-  zone->add_route(host1->get_netpoint(), host2->get_netpoint(), nullptr, nullptr, {linkto2}, false);
-  zone->add_route(host1->get_netpoint(), host3->get_netpoint(), nullptr, nullptr, {linkto3}, false);
+  zone->add_route(host1, host2, {linkto2}, false);
+  zone->add_route(host1, host3, {linkto3}, false);
   zone->seal();
 
   sg4::Actor::create("Sender", host1, Sender("mailbox2", "mailbox3"));
index 1ff67f6..36ca183 100644 (file)
@@ -79,7 +79,7 @@ static void load_platform()
     root->add_route(host->get_netpoint(), nullptr, nullptr, nullptr, {{l, sg4::LinkInRoute::Direction::UP}}, true);
 
     const sg4::Link* loopback = root->create_link(hostname + "_loopback", BW_LOCAL)->set_latency(LATENCY)->seal();
-    root->add_route(host->get_netpoint(), host->get_netpoint(), nullptr, nullptr, {sg4::LinkInRoute(loopback)});
+    root->add_route(host, host, {sg4::LinkInRoute(loopback)});
   }
 
   root->seal();
index c403d2b..0e1c821 100644 (file)
@@ -131,8 +131,7 @@ static void load_platform()
   link->set_latency(10e-6)->seal();
 
   /* create routes between nodes */
-  zone->add_route(sender->get_netpoint(), receiver->get_netpoint(), nullptr, nullptr,
-                  {{link, sg4::LinkInRoute::Direction::UP}}, true);
+  zone->add_route(sender, receiver, {{link, sg4::LinkInRoute::Direction::UP}}, true);
   zone->seal();
 
   /* create actors Sender/Receiver */
index 3335631..8db9a7f 100644 (file)
@@ -109,8 +109,7 @@ int main(int argc, char* argv[])
       zone->create_split_duplex_link("link1", 10e9)->set_latency(10e-6)->set_concurrency_limit(2)->seal();
 
   /* create routes between nodes */
-  zone->add_route(sender->get_netpoint(), receiver->get_netpoint(), nullptr, nullptr,
-                  {{link, sg4::LinkInRoute::Direction::UP}}, true);
+  zone->add_route(sender, receiver, {{link, sg4::LinkInRoute::Direction::UP}}, true);
   zone->seal();
 
   /* create actors Sender/Receiver */
index 4cafcc1..334bbb7 100644 (file)
@@ -119,7 +119,7 @@ int main(int argc, char* argv[])
   auto* root     = e.get_netzone_root();
   auto* lilibeth = root->create_host("Lilibeth", 1e15);
   auto link      = sg4::LinkInRoute(e.link_by_name("10"));
-  root->add_route(e.host_by_name("Tremblay")->get_netpoint(), lilibeth->get_netpoint(), nullptr, nullptr, {link}, true);
+  root->add_route(e.host_by_name("Tremblay"), lilibeth, {link}, true);
   lilibeth->set_state_profile(simgrid::kernel::profile::ProfileBuilder::from_string("lilibeth_profile", R"(
 4 0
 5 1
index 4b70b33..9f6f086 100644 (file)
@@ -69,8 +69,8 @@ def main():
     link_to_2 = LinkInRoute(zone.create_link("link_to_2", "1bps").seal())
     link_to_3 = LinkInRoute(zone.create_link("link_to_3", "1bps").seal())
 
-    zone.add_route(host1.netpoint, host2.netpoint, None, None, [link_to_2], False)
-    zone.add_route(host1.netpoint, host3.netpoint, None, None, [link_to_3], False)
+    zone.add_route(host1, host2, [link_to_2], False)
+    zone.add_route(host1, host3, [link_to_3], False)
     zone.seal()
 
     Actor.create("Sender", host1, sender, "mailbox2", "mailbox3")
index 97ecfbb..8552a90 100644 (file)
@@ -81,6 +81,15 @@ public:
    */
   void add_route(kernel::routing::NetPoint* src, kernel::routing::NetPoint* dst, kernel::routing::NetPoint* gw_src,
                  kernel::routing::NetPoint* gw_dst, const std::vector<LinkInRoute>& link_list, bool symmetrical = true);
+  /**
+   * @brief Add a route between 2 hosts
+   *
+   * @param src Source host
+   * @param dst Destination host
+   * @param link_list List of links and their direction used in this communication
+   * @param symmetrical Bi-directional communication
+   */
+  void add_route(const Host* src, const Host* dst, const std::vector<LinkInRoute>& link_list, bool symmetrical = true);
 
   void add_bypass_route(kernel::routing::NetPoint* src, kernel::routing::NetPoint* dst,
                         kernel::routing::NetPoint* gw_src, kernel::routing::NetPoint* gw_dst,
index 07517ed..a2abe30 100644 (file)
@@ -243,6 +243,10 @@ PYBIND11_MODULE(simgrid, m)
                              simgrid::kernel::routing::NetPoint*, simgrid::kernel::routing::NetPoint*,
                              const std::vector<simgrid::s4u::LinkInRoute>&, bool>(&simgrid::s4u::NetZone::add_route),
            "Add a route between 2 netpoints")
+      .def("add_route",
+           py::overload_cast<const simgrid::s4u::Host*, const simgrid::s4u::Host*,
+                             const std::vector<simgrid::s4u::LinkInRoute>&, bool>(&simgrid::s4u::NetZone::add_route),
+           "Add a route between 2 netpoints")
       .def("create_host", py::overload_cast<const std::string&, double>(&simgrid::s4u::NetZone::create_host),
            "Creates a host")
       .def("create_host",
index 139baf6..165b0f3 100644 (file)
@@ -92,6 +92,11 @@ void NetZone::add_route(kernel::routing::NetPoint* src, kernel::routing::NetPoin
   pimpl_->add_route(src, dst, gw_src, gw_dst, link_list, symmetrical);
 }
 
+void NetZone::add_route(const Host* src, const Host* dst, const std::vector<LinkInRoute>& link_list, bool symmetrical)
+{
+  pimpl_->add_route(src->get_netpoint(), dst->get_netpoint(), nullptr, nullptr, link_list, symmetrical);
+}
+
 void NetZone::add_bypass_route(kernel::routing::NetPoint* src, kernel::routing::NetPoint* dst,
                                kernel::routing::NetPoint* gw_src, kernel::routing::NetPoint* gw_dst,
                                const std::vector<LinkInRoute>& link_list)