Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
CommunicationDeterminismChecker class doesn't use RemotePtr, it passes paramaters
authorEhsan Azimi <eazimi@ehsan.irisa.fr>
Mon, 30 Nov 2020 17:10:55 +0000 (18:10 +0100)
committerEhsan Azimi <eazimi@ehsan.irisa.fr>
Mon, 30 Nov 2020 17:10:55 +0000 (18:10 +0100)
with CommImpl* type to APIs in mc_api (fasade layer). The mc_api calls RemotePtr and does
the required conversion.

src/mc/checker/CommunicationDeterminismChecker.cpp
src/mc/checker/CommunicationDeterminismChecker.hpp
src/mc/mc_api.cpp
src/mc/mc_api.hpp

index 39b40cc..a23e2ca 100644 (file)
@@ -19,7 +19,6 @@
 
 #include <cstdint>
 
-using simgrid::mc::remote;
 using mcapi = simgrid::mc::mc_api;
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_comm_determinism, mc, "Logging specific to MC communication determinism detection");
@@ -95,7 +94,7 @@ static char* print_determinism_result(simgrid::mc::CommPatternDifference diff, i
 }
 
 static void update_comm_pattern(simgrid::mc::PatternCommunication* comm_pattern,
-                                simgrid::mc::RemotePtr<simgrid::kernel::activity::CommImpl> comm_addr)
+                                const simgrid::kernel::activity::CommImpl* comm_addr)
 {
   auto src_proc = mcapi::get().get_src_actor(comm_addr);
   auto dst_proc = mcapi::get().get_dst_actor(comm_addr);
@@ -227,7 +226,7 @@ void CommunicationDeterminismChecker::get_comm_pattern(smx_simcall_t request, Ca
   incomplete_communications_pattern[issuer->get_pid()].push_back(pattern.release());
 }
 
-void CommunicationDeterminismChecker::complete_comm_pattern(RemotePtr<kernel::activity::CommImpl> comm_addr,
+void CommunicationDeterminismChecker::complete_comm_pattern(const kernel::activity::CommImpl* comm_addr,
                                                             unsigned int issuer, int backtracking)
 {
   /* Complete comm pattern */
@@ -393,7 +392,7 @@ void CommunicationDeterminismChecker::handle_comm_pattern(simgrid::mc::CallType
       break;
     case CallType::WAIT:
     case CallType::WAITANY: {
-      simgrid::mc::RemotePtr<simgrid::kernel::activity::CommImpl> comm_addr{nullptr};
+      simgrid::kernel::activity::CommImpl* comm_addr = nullptr;
       if (call_type == CallType::WAIT)
         comm_addr = mcapi::get().get_comm_wait_raw_addr(req);
       else
index c8ca066..291afb5 100644 (file)
@@ -35,7 +35,7 @@ private:
 public:
   // These are used by functions which should be moved in CommunicationDeterminismChecker:
   void get_comm_pattern(smx_simcall_t request, CallType call_type, int backtracking);
-  void complete_comm_pattern(RemotePtr<kernel::activity::CommImpl> comm_addr, unsigned int issuer, int backtracking);
+  void complete_comm_pattern(const kernel::activity::CommImpl* comm_addr, unsigned int issuer, int backtracking);
 
 private:
   /** Stack representing the position in the exploration graph */
index b591da2..e3e1093 100644 (file)
@@ -228,9 +228,9 @@ void mc_api::copy_index_comm_pattern(simgrid::mc::State* state) const
     state->communication_indices_.push_back(list_process_comm.index_comm);
 }
 
-bool mc_api::comm_addr_equal(kernel::activity::CommImpl* comm_addr1, RemotePtr<kernel::activity::CommImpl> comm_addr2) const
+bool mc_api::comm_addr_equal(const kernel::activity::CommImpl* comm_addr1, const kernel::activity::CommImpl* comm_addr2) const
 {
-  return remote(comm_addr1) == comm_addr2;
+  return remote(comm_addr1) == remote(comm_addr2);
 }
 
 kernel::activity::CommImpl* mc_api::get_comm_isend_raw_addr(smx_simcall_t request) const
@@ -239,15 +239,15 @@ kernel::activity::CommImpl* mc_api::get_comm_isend_raw_addr(smx_simcall_t reques
   return static_cast<kernel::activity::CommImpl*>(comm_addr);
 }
 
-simgrid::mc::RemotePtr<kernel::activity::CommImpl> mc_api::get_comm_wait_raw_addr(smx_simcall_t request) const
+kernel::activity::CommImpl* mc_api::get_comm_wait_raw_addr(smx_simcall_t request) const
 {
-  return remote(simcall_comm_wait__getraw__comm(request));
+  return simcall_comm_wait__getraw__comm(request);
 }
 
-simgrid::mc::RemotePtr<kernel::activity::CommImpl> mc_api::get_comm_waitany_raw_addr(smx_simcall_t request, int value) const
+kernel::activity::CommImpl* mc_api::get_comm_waitany_raw_addr(smx_simcall_t request, int value) const
 {
   auto addr = mc_model_checker->get_remote_simulation().read(remote(simcall_comm_waitany__getraw__comms(request) + value));
-  return remote(static_cast<simgrid::kernel::activity::CommImpl*>(addr));
+  return static_cast<simgrid::kernel::activity::CommImpl*>(addr);
 }
 
 std::string mc_api::get_pattern_comm_rdv(void* addr) const
@@ -295,10 +295,10 @@ std::vector<char> mc_api::get_pattern_comm_data(void* addr) const
   return buffer;
 }
 
-std::vector<char> mc_api::get_pattern_comm_data(mc::RemotePtr<kernel::activity::CommImpl> const& comm_addr) const
+std::vector<char> mc_api::get_pattern_comm_data(const kernel::activity::CommImpl* comm_addr) const
 {
   simgrid::mc::Remote<simgrid::kernel::activity::CommImpl> temp_comm;
-  mc_model_checker->get_remote_simulation().read(temp_comm, comm_addr);
+  mc_model_checker->get_remote_simulation().read(temp_comm, remote((kernel::activity::CommImpl*)comm_addr));
   const simgrid::kernel::activity::CommImpl* comm = temp_comm.get_buffer();
   
   std::vector<char> buffer {};
@@ -324,20 +324,20 @@ bool mc_api::check_send_request_detached(smx_simcall_t const& simcall) const
   return mpi_request.detached();
 }
 
-smx_actor_t mc_api::get_src_actor(mc::RemotePtr<kernel::activity::CommImpl> const& comm_addr) const
+smx_actor_t mc_api::get_src_actor(const kernel::activity::CommImpl* comm_addr) const
 {
   simgrid::mc::Remote<simgrid::kernel::activity::CommImpl> temp_comm;
-  mc_model_checker->get_remote_simulation().read(temp_comm, comm_addr);
+  mc_model_checker->get_remote_simulation().read(temp_comm, remote((kernel::activity::CommImpl*)comm_addr));
   const simgrid::kernel::activity::CommImpl* comm = temp_comm.get_buffer();
 
   auto src_proc = mc_model_checker->get_remote_simulation().resolve_actor(simgrid::mc::remote(comm->src_actor_.get()));
   return src_proc;
 }
 
-smx_actor_t mc_api::get_dst_actor(mc::RemotePtr<kernel::activity::CommImpl> const& comm_addr) const
+smx_actor_t mc_api::get_dst_actor(const kernel::activity::CommImpl* comm_addr) const
 {
   simgrid::mc::Remote<simgrid::kernel::activity::CommImpl> temp_comm;
-  mc_model_checker->get_remote_simulation().read(temp_comm, comm_addr);
+  mc_model_checker->get_remote_simulation().read(temp_comm, remote((kernel::activity::CommImpl*)comm_addr));
   const simgrid::kernel::activity::CommImpl* comm = temp_comm.get_buffer();
 
   auto dst_proc = mc_model_checker->get_remote_simulation().resolve_actor(simgrid::mc::remote(comm->dst_actor_.get()));
index 792c15c..dceca5e 100644 (file)
@@ -47,19 +47,19 @@ public:
   // COMMUNICATION APIs
   void copy_incomplete_comm_pattern(simgrid::mc::State* state) const;
   void copy_index_comm_pattern(simgrid::mc::State* state) const;
-  bool comm_addr_equal(kernel::activity::CommImpl* comm_addr1, RemotePtr<kernel::activity::CommImpl> comm_addr2) const;
+  bool comm_addr_equal(const kernel::activity::CommImpl* comm_addr1, const kernel::activity::CommImpl* comm_addr2) const;
   kernel::activity::CommImpl* get_comm_isend_raw_addr(smx_simcall_t request) const;
-  simgrid::mc::RemotePtr<kernel::activity::CommImpl> get_comm_wait_raw_addr(smx_simcall_t request) const;
-  simgrid::mc::RemotePtr<kernel::activity::CommImpl> get_comm_waitany_raw_addr(smx_simcall_t request, int value) const;
+  kernel::activity::CommImpl* get_comm_wait_raw_addr(smx_simcall_t request) const;
+  kernel::activity::CommImpl* get_comm_waitany_raw_addr(smx_simcall_t request, int value) const;
   std::string get_pattern_comm_rdv(void* addr) const;
   unsigned long get_pattern_comm_src_proc(void* addr) const;
   unsigned long get_pattern_comm_dst_proc(void* addr) const;
   std::vector<char> get_pattern_comm_data(void* addr) const;
-  std::vector<char> get_pattern_comm_data(mc::RemotePtr<kernel::activity::CommImpl> const& comm_addr) const;
+  std::vector<char> get_pattern_comm_data(const kernel::activity::CommImpl* comm_addr) const;
   const char* get_actor_host_name(smx_actor_t actor) const;
   bool check_send_request_detached(smx_simcall_t const& simcall) const;
-  smx_actor_t get_src_actor(mc::RemotePtr<kernel::activity::CommImpl> const& comm_addr) const;
-  smx_actor_t get_dst_actor(mc::RemotePtr<kernel::activity::CommImpl> const& comm_addr) const;
+  smx_actor_t get_src_actor(const kernel::activity::CommImpl* comm_addr) const;
+  smx_actor_t get_dst_actor(const kernel::activity::CommImpl* comm_addr) const;
 
   // REMOTE APIs
   std::size_t get_remote_heap_bytes() const;