Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
fire on_start for one-sided communication instead of on_send/recv
authorFred Suter <suterf@ornl.gov>
Sun, 4 Jun 2023 18:52:18 +0000 (14:52 -0400)
committerFred Suter <suterf@ornl.gov>
Sun, 4 Jun 2023 18:52:18 +0000 (14:52 -0400)
src/instr/instr_platform.cpp
src/s4u/s4u_Comm.cpp

index 5ea76ef..94b95e3 100644 (file)
@@ -525,19 +525,18 @@ void define_callbacks()
         Container::by_name(c.get_destination()->get_name())->get_state("HOST_STATE")->pop_event();
       }
     });
-    s4u::Comm::on_send_cb([](s4u::Comm const& c) {
+    s4u::Comm::on_start_cb([](s4u::Comm const& c) {
       std::string pid = instr_pid(*s4u::Actor::self());
-      if (pid == "-0") //Comm is launched directly by Maestro, use the host as container
-        Container::by_name(c.get_source()->get_name())->get_state("HOST_STATE")->push_event("send");
-      else
-        Container::by_name(pid)->get_state("ACTOR_STATE")->push_event("send");
+      if (pid == "-0") { //Comm is launched directly by Maestro, use the host as container
+        Container::by_name(c.get_source()->get_name())->get_state("HOST_STATE")->push_event("start");
+        Container::by_name(c.get_destination()->get_name())->get_state("HOST_STATE")->push_event("start");
+      }
+    });
+    s4u::Comm::on_send_cb([](s4u::Comm const& c) {
+      Container::by_name(instr_pid(*s4u::Actor::self()))->get_state("ACTOR_STATE")->push_event("send");
     });
     s4u::Comm::on_recv_cb([](s4u::Comm const& c) {
-      std::string pid = instr_pid(*s4u::Actor::self());
-      if (pid == "-0") //Comm is launched directly by Maestro, use the host as container
-        Container::by_name(c.get_destination()->get_name())->get_state("HOST_STATE")->push_event("receive");
-      else
-        Container::by_name(pid)->get_state("ACTOR_STATE")->push_event("receive");
+      Container::by_name(instr_pid(*s4u::Actor::self()))->get_state("ACTOR_STATE")->push_event("receive");
     });
     s4u::Actor::on_host_change_cb(on_actor_host_change);
   }
index 47a3de6..f7bfc9e 100644 (file)
@@ -314,10 +314,8 @@ Comm* Comm::do_start()
     xbt_assert(src_buff_ == nullptr && dst_buff_ == nullptr,
                "Direct host-to-host communications cannot carry any data.");
     XBT_DEBUG("host-to-host Comm. Pimpl already created and set, just start it.");
-    on_send(*this);
-    on_this_send(*this);
-    on_recv(*this);
-    on_this_recv(*this);
+    on_start(*this);
+    on_this_start(*this);
     kernel::actor::simcall_answered([this] {
       pimpl_->set_state(kernel::activity::State::READY);
       boost::static_pointer_cast<kernel::activity::CommImpl>(pimpl_)->start();