Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
s4u::Exec now has 2 child classes
[simgrid.git] / src / msg / msg_task.cpp
index 3695cc0..5809bdb 100644 (file)
@@ -67,6 +67,8 @@ msg_error_t Task::execute()
   xbt_assert(std::isfinite(flops_amount), "flops_amount is not finite!");
 
   msg_error_t status = MSG_OK;
+  if (flops_amount <= 0.0)
+    return MSG_OK;
 
   set_used();
   try {
@@ -278,7 +280,7 @@ void MSG_task_set_name(msg_task_t task, const char *name)
  */
 msg_error_t MSG_task_execute(msg_task_t task)
 {
-  return task->execute();
+  return task->is_parallel() ? MSG_parallel_task_execute(task) : task->execute();
 }
 /**
  * @brief Sends a task on a mailbox.
@@ -401,7 +403,10 @@ double MSG_task_get_remaining_work_ratio(msg_task_t task) {
   xbt_assert((task != nullptr), "Cannot get information from a nullptr task");
   if (task->compute) {
     // Task in progress
-    return task->compute->get_remaining_ratio();
+    if (task->is_parallel())
+      return task->compute->get_par_remaining_ratio();
+    else
+      return task->compute->get_seq_remaining_ratio();
   } else {
     // Task not started (flops_amount is > 0.0) or finished (flops_amount is set to 0.0)
     return task->flops_amount > 0.0 ? 1.0 : 0.0;