Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add new entry in Release_Notes.
[simgrid.git] / src / smpi / include / smpi_actor.hpp
index c493f3a..cb097d2 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2009-2018. The SimGrid Team. All rights reserved.          */
+/* Copyright (c) 2009-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. */
@@ -9,17 +9,16 @@
 #include "private.hpp"
 #include "simgrid/s4u/Mailbox.hpp"
 #include "src/instr/instr_smpi.hpp"
-#include "xbt/synchro.h"
+#include "xbt/xbt_os_time.h"
+#include <string_view>
 
-namespace simgrid {
-namespace smpi {
+namespace simgrid::smpi {
 
 class ActorExt {
-private:
   double simulated_ = 0 /* Used to time with simulated_start/elapsed */;
-  simgrid::s4u::MailboxPtr mailbox_;
-  simgrid::s4u::MailboxPtr mailbox_small_;
-  xbt_mutex_t mailboxes_mutex_;
+  s4u::Mailbox* mailbox_;
+  s4u::Mailbox* mailbox_small_;
+  s4u::MutexPtr mailboxes_mutex_;
   xbt_os_timer_t timer_;
   MPI_Comm comm_self_   = MPI_COMM_NULL;
   MPI_Comm comm_intra_  = MPI_COMM_NULL;
@@ -28,53 +27,73 @@ private:
   int sampling_ = 0; /* inside an SMPI_SAMPLE_ block? */
   std::string instance_id_;
   bool replaying_ = false; /* is the process replaying a trace */
-  simgrid::s4u::Barrier* finalization_barrier_;
   smpi_trace_call_location_t trace_call_loc_;
-  simgrid::s4u::ActorPtr actor_                  = nullptr;
+  s4u::Actor* actor_                             = nullptr;
   smpi_privatization_region_t privatized_region_ = nullptr;
-  int optind                                     = 0; /*for getopt replacement */
+#ifdef __linux__
+  int optind_                                     = 0; /*for getopt replacement */
+#else
+  int optind_                                     = 1; /*for getopt replacement */
+#endif
+  std::string tracing_category_                  = "";
+  MPI_Info info_env_;
+  void* bsend_buffer_    = nullptr;
+  int bsend_buffer_size_ = 0;
+
 #if HAVE_PAPI
   /** Contains hardware data as read by PAPI **/
   int papi_event_set_;
   papi_counter_t papi_counter_data_;
 #endif
+
 public:
-  explicit ActorExt(simgrid::s4u::ActorPtr actor, simgrid::s4u::Barrier* barrier);
+  static simgrid::xbt::Extension<simgrid::s4u::Actor, ActorExt> EXTENSION_ID;
+
+  explicit ActorExt(s4u::Actor* actor);
+  ActorExt(const ActorExt&) = delete;
+  ActorExt& operator=(const ActorExt&) = delete;
   ~ActorExt();
-  void set_data(const char* instance_id);
   void finalize();
-  int finalized();
-  int initializing();
-  int initialized();
+  int finalized() const;
+  int initializing() const;
+  int initialized() const;
+  int finalizing() const;
   void mark_as_initialized();
+  void mark_as_finalizing();
   void set_replaying(bool value);
-  bool replaying();
+  bool replaying() const;
+  std::string get_instance_id() const { return instance_id_;}
+  void set_tracing_category(std::string_view category) { tracing_category_ = category; }
+  const std::string& get_tracing_category() const { return tracing_category_; }
   smpi_trace_call_location_t* call_location();
   void set_privatized_region(smpi_privatization_region_t region);
-  smpi_privatization_region_t privatized_region();
-  smx_mailbox_t mailbox();
-  smx_mailbox_t mailbox_small();
-  xbt_mutex_t mailboxes_mutex();
+  smpi_privatization_region_t privatized_region() const;
+  s4u::Mailbox* mailbox();
+  s4u::Mailbox* mailbox_small();
+  s4u::MutexPtr mailboxes_mutex() const;
 #if HAVE_PAPI
-  int papi_event_set();
+  int papi_event_set() const;
   papi_counter_t& papi_counters();
 #endif
   xbt_os_timer_t timer();
   void simulated_start();
-  double simulated_elapsed();
-  MPI_Comm comm_world();
+  double simulated_elapsed() const;
+  MPI_Comm comm_world() const;
+  bool comm_self_is_set() const { return (comm_self_ != MPI_COMM_NULL); };
   MPI_Comm comm_self();
   MPI_Comm comm_intra();
   void set_comm_intra(MPI_Comm comm);
   void set_sampling(int s);
-  int sampling();
+  int sampling() const;
   static void init();
-  simgrid::s4u::ActorPtr get_actor();
-  int get_optind();
+  s4u::ActorPtr get_actor();
+  int get_optind() const;
   void set_optind(int optind);
+  MPI_Info info_env();
+  void bsend_buffer(void** buf, int* size);
+  int set_bsend_buffer(void* buf, int size);
 };
 
-} // namespace smpi
-} // namespace simgrid
+} // namespace simgrid::smpi
 
 #endif