X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/8fc47788f4a49a8c31c7a4d2aa7f09d06572b915..c6d6e5b87aed9c7080c981b11f91f2d0205623c3:/examples/cpp/clusters-multicpu/s4u-clusters-multicpu.cpp?ds=sidebyside diff --git a/examples/cpp/clusters-multicpu/s4u-clusters-multicpu.cpp b/examples/cpp/clusters-multicpu/s4u-clusters-multicpu.cpp index 49becd86cd..f0c2b7eddf 100644 --- a/examples/cpp/clusters-multicpu/s4u-clusters-multicpu.cpp +++ b/examples/cpp/clusters-multicpu/s4u-clusters-multicpu.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2010-2021. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2010-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. */ @@ -30,8 +30,7 @@ public: std::vector mboxes; /* Start dispatching 1 message to all receivers */ - std::string msg_content = - std::string("Hello, I'm alive and running on ") + std::string(sg4::this_actor::get_host()->get_name()); + std::string msg_content = "Hello, I'm alive and running on " + sg4::this_actor::get_host()->get_name(); for (const auto* host : hosts_) { /* Copy the data we send: the 'msg_content' variable is not a stable storage location. * It will be destroyed when this actor leaves the loop, ie before the receiver gets it */ @@ -47,7 +46,7 @@ public: XBT_INFO("Done dispatching all messages"); /* Now that all message exchanges were initiated, wait for their completion in one single call */ - sg4::Comm::wait_all(&pending_comms); + sg4::Comm::wait_all(pending_comms); XBT_INFO("Goodbye now!"); } @@ -89,7 +88,7 @@ public: * @return netpoint, gateway: the netpoint to the StarZone and CPU0 as gateway */ static std::pair -create_hostzone(const sg4::NetZone* zone, const std::vector& /*coord*/, int id) +create_hostzone(const sg4::NetZone* zone, const std::vector& /*coord*/, unsigned long id) { constexpr int num_cpus = 8; //!< Number of CPUs in the zone constexpr double speed = 1e9; //!< Speed of each CPU @@ -102,25 +101,24 @@ create_hostzone(const sg4::NetZone* zone, const std::vector& /*coo /* setting my Torus parent zone */ host_zone->set_parent(zone); - const sg4::Host* gateway = nullptr; + simgrid::kernel::routing::NetPoint* gateway = nullptr; /* create CPUs */ for (int i = 0; i < num_cpus; i++) { std::string cpu_name = hostname + "-cpu" + std::to_string(i); const sg4::Host* host = host_zone->create_host(cpu_name, speed)->seal(); /* the first CPU is the gateway */ if (i == 0) - gateway = host; - /* create 2 links for a full-duplex communication */ - sg4::Link* link_up = host_zone->create_link("link-up-" + cpu_name, link_bw)->set_latency(link_lat)->seal(); - sg4::Link* link_down = host_zone->create_link("link-down-" + cpu_name, link_bw)->set_latency(link_lat)->seal(); - /* link UP, connection from CPU to outer world */ - host_zone->add_route(host->get_netpoint(), nullptr, nullptr, nullptr, std::vector{link_up}, false); - /* link DOWN, connection from outer to CPU */ - host_zone->add_route(nullptr, host->get_netpoint(), nullptr, nullptr, std::vector{link_down}, false); + gateway = host->get_netpoint(); + /* create split-duplex link */ + sg4::SplitDuplexLink* link = host_zone->create_split_duplex_link("link-" + cpu_name, link_bw); + link->set_latency(link_lat)->seal(); + /* connecting CPU to outer world */ + host_zone->add_route(host->get_netpoint(), nullptr, nullptr, nullptr, {{link, sg4::LinkInRoute::Direction::UP}}, + true); } /* seal newly created netzone */ host_zone->seal(); - return std::make_pair(host_zone->get_netpoint(), gateway->get_netpoint()); + return std::make_pair(host_zone->get_netpoint(), gateway); } /*************************************************************************************************/ @@ -140,7 +138,7 @@ create_hostzone(const sg4::NetZone* zone, const std::vector& /*coo * @param id Internal identifier in the torus (for information) * @return Limiter link */ -static sg4::Link* create_limiter(sg4::NetZone* zone, const std::vector& /*coord*/, int id) +static sg4::Link* create_limiter(sg4::NetZone* zone, const std::vector& /*coord*/, unsigned long id) { return zone->create_link("limiter-" + std::to_string(id), 1e9)->seal(); } @@ -294,10 +292,9 @@ static void create_dragonfly_cluster() int main(int argc, char* argv[]) { sg4::Engine e(&argc, argv); - std::string platform = argv[1]; /* create platform */ - if (platform == "torus") + if (std::string platform(argv[1]); platform == "torus") create_torus_cluster(); else if (platform == "fatTree") create_fatTree_cluster(); @@ -309,7 +306,7 @@ int main(int argc, char* argv[]) sg4::Actor::create("sender", host_list[0], Sender(host_list)); /* create receiver in every host */ for (auto* host : host_list) { - sg4::Actor::create(std::string("receiver-") + std::string(host->get_name()), host, Receiver()); + sg4::Actor::create("receiver-" + host->get_name(), host, Receiver()); } /* runs the simulation */