Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
objectify simdata_task_t
authorFrederic Suter <frederic.suter@cc.in2p3.fr>
Mon, 25 Feb 2019 13:16:57 +0000 (14:16 +0100)
committerFrederic Suter <frederic.suter@cc.in2p3.fr>
Mon, 25 Feb 2019 13:16:57 +0000 (14:16 +0100)
include/simgrid/msg.h
src/msg/msg_gos.cpp
src/msg/msg_private.hpp
src/msg/msg_task.cpp

index 1014114..efaba4e 100644 (file)
 namespace simgrid {
 namespace msg {
 class Comm;
 namespace simgrid {
 namespace msg {
 class Comm;
+class Task;
 }
 }
 typedef simgrid::msg::Comm sg_msg_Comm;
 }
 }
 typedef simgrid::msg::Comm sg_msg_Comm;
+typedef simgrid::msg::Task* simdata_task_t;
 #else
 typedef struct msg_Comm sg_msg_Comm;
 #else
 typedef struct msg_Comm sg_msg_Comm;
+typedef struct msg_Task* simdata_task_t;
 #endif
 
 #ifdef __cplusplus
 #endif
 
 #ifdef __cplusplus
@@ -236,8 +239,6 @@ typedef sg_msg_Comm* msg_comm_t;
 
 /* ******************************** Task ************************************ */
 
 
 /* ******************************** Task ************************************ */
 
-typedef struct s_simdata_task_t* simdata_task_t;
-
 typedef struct msg_task {
   char* name;             /**< @brief task name if any */
   simdata_task_t simdata; /**< @brief simulator data */
 typedef struct msg_task {
   char* name;             /**< @brief task name if any */
   simdata_task_t simdata; /**< @brief simulator data */
index c173b4b..1ca2db5 100644 (file)
@@ -77,6 +77,7 @@ msg_error_t MSG_parallel_task_execute_with_timeout(msg_task_t task, double timeo
       });
       /* checking for infinite values */
       xbt_assert(std::isfinite(simdata->flops_amount), "flops_amount is not finite!");
       });
       /* checking for infinite values */
       xbt_assert(std::isfinite(simdata->flops_amount), "flops_amount is not finite!");
+      xbt_assert(std::isfinite(simdata->priority), "priority is not finite!");
 
       simdata->compute->start(simdata->flops_amount, simdata->priority, simdata->bound);
     }
 
       simdata->compute->start(simdata->flops_amount, simdata->priority, simdata->bound);
     }
index 080bf02..847d595 100644 (file)
 #include "src/kernel/activity/ExecImpl.hpp"
 
 /**************** datatypes **********************************/
 #include "src/kernel/activity/ExecImpl.hpp"
 
 /**************** datatypes **********************************/
-/********************************* Task **************************************/
-
-struct s_simdata_task_t {
-  ~s_simdata_task_t()
-  {
-    /* parallel tasks only */
-    delete[] host_list;
-    delete[] flops_parallel_amount;
-    delete[] bytes_parallel_amount;
-  }
+namespace simgrid {
+namespace msg {
+class Task {
+public:
+  ~Task();
+  explicit Task(double flops_amount, double bytes_amount) : flops_amount(flops_amount), bytes_amount(bytes_amount) {}
   void set_used();
   void set_not_used() { this->is_used = false; }
 
   void set_used();
   void set_not_used() { this->is_used = false; }
 
-  simgrid::kernel::activity::ExecImplPtr compute = nullptr; /* SIMIX modeling of computation */
-  simgrid::s4u::CommPtr comm                     = nullptr; /* S4U modeling of communication */
-  double bytes_amount                            = 0.0;     /* Data size */
+  kernel::activity::ExecImplPtr compute          = nullptr; /* SIMIX modeling of computation */
+  s4u::CommPtr comm                              = nullptr; /* S4U modeling of communication */
   double flops_amount                            = 0.0;     /* Computation size */
   double flops_amount                            = 0.0;     /* Computation size */
+  double bytes_amount                            = 0.0;     /* Data size */
   msg_process_t sender                           = nullptr;
   msg_process_t receiver                         = nullptr;
 
   msg_process_t sender                           = nullptr;
   msg_process_t receiver                         = nullptr;
 
@@ -47,11 +43,6 @@ private:
   void report_multiple_use() const;
 };
 
   void report_multiple_use() const;
 };
 
-/******************************* Process *************************************/
-
-namespace simgrid {
-namespace msg {
-
 class Comm {
 public:
   msg_task_t task_sent;        /* task sent (NULL for the receiver) */
 class Comm {
 public:
   msg_task_t task_sent;        /* task sent (NULL for the receiver) */
@@ -63,8 +54,9 @@ public:
   {
   }
 };
   {
   }
 };
-}
-}
+
+} // namespace msg
+} // namespace simgrid
 
 /************************** Global variables ********************************/
 struct s_MSG_Global_t {
 
 /************************** Global variables ********************************/
 struct s_MSG_Global_t {
@@ -84,11 +76,5 @@ XBT_PRIVATE void MSG_comm_copy_data_from_SIMIX(simgrid::kernel::activity::CommIm
 /* declaration of instrumentation functions from msg_task_instr.c */
 XBT_PRIVATE void TRACE_msg_task_put_start(msg_task_t task);
 
 /* declaration of instrumentation functions from msg_task_instr.c */
 XBT_PRIVATE void TRACE_msg_task_put_start(msg_task_t task);
 
-inline void s_simdata_task_t::set_used()
-{
-  if (this->is_used)
-    this->report_multiple_use();
-  this->is_used = true;
-}
 
 #endif
 
 #endif
index 42ec522..7eb541a 100644 (file)
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(msg_task, msg, "Logging specific to MSG (task)");
 
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(msg_task, msg, "Logging specific to MSG (task)");
 
-void s_simdata_task_t::report_multiple_use() const
+namespace simgrid {
+namespace msg {
+Task::~Task()
+{
+  /* parallel tasks only */
+  delete[] host_list;
+  delete[] flops_parallel_amount;
+  delete[] bytes_parallel_amount;
+}
+
+void Task::set_used()
+{
+  if (this->is_used)
+    this->report_multiple_use();
+  this->is_used = true;
+}
+
+void Task::report_multiple_use() const
 {
   if (msg_global->debug_multiple_use){
     XBT_ERROR("This task is already used in there:");
 {
   if (msg_global->debug_multiple_use){
     XBT_ERROR("This task is already used in there:");
@@ -25,6 +42,8 @@ void s_simdata_task_t::report_multiple_use() const
              "(use --cfg=msg/debug-multiple-use:on to get the backtrace of the other process)");
   }
 }
              "(use --cfg=msg/debug-multiple-use:on to get the backtrace of the other process)");
   }
 }
+} // namespace msg
+} // namespace simgrid
 
 /********************************* Task **************************************/
 /** @brief Creates a new task
 
 /********************************* Task **************************************/
 /** @brief Creates a new task
@@ -45,17 +64,13 @@ msg_task_t MSG_task_create(const char *name, double flop_amount, double message_
   static std::atomic_ullong counter{0};
 
   msg_task_t task        = new s_msg_task_t;
   static std::atomic_ullong counter{0};
 
   msg_task_t task        = new s_msg_task_t;
-  simdata_task_t simdata = new s_simdata_task_t();
-  task->simdata = simdata;
+  /* Simulator Data */
+  task->simdata = new simgrid::msg::Task(flop_amount, message_size);
 
   /* Task structure */
   task->name = xbt_strdup(name);
   task->data = data;
 
 
   /* Task structure */
   task->name = xbt_strdup(name);
   task->data = data;
 
-  /* Simulator Data */
-  simdata->bytes_amount = message_size;
-  simdata->flops_amount = flop_amount;
-
   task->counter  = counter++;
   task->category = nullptr;
 
   task->counter  = counter++;
   task->category = nullptr;