Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
namespacing cleanups
[simgrid.git] / include / simgrid / smpi / replay.hpp
index 91f8943..d295586 100644 (file)
 
 #define CHECK_ACTION_PARAMS(action, mandatory, optional)                                                               \
   {                                                                                                                    \
-    if (action.size() < static_cast<unsigned long>(mandatory + 2)) {                                                   \
+    if ((action).size() < static_cast<unsigned long>((mandatory) + 2)) {                                               \
       std::stringstream ss;                                                                                            \
       ss << __func__ << " replay failed.\n"                                                                            \
-         << action.size() << " items were given on the line. First two should be process_id and action.  "             \
-         << "This action needs after them " << mandatory << " mandatory arguments, and accepts " << optional           \
+         << (action).size() << " items were given on the line. First two should be process_id and action.  "           \
+         << "This action needs after them " << (mandatory) << " mandatory arguments, and accepts " << (optional)       \
          << " optional ones. \n"                                                                                       \
          << "The full line that was given is:\n   ";                                                                   \
-      for (const auto& elem : action) {                                                                                \
+      for (const auto& elem : (action)) {                                                                              \
         ss << elem << " ";                                                                                             \
       }                                                                                                                \
       ss << "\nPlease contact the Simgrid team if support is needed";                                                  \
@@ -31,8 +31,8 @@
     }                                                                                                                  \
   }
 
-XBT_PRIVATE void* smpi_get_tmp_sendbuffer(int size);
-XBT_PRIVATE void* smpi_get_tmp_recvbuffer(int size);
+XBT_PRIVATE unsigned char* smpi_get_tmp_sendbuffer(size_t size);
+XBT_PRIVATE unsigned char* smpi_get_tmp_recvbuffer(size_t size);
 
 XBT_PRIVATE void log_timed_action(simgrid::xbt::ReplayAction& action, double clock);
 
@@ -49,7 +49,7 @@ class RequestStorage; // Forward decl
 class ActionArgParser {
 public:
   virtual ~ActionArgParser() = default;
-  virtual void parse(simgrid::xbt::ReplayAction& action, const std::string& name) { CHECK_ACTION_PARAMS(action, 0, 0) }
+  virtual void parse(xbt::ReplayAction& action, const std::string& name) { CHECK_ACTION_PARAMS(action, 0, 0) }
 };
 
 class WaitTestParser : public ActionArgParser {
@@ -58,7 +58,7 @@ public:
   int dst;
   int tag;
 
-  void parse(simgrid::xbt::ReplayAction& action, const std::string& name) override;
+  void parse(xbt::ReplayAction& action, const std::string& name) override;
 };
 
 class SendRecvParser : public ActionArgParser {
@@ -69,15 +69,29 @@ public:
   int tag;
   MPI_Datatype datatype1 = MPI_DEFAULT_TYPE;
 
-  void parse(simgrid::xbt::ReplayAction& action, const std::string& name) override;
+  void parse(xbt::ReplayAction& action, const std::string& name) override;
 };
 
 class ComputeParser : public ActionArgParser {
 public:
-  /* communication partner; if we send, this is the receiver and vice versa */
   double flops;
 
-  void parse(simgrid::xbt::ReplayAction& action, const std::string& name) override;
+  void parse(xbt::ReplayAction& action, const std::string& name) override;
+};
+
+class SleepParser : public ActionArgParser {
+public:
+  double time;
+
+  void parse(xbt::ReplayAction& action, const std::string& name) override;
+};
+
+class LocationParser : public ActionArgParser {
+public:
+  std::string filename;
+  int line;
+
+  void parse(xbt::ReplayAction& action, const std::string& name) override;
 };
 
 class CollCommParser : public ActionArgParser {
@@ -94,27 +108,27 @@ public:
 
 class BcastArgParser : public CollCommParser {
 public:
-  void parse(simgrid::xbt::ReplayAction& action, const std::string& name) override;
+  void parse(xbt::ReplayAction& action, const std::string& name) override;
 };
 
 class ReduceArgParser : public CollCommParser {
 public:
-  void parse(simgrid::xbt::ReplayAction& action, const std::string& name) override;
+  void parse(xbt::ReplayAction& action, const std::string& name) override;
 };
 
 class AllReduceArgParser : public CollCommParser {
 public:
-  void parse(simgrid::xbt::ReplayAction& action, const std::string& name) override;
+  void parse(xbt::ReplayAction& action, const std::string& name) override;
 };
 
 class AllToAllArgParser : public CollCommParser {
 public:
-  void parse(simgrid::xbt::ReplayAction& action, const std::string& name) override;
+  void parse(xbt::ReplayAction& action, const std::string& name) override;
 };
 
 class GatherArgParser : public CollCommParser {
 public:
-  void parse(simgrid::xbt::ReplayAction& action, const std::string& name) override;
+  void parse(xbt::ReplayAction& action, const std::string& name) override;
 };
 
 class GatherVArgParser : public CollCommParser {
@@ -122,12 +136,12 @@ public:
   int recv_size_sum;
   std::shared_ptr<std::vector<int>> recvcounts;
   std::vector<int> disps;
-  void parse(simgrid::xbt::ReplayAction& action, const std::string& name) override;
+  void parse(xbt::ReplayAction& action, const std::string& name) override;
 };
 
 class ScatterArgParser : public CollCommParser {
 public:
-  void parse(simgrid::xbt::ReplayAction& action, const std::string& name) override;
+  void parse(xbt::ReplayAction& action, const std::string& name) override;
 };
 
 class ScatterVArgParser : public CollCommParser {
@@ -136,7 +150,7 @@ public:
   int send_size_sum;
   std::shared_ptr<std::vector<int>> sendcounts;
   std::vector<int> disps;
-  void parse(simgrid::xbt::ReplayAction& action, const std::string& name) override;
+  void parse(xbt::ReplayAction& action, const std::string& name) override;
 };
 
 class ReduceScatterArgParser : public CollCommParser {
@@ -144,7 +158,7 @@ public:
   int recv_size_sum;
   std::shared_ptr<std::vector<int>> recvcounts;
   std::vector<int> disps;
-  void parse(simgrid::xbt::ReplayAction& action, const std::string& name) override;
+  void parse(xbt::ReplayAction& action, const std::string& name) override;
 };
 
 class AllToAllVArgParser : public CollCommParser {
@@ -157,7 +171,7 @@ public:
   std::vector<int> recvdisps;
   int send_buf_size;
   int recv_buf_size;
-  void parse(simgrid::xbt::ReplayAction& action, const std::string& name) override;
+  void parse(xbt::ReplayAction& action, const std::string& name) override;
 };
 
 /**
@@ -173,10 +187,10 @@ protected:
   T args;
 
 public:
-  explicit ReplayAction(const std::string& name) : name(name), my_proc_id(simgrid::s4u::this_actor::get_pid()) {}
+  explicit ReplayAction(const std::string& name) : name(name), my_proc_id(s4u::this_actor::get_pid()) {}
   virtual ~ReplayAction() = default;
 
-  void execute(simgrid::xbt::ReplayAction& action)
+  void execute(xbt::ReplayAction& action)
   {
     // Needs to be re-initialized for every action, hence here
     double start_time = smpi_process()->simulated_elapsed();
@@ -187,41 +201,50 @@ public:
   }
 
   virtual void kernel(simgrid::xbt::ReplayAction& action) = 0;
-  void* send_buffer(int size) { return smpi_get_tmp_sendbuffer(size); }
-  void* recv_buffer(int size) { return smpi_get_tmp_recvbuffer(size); }
+  unsigned char* send_buffer(int size) { return smpi_get_tmp_sendbuffer(size); }
+  unsigned char* recv_buffer(int size) { return smpi_get_tmp_recvbuffer(size); }
 };
 
 class WaitAction : public ReplayAction<WaitTestParser> {
-private:
   RequestStorage& req_storage;
 
 public:
   explicit WaitAction(RequestStorage& storage) : ReplayAction("Wait"), req_storage(storage) {}
-  void kernel(simgrid::xbt::ReplayAction& action) override;
+  void kernel(xbt::ReplayAction& action) override;
 };
 
 class SendAction : public ReplayAction<SendRecvParser> {
-private:
   RequestStorage& req_storage;
 
 public:
   explicit SendAction(const std::string& name, RequestStorage& storage) : ReplayAction(name), req_storage(storage) {}
-  void kernel(simgrid::xbt::ReplayAction& action) override;
+  void kernel(xbt::ReplayAction& action) override;
 };
 
 class RecvAction : public ReplayAction<SendRecvParser> {
-private:
   RequestStorage& req_storage;
 
 public:
   explicit RecvAction(const std::string& name, RequestStorage& storage) : ReplayAction(name), req_storage(storage) {}
-  void kernel(simgrid::xbt::ReplayAction& action) override;
+  void kernel(xbt::ReplayAction& action) override;
 };
 
 class ComputeAction : public ReplayAction<ComputeParser> {
 public:
   explicit ComputeAction() : ReplayAction("compute") {}
-  void kernel(simgrid::xbt::ReplayAction& action) override;
+  void kernel(xbt::ReplayAction& action) override;
+};
+
+class SleepAction : public ReplayAction<SleepParser> {
+public:
+  explicit SleepAction() : ReplayAction("sleep") {}
+  void kernel(xbt::ReplayAction& action) override;
+};
+
+class LocationAction : public ReplayAction<LocationParser> {
+public:
+  explicit LocationAction() : ReplayAction("location") {}
+  void kernel(xbt::ReplayAction& action) override;
 };
 
 class TestAction : public ReplayAction<WaitTestParser> {
@@ -230,97 +253,97 @@ private:
 
 public:
   explicit TestAction(RequestStorage& storage) : ReplayAction("Test"), req_storage(storage) {}
-  void kernel(simgrid::xbt::ReplayAction& action) override;
+  void kernel(xbt::ReplayAction& action) override;
 };
 
 class InitAction : public ReplayAction<ActionArgParser> {
 public:
   explicit InitAction() : ReplayAction("Init") {}
-  void kernel(simgrid::xbt::ReplayAction& action) override;
+  void kernel(xbt::ReplayAction& action) override;
 };
 
 class CommunicatorAction : public ReplayAction<ActionArgParser> {
 public:
   explicit CommunicatorAction() : ReplayAction("Comm") {}
-  void kernel(simgrid::xbt::ReplayAction& action) override;
+  void kernel(xbt::ReplayAction& action) override;
 };
 
 class WaitAllAction : public ReplayAction<ActionArgParser> {
-private:
   RequestStorage& req_storage;
 
 public:
   explicit WaitAllAction(RequestStorage& storage) : ReplayAction("waitall"), req_storage(storage) {}
-  void kernel(simgrid::xbt::ReplayAction& action) override;
+  void kernel(xbt::ReplayAction& action) override;
 };
 
 class BarrierAction : public ReplayAction<ActionArgParser> {
 public:
   explicit BarrierAction() : ReplayAction("barrier") {}
-  void kernel(simgrid::xbt::ReplayAction& action) override;
+  void kernel(xbt::ReplayAction& action) override;
 };
 
 class BcastAction : public ReplayAction<BcastArgParser> {
 public:
   explicit BcastAction() : ReplayAction("bcast") {}
-  void kernel(simgrid::xbt::ReplayAction& action) override;
+  void kernel(xbt::ReplayAction& action) override;
 };
 
 class ReduceAction : public ReplayAction<ReduceArgParser> {
 public:
   explicit ReduceAction() : ReplayAction("reduce") {}
-  void kernel(simgrid::xbt::ReplayAction& action) override;
+  void kernel(xbt::ReplayAction& action) override;
 };
 
 class AllReduceAction : public ReplayAction<AllReduceArgParser> {
 public:
   explicit AllReduceAction() : ReplayAction("allreduce") {}
-  void kernel(simgrid::xbt::ReplayAction& action) override;
+  void kernel(xbt::ReplayAction& action) override;
 };
 
 class AllToAllAction : public ReplayAction<AllToAllArgParser> {
 public:
   explicit AllToAllAction() : ReplayAction("alltoall") {}
-  void kernel(simgrid::xbt::ReplayAction& action) override;
+  void kernel(xbt::ReplayAction& action) override;
 };
 
 class GatherAction : public ReplayAction<GatherArgParser> {
 public:
   explicit GatherAction(const std::string& name) : ReplayAction(name) {}
-  void kernel(simgrid::xbt::ReplayAction& action) override;
+  void kernel(xbt::ReplayAction& action) override;
 };
 
 class GatherVAction : public ReplayAction<GatherVArgParser> {
 public:
   explicit GatherVAction(const std::string& name) : ReplayAction(name) {}
-  void kernel(simgrid::xbt::ReplayAction& action) override;
+  void kernel(xbt::ReplayAction& action) override;
 };
 
 class ScatterAction : public ReplayAction<ScatterArgParser> {
 public:
   explicit ScatterAction() : ReplayAction("scatter") {}
-  void kernel(simgrid::xbt::ReplayAction& action) override;
+  void kernel(xbt::ReplayAction& action) override;
 };
 
 class ScatterVAction : public ReplayAction<ScatterVArgParser> {
 public:
   explicit ScatterVAction() : ReplayAction("scatterv") {}
-  void kernel(simgrid::xbt::ReplayAction& action) override;
+  void kernel(xbt::ReplayAction& action) override;
 };
 
 class ReduceScatterAction : public ReplayAction<ReduceScatterArgParser> {
 public:
   explicit ReduceScatterAction() : ReplayAction("reducescatter") {}
-  void kernel(simgrid::xbt::ReplayAction& action) override;
+  void kernel(xbt::ReplayAction& action) override;
 };
 
 class AllToAllVAction : public ReplayAction<AllToAllVArgParser> {
 public:
   explicit AllToAllVAction() : ReplayAction("alltoallv") {}
-  void kernel(simgrid::xbt::ReplayAction& action) override;
+  void kernel(xbt::ReplayAction& action) override;
 };
-}
-}
-}
+
+} // namespace replay
+} // namespace smpi
+} // namespace simgrid
 
 #endif