From be838030500085b9f389bbaea66dc60fc2e082be Mon Sep 17 00:00:00 2001 From: Martin Quinson Date: Thu, 20 Jul 2023 00:10:08 +0200 Subject: [PATCH] Add a add_route for hosts, without gateways --- ChangeLog | 1 + examples/cpp/comm-failure/s4u-comm-failure.cpp | 4 ++-- examples/cpp/network-factors/s4u-network-factors.cpp | 2 +- examples/cpp/network-nonlinear/s4u-network-nonlinear.cpp | 3 +-- .../s4u-platform-comm-serialize.cpp | 3 +-- examples/cpp/platform-failures/s4u-platform-failures.cpp | 2 +- examples/python/comm-failure/comm-failure.py | 4 ++-- include/simgrid/s4u/NetZone.hpp | 9 +++++++++ src/bindings/python/simgrid_python.cpp | 4 ++++ src/s4u/s4u_Netzone.cpp | 5 +++++ 10 files changed, 27 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6e5f715a92..4015db41c7 100644 --- 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 diff --git a/examples/cpp/comm-failure/s4u-comm-failure.cpp b/examples/cpp/comm-failure/s4u-comm-failure.cpp index 9f36c75bfb..8544a4c780 100644 --- a/examples/cpp/comm-failure/s4u-comm-failure.cpp +++ b/examples/cpp/comm-failure/s4u-comm-failure.cpp @@ -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")); diff --git a/examples/cpp/network-factors/s4u-network-factors.cpp b/examples/cpp/network-factors/s4u-network-factors.cpp index 1ff67f6252..36ca183f96 100644 --- a/examples/cpp/network-factors/s4u-network-factors.cpp +++ b/examples/cpp/network-factors/s4u-network-factors.cpp @@ -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(); diff --git a/examples/cpp/network-nonlinear/s4u-network-nonlinear.cpp b/examples/cpp/network-nonlinear/s4u-network-nonlinear.cpp index c403d2ba74..0e1c821d1f 100644 --- a/examples/cpp/network-nonlinear/s4u-network-nonlinear.cpp +++ b/examples/cpp/network-nonlinear/s4u-network-nonlinear.cpp @@ -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 */ diff --git a/examples/cpp/platform-comm-serialize/s4u-platform-comm-serialize.cpp b/examples/cpp/platform-comm-serialize/s4u-platform-comm-serialize.cpp index 3335631aaa..8db9a7fe08 100644 --- a/examples/cpp/platform-comm-serialize/s4u-platform-comm-serialize.cpp +++ b/examples/cpp/platform-comm-serialize/s4u-platform-comm-serialize.cpp @@ -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 */ diff --git a/examples/cpp/platform-failures/s4u-platform-failures.cpp b/examples/cpp/platform-failures/s4u-platform-failures.cpp index 4cafcc1634..334bbb7971 100644 --- a/examples/cpp/platform-failures/s4u-platform-failures.cpp +++ b/examples/cpp/platform-failures/s4u-platform-failures.cpp @@ -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 diff --git a/examples/python/comm-failure/comm-failure.py b/examples/python/comm-failure/comm-failure.py index 4b70b33f7a..9f6f086e29 100644 --- a/examples/python/comm-failure/comm-failure.py +++ b/examples/python/comm-failure/comm-failure.py @@ -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") diff --git a/include/simgrid/s4u/NetZone.hpp b/include/simgrid/s4u/NetZone.hpp index 97ecfbbc71..8552a90c0d 100644 --- a/include/simgrid/s4u/NetZone.hpp +++ b/include/simgrid/s4u/NetZone.hpp @@ -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& 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& 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, diff --git a/src/bindings/python/simgrid_python.cpp b/src/bindings/python/simgrid_python.cpp index 07517ed349..a2abe30754 100644 --- a/src/bindings/python/simgrid_python.cpp +++ b/src/bindings/python/simgrid_python.cpp @@ -243,6 +243,10 @@ PYBIND11_MODULE(simgrid, m) simgrid::kernel::routing::NetPoint*, simgrid::kernel::routing::NetPoint*, const std::vector&, bool>(&simgrid::s4u::NetZone::add_route), "Add a route between 2 netpoints") + .def("add_route", + py::overload_cast&, bool>(&simgrid::s4u::NetZone::add_route), + "Add a route between 2 netpoints") .def("create_host", py::overload_cast(&simgrid::s4u::NetZone::create_host), "Creates a host") .def("create_host", diff --git a/src/s4u/s4u_Netzone.cpp b/src/s4u/s4u_Netzone.cpp index 139baf6d36..165b0f3864 100644 --- a/src/s4u/s4u_Netzone.cpp +++ b/src/s4u/s4u_Netzone.cpp @@ -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& 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& link_list) -- 2.20.1