// Run a task
start = MSG_get_clock();
msg_task_t task1 = MSG_task_create("t1", 100E6, 0, NULL);
- XBT_INFO("Run a task of %.0E flops", MSG_task_get_flops_amount(task1));
+ XBT_INFO("Run a task of %.0E flops", MSG_task_get_initial_flops_amount(task1));
MSG_task_execute(task1);
MSG_task_destroy(task1);
// Run a second task
start = MSG_get_clock();
task1 = MSG_task_create("t2", 100E6, 0, NULL);
- XBT_INFO("Run a task of %.0E flops", MSG_task_get_flops_amount(task1));
+ XBT_INFO("Run a task of %.0E flops", MSG_task_get_initial_flops_amount(task1));
MSG_task_execute(task1);
MSG_task_destroy(task1);
XBT_INFO("Done working on my task; this took %.2fs; current peak speed: %.0E flop/s; number of flops computed so "
XBT_PUBLIC(msg_error_t) MSG_process_sleep(double nb_sec);
XBT_PUBLIC(void) MSG_task_set_flops_amount(msg_task_t task, double flops_amount);
+/* Unable to compile that without -Werror=deprecated-declarations
+XBT_ATTRIB_DEPRECATED_v321( "Use MSG_task_get_initial_flops_amount if you want to get initial amounts of flops, or "
+ "Use MSG_task_get_remaining_work_ratio to get task progress (in order "
+ "to compute progress in flops)") static inline double MSG_task_get_flops_amount(msg_task_t task)
+{
+ return MSG_task_get_flops_amount(task);
+}
+*/
+
XBT_PUBLIC(double) MSG_task_get_flops_amount(msg_task_t task);
+XBT_PUBLIC(double) MSG_task_get_initial_flops_amount(msg_task_t task);
XBT_PUBLIC(double) MSG_task_get_remaining_work_ratio(msg_task_t task);
XBT_PUBLIC(void) MSG_task_set_bytes_amount(msg_task_t task, double bytes_amount);
}
}
+double MSG_task_get_flops_amount(msg_task_t task) {
+ if (task->simdata->compute) {
+ return task->simdata->compute->remains();
+ } else {
+ return task->simdata->flops_amount;
+ }
+}
+
/** \ingroup m_task_management
* \brief Returns the initial amount of flops needed to execute a task #msg_task_t.
*
* Once a task has been processed, this amount is set to 0. If you want, you can reset this value with
* #MSG_task_set_flops_amount before restarting the task.
+ *
+ * Warning: Only work for simple task, not parallel task.
*/
-double MSG_task_get_flops_amount(msg_task_t task) {
+double MSG_task_get_initial_flops_amount(msg_task_t task) {
return task->simdata->flops_amount;
}
for (auto const& elm : vm->pimpl_vm_->dp_objs) {
dirty_page_t dp = elm.second;
- double remaining = MSG_task_get_flops_amount(dp->task);
+ double remaining = MSG_task_get_remaining_work_ratio(dp->task);
dp->prev_clock = MSG_get_clock();
dp->prev_remaining = remaining;
XBT_DEBUG("%s@%s remaining %f", elm.first.c_str(), vm->getCname(), remaining);
progress_prev = progress;
}
}
+ return 0;
}
int main(int argc, char *argv[])