From 33883442375c73f8116eca3ca3269a6f1725a285 Mon Sep 17 00:00:00 2001 From: SUTER Frederic Date: Thu, 3 Feb 2022 22:40:29 +0100 Subject: [PATCH] remove old simcall_comm_test and simcall_comm_testany --- src/kernel/activity/CommImpl.cpp | 11 ------ src/mc/api.cpp | 5 +-- src/simix/libsmx.cpp | 24 +++++++++++- src/simix/popping_accessors.hpp | 64 -------------------------------- src/simix/popping_bodies.cpp | 14 ------- src/simix/popping_enum.hpp | 4 +- src/simix/popping_generated.cpp | 12 ------ src/simix/simcalls.in | 2 - 8 files changed, 25 insertions(+), 111 deletions(-) diff --git a/src/kernel/activity/CommImpl.cpp b/src/kernel/activity/CommImpl.cpp index 4de3fa3d21..1539a20f9c 100644 --- a/src/kernel/activity/CommImpl.cpp +++ b/src/kernel/activity/CommImpl.cpp @@ -70,17 +70,6 @@ void simcall_HANDLER_comm_wait(smx_simcall_t simcall, simgrid::kernel::activity: comm->wait_for(simcall->issuer_, timeout); } -bool simcall_HANDLER_comm_test(smx_simcall_t simcall, simgrid::kernel::activity::CommImpl* comm) -{ - return comm->test(simcall->issuer_); -} - -ssize_t simcall_HANDLER_comm_testany(smx_simcall_t simcall, simgrid::kernel::activity::CommImpl* comms[], size_t count) -{ - std::vector comms_vec(comms, comms + count); - return simgrid::kernel::activity::ActivityImpl::test_any(simcall->issuer_, comms_vec); -} - void simcall_HANDLER_comm_waitany(smx_simcall_t simcall, simgrid::kernel::activity::CommImpl* comms[], size_t count, double timeout) { diff --git a/src/mc/api.cpp b/src/mc/api.cpp index 77d2418b34..b469ab0da3 100644 --- a/src/mc/api.cpp +++ b/src/mc/api.cpp @@ -131,16 +131,15 @@ bool Api::simcall_check_dependency(smx_simcall_t req1, smx_simcall_t req2) const { const auto IRECV = Simcall::COMM_IRECV; const auto ISEND = Simcall::COMM_ISEND; - const auto TEST = Simcall::COMM_TEST; const auto WAIT = Simcall::COMM_WAIT; if (req1->issuer_ == req2->issuer_) // Done in observer for TEST and WAIT return false; /* The independence theorem only consider 4 simcalls. All others are dependent with anything. */ - if (req1->call_ != ISEND && req1->call_ != IRECV && req1->call_ != TEST && req1->call_ != WAIT) + if (req1->call_ != ISEND && req1->call_ != IRECV && req1->call_ != WAIT) return true; - if (req2->call_ != ISEND && req2->call_ != IRECV && req2->call_ != TEST && req2->call_ != WAIT) + if (req2->call_ != ISEND && req2->call_ != IRECV && req2->call_ != WAIT) return true; /* Make sure that req1 and req2 are in alphabetic order */ diff --git a/src/simix/libsmx.cpp b/src/simix/libsmx.cpp index 79a9a5f7f1..e327acc893 100644 --- a/src/simix/libsmx.cpp +++ b/src/simix/libsmx.cpp @@ -129,7 +129,20 @@ ssize_t simcall_comm_testany(simgrid::kernel::activity::CommImpl* comms[], size_ { if (count == 0) return -1; - return simcall_BODY_comm_testany(comms, count); + std::vector activities; + for (size_t i = 0; i < count; i++) + activities.push_back(static_cast(comms[i])); + + simgrid::kernel::actor::ActorImpl* issuer = simgrid::kernel::actor::ActorImpl::self(); + simgrid::kernel::actor::ActivityTestanySimcall observer{issuer, activities}; + ssize_t changed_pos = simgrid::kernel::actor::simcall_blocking( + [&observer] { + simgrid::kernel::activity::ActivityImpl::test_any(observer.get_issuer(), observer.get_activities()); + }, + &observer); + if (changed_pos != -1) + comms[changed_pos]->get_iface()->complete(simgrid::s4u::Activity::State::FINISHED); + return changed_pos; } /** @@ -147,7 +160,14 @@ void simcall_comm_wait(simgrid::kernel::activity::ActivityImpl* comm, double tim */ bool simcall_comm_test(simgrid::kernel::activity::ActivityImpl* comm) // XBT_ATTRIB_DEPRECATED_v335 { - return simcall_BODY_comm_test(static_cast(comm)); + simgrid::kernel::actor::ActorImpl* issuer = simgrid::kernel::actor::ActorImpl::self(); + simgrid::kernel::actor::ActivityTestSimcall observer{issuer, comm}; + if (simgrid::kernel::actor::simcall_blocking([&observer] { observer.get_activity()->test(observer.get_issuer()); }, + &observer)) { + comm->get_iface()->complete(simgrid::s4u::Activity::State::FINISHED); + return true; + } + return false; } void simcall_run_kernel(std::function const& code, simgrid::kernel::actor::SimcallObserver* observer) diff --git a/src/simix/popping_accessors.hpp b/src/simix/popping_accessors.hpp index 9db16d4fea..5c30dffc19 100644 --- a/src/simix/popping_accessors.hpp +++ b/src/simix/popping_accessors.hpp @@ -499,68 +499,6 @@ static inline void simcall_comm_isend__set__result(smx_simcall_t simcall, boost: simgrid::simix::marshal>(simcall->result_, result); } -static inline simgrid::kernel::activity::CommImpl* simcall_comm_test__get__comm(smx_simcall_t simcall) -{ - return simgrid::simix::unmarshal(simcall->args_[0]); -} -static inline simgrid::kernel::activity::CommImpl* simcall_comm_test__getraw__comm(smx_simcall_t simcall) -{ - return simgrid::simix::unmarshal_raw(simcall->args_[0]); -} -static inline void simcall_comm_test__set__comm(smx_simcall_t simcall, simgrid::kernel::activity::CommImpl* arg) -{ - simgrid::simix::marshal(simcall->args_[0], arg); -} -static inline bool simcall_comm_test__get__result(smx_simcall_t simcall) -{ - return simgrid::simix::unmarshal(simcall->result_); -} -static inline bool simcall_comm_test__getraw__result(smx_simcall_t simcall) -{ - return simgrid::simix::unmarshal_raw(simcall->result_); -} -static inline void simcall_comm_test__set__result(smx_simcall_t simcall, bool result) -{ - simgrid::simix::marshal(simcall->result_, result); -} - -static inline simgrid::kernel::activity::CommImpl** simcall_comm_testany__get__comms(smx_simcall_t simcall) -{ - return simgrid::simix::unmarshal(simcall->args_[0]); -} -static inline simgrid::kernel::activity::CommImpl** simcall_comm_testany__getraw__comms(smx_simcall_t simcall) -{ - return simgrid::simix::unmarshal_raw(simcall->args_[0]); -} -static inline void simcall_comm_testany__set__comms(smx_simcall_t simcall, simgrid::kernel::activity::CommImpl** arg) -{ - simgrid::simix::marshal(simcall->args_[0], arg); -} -static inline size_t simcall_comm_testany__get__count(smx_simcall_t simcall) -{ - return simgrid::simix::unmarshal(simcall->args_[1]); -} -static inline size_t simcall_comm_testany__getraw__count(smx_simcall_t simcall) -{ - return simgrid::simix::unmarshal_raw(simcall->args_[1]); -} -static inline void simcall_comm_testany__set__count(smx_simcall_t simcall, size_t arg) -{ - simgrid::simix::marshal(simcall->args_[1], arg); -} -static inline ssize_t simcall_comm_testany__get__result(smx_simcall_t simcall) -{ - return simgrid::simix::unmarshal(simcall->result_); -} -static inline ssize_t simcall_comm_testany__getraw__result(smx_simcall_t simcall) -{ - return simgrid::simix::unmarshal_raw(simcall->result_); -} -static inline void simcall_comm_testany__set__result(smx_simcall_t simcall, ssize_t result) -{ - simgrid::simix::marshal(simcall->result_, result); -} - static inline simgrid::kernel::activity::CommImpl** simcall_comm_waitany__get__comms(smx_simcall_t simcall) { return simgrid::simix::unmarshal(simcall->args_[0]); @@ -667,7 +605,5 @@ XBT_PRIVATE void simcall_HANDLER_comm_recv(smx_simcall_t simcall, smx_actor_t re XBT_PRIVATE boost::intrusive_ptr simcall_HANDLER_comm_irecv(smx_simcall_t simcall, smx_actor_t receiver, smx_mailbox_t mbox, unsigned char* dst_buff, size_t* dst_buff_size, simix_match_func_t match_fun, simix_copy_data_func_t copy_data_fun, void* data, double rate); XBT_PRIVATE void simcall_HANDLER_comm_send(smx_simcall_t simcall, smx_actor_t sender, smx_mailbox_t mbox, double task_size, double rate, unsigned char* src_buff, size_t src_buff_size, simix_match_func_t match_fun, simix_copy_data_func_t copy_data_fun, void* data, double timeout); XBT_PRIVATE boost::intrusive_ptr simcall_HANDLER_comm_isend(smx_simcall_t simcall, smx_actor_t sender, smx_mailbox_t mbox, double task_size, double rate, unsigned char* src_buff, size_t src_buff_size, simix_match_func_t match_fun, simix_clean_func_t clean_fun, simix_copy_data_func_t copy_data_fun, void* data, bool detached); -XBT_PRIVATE bool simcall_HANDLER_comm_test(smx_simcall_t simcall, simgrid::kernel::activity::CommImpl* comm); -XBT_PRIVATE ssize_t simcall_HANDLER_comm_testany(smx_simcall_t simcall, simgrid::kernel::activity::CommImpl** comms, size_t count); XBT_PRIVATE void simcall_HANDLER_comm_waitany(smx_simcall_t simcall, simgrid::kernel::activity::CommImpl** comms, size_t count, double timeout); XBT_PRIVATE void simcall_HANDLER_comm_wait(smx_simcall_t simcall, simgrid::kernel::activity::CommImpl* comm, double timeout); diff --git a/src/simix/popping_bodies.cpp b/src/simix/popping_bodies.cpp index 751f850c04..3cdd0c0bb5 100644 --- a/src/simix/popping_bodies.cpp +++ b/src/simix/popping_bodies.cpp @@ -69,20 +69,6 @@ inline static boost::intrusive_ptr simc return simcall, smx_actor_t, smx_mailbox_t, double, double, unsigned char*, size_t, simix_match_func_t, simix_clean_func_t, simix_copy_data_func_t, void*, bool>(Simcall::COMM_ISEND, sender, mbox, task_size, rate, src_buff, src_buff_size, match_fun, clean_fun, copy_data_fun, data, detached); } -inline static bool simcall_BODY_comm_test(simgrid::kernel::activity::CommImpl* comm) -{ - if (false) /* Go to that function to follow the code flow through the simcall barrier */ - simcall_HANDLER_comm_test(&simgrid::kernel::actor::ActorImpl::self()->simcall_, comm); - return simcall(Simcall::COMM_TEST, comm); -} - -inline static ssize_t simcall_BODY_comm_testany(simgrid::kernel::activity::CommImpl** comms, size_t count) -{ - if (false) /* Go to that function to follow the code flow through the simcall barrier */ - simcall_HANDLER_comm_testany(&simgrid::kernel::actor::ActorImpl::self()->simcall_, comms, count); - return simcall(Simcall::COMM_TESTANY, comms, count); -} - inline static ssize_t simcall_BODY_comm_waitany(simgrid::kernel::activity::CommImpl** comms, size_t count, double timeout) { if (false) /* Go to that function to follow the code flow through the simcall barrier */ diff --git a/src/simix/popping_enum.hpp b/src/simix/popping_enum.hpp index 44f6b5b610..aac349c039 100644 --- a/src/simix/popping_enum.hpp +++ b/src/simix/popping_enum.hpp @@ -25,14 +25,12 @@ enum class Simcall { COMM_IRECV, COMM_SEND, COMM_ISEND, - COMM_TEST, - COMM_TESTANY, COMM_WAITANY, COMM_WAIT, RUN_KERNEL, RUN_BLOCKING, }; -constexpr int NUM_SIMCALLS = 11; +constexpr int NUM_SIMCALLS = 9; } // namespace simix } // namespace simgrid diff --git a/src/simix/popping_generated.cpp b/src/simix/popping_generated.cpp index b5e566d102..50b7d0e88a 100644 --- a/src/simix/popping_generated.cpp +++ b/src/simix/popping_generated.cpp @@ -34,8 +34,6 @@ constexpr std::array simcall_names{{ "Simcall::COMM_IRECV", "Simcall::COMM_SEND", "Simcall::COMM_ISEND", - "Simcall::COMM_TEST", - "Simcall::COMM_TESTANY", "Simcall::COMM_WAITANY", "Simcall::COMM_WAIT", "Simcall::RUN_KERNEL", @@ -74,16 +72,6 @@ void simgrid::kernel::actor::ActorImpl::simcall_handle(int times_considered) simcall_answer(); break; - case Simcall::COMM_TEST: - simgrid::simix::marshal(simcall_.result_, simcall_HANDLER_comm_test(&simcall_, simgrid::simix::unmarshal(simcall_.args_[0]))); - simcall_answer(); - break; - - case Simcall::COMM_TESTANY: - simgrid::simix::marshal(simcall_.result_, simcall_HANDLER_comm_testany(&simcall_, simgrid::simix::unmarshal(simcall_.args_[0]), simgrid::simix::unmarshal(simcall_.args_[1]))); - simcall_answer(); - break; - case Simcall::COMM_WAITANY: simcall_HANDLER_comm_waitany(&simcall_, simgrid::simix::unmarshal(simcall_.args_[0]), simgrid::simix::unmarshal(simcall_.args_[1]), simgrid::simix::unmarshal(simcall_.args_[2])); break; diff --git a/src/simix/simcalls.in b/src/simix/simcalls.in index fc44f01107..4fe1426942 100644 --- a/src/simix/simcalls.in +++ b/src/simix/simcalls.in @@ -39,8 +39,6 @@ void comm_recv(smx_actor_t receiver, smx_mailbox_t mbox, unsigned char boost::intrusive_ptr comm_irecv(smx_actor_t receiver, smx_mailbox_t mbox, unsigned char* dst_buff, size_t* dst_buff_size, simix_match_func_t match_fun, simix_copy_data_func_t copy_data_fun, void* data, double rate); void comm_send(smx_actor_t sender, smx_mailbox_t mbox, double task_size, double rate, unsigned char* src_buff, size_t src_buff_size, simix_match_func_t match_fun, simix_copy_data_func_t copy_data_fun, void* data, double timeout) [[block]]; boost::intrusive_ptr comm_isend(smx_actor_t sender, smx_mailbox_t mbox, double task_size, double rate, unsigned char* src_buff, size_t src_buff_size, simix_match_func_t match_fun, simix_clean_func_t clean_fun, simix_copy_data_func_t copy_data_fun, void* data, bool detached); -bool comm_test(simgrid::kernel::activity::CommImpl* comm); -ssize_t comm_testany(simgrid::kernel::activity::CommImpl** comms, size_t count); ssize_t comm_waitany(simgrid::kernel::activity::CommImpl** comms, size_t count, double timeout) [[block]]; void comm_wait(simgrid::kernel::activity::CommImpl* comm, double timeout) [[block]]; -- 2.20.1