From cb84a76be885b5d00ebaa29b56df7c5d6fb1df24 Mon Sep 17 00:00:00 2001 From: Frederic Suter Date: Mon, 25 Feb 2019 14:16:57 +0100 Subject: [PATCH] objectify simdata_task_t --- include/simgrid/msg.h | 5 +++-- src/msg/msg_gos.cpp | 1 + src/msg/msg_private.hpp | 38 ++++++++++++-------------------------- src/msg/msg_task.cpp | 29 ++++++++++++++++++++++------- 4 files changed, 38 insertions(+), 35 deletions(-) diff --git a/include/simgrid/msg.h b/include/simgrid/msg.h index 1014114523..efaba4ec5a 100644 --- a/include/simgrid/msg.h +++ b/include/simgrid/msg.h @@ -33,11 +33,14 @@ namespace simgrid { namespace msg { class Comm; +class Task; } } typedef simgrid::msg::Comm sg_msg_Comm; +typedef simgrid::msg::Task* simdata_task_t; #else typedef struct msg_Comm sg_msg_Comm; +typedef struct msg_Task* simdata_task_t; #endif #ifdef __cplusplus @@ -236,8 +239,6 @@ typedef sg_msg_Comm* msg_comm_t; /* ******************************** 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 */ diff --git a/src/msg/msg_gos.cpp b/src/msg/msg_gos.cpp index c173b4b8d2..1ca2db5e9d 100644 --- a/src/msg/msg_gos.cpp +++ b/src/msg/msg_gos.cpp @@ -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!"); + xbt_assert(std::isfinite(simdata->priority), "priority is not finite!"); simdata->compute->start(simdata->flops_amount, simdata->priority, simdata->bound); } diff --git a/src/msg/msg_private.hpp b/src/msg/msg_private.hpp index 080bf02ef1..847d59525c 100644 --- a/src/msg/msg_private.hpp +++ b/src/msg/msg_private.hpp @@ -12,23 +12,19 @@ #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; } - 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 bytes_amount = 0.0; /* Data size */ msg_process_t sender = nullptr; msg_process_t receiver = nullptr; @@ -47,11 +43,6 @@ private: void report_multiple_use() const; }; -/******************************* Process *************************************/ - -namespace simgrid { -namespace msg { - 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 { @@ -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); -inline void s_simdata_task_t::set_used() -{ - if (this->is_used) - this->report_multiple_use(); - this->is_used = true; -} #endif diff --git a/src/msg/msg_task.cpp b/src/msg/msg_task.cpp index 42ec522c5a..7eb541ae33 100644 --- a/src/msg/msg_task.cpp +++ b/src/msg/msg_task.cpp @@ -12,7 +12,24 @@ 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:"); @@ -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)"); } } +} // namespace msg +} // namespace simgrid /********************************* 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; - 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; - /* Simulator Data */ - simdata->bytes_amount = message_size; - simdata->flops_amount = flop_amount; - task->counter = counter++; task->category = nullptr; -- 2.20.1