From 10d24bfbe5d413bdb49bf12b9655fc73203cd4f0 Mon Sep 17 00:00:00 2001 From: Martin Quinson Date: Sun, 5 Apr 2015 15:32:33 +0200 Subject: [PATCH] Interface cleanup Merge Task.getRemainingDuration() and Task.getComputeDuration() into Task.getFlopsAmount() in both C and Java (lua not done yet) --- ChangeLog | 10 ++++-- examples/java/cloud/migration/Daemon.java | 4 +-- examples/msg/cloud/bound.c | 8 ++--- examples/msg/cloud/multicore.c | 4 +-- examples/msg/cloud/two_tasks_vm.c | 2 +- examples/msg/tracing/ms.c | 2 +- include/simgrid/msg.h | 3 +- src/bindings/java/jmsg_task.c | 16 ++------- src/bindings/java/jmsg_task.h | 30 ++--------------- src/bindings/java/org/simgrid/msg/Task.java | 13 ++++---- src/bindings/lua/lua_task.c | 2 +- src/msg/msg_task.c | 33 ++++--------------- src/msg/msg_vm.c | 8 ++--- .../task_destroy_cancel/task_destroy_cancel.c | 2 +- 14 files changed, 41 insertions(+), 96 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5aa44d4ec1..4a7be35299 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,14 +3,18 @@ SimGrid (3.12) NOT RELEASED; urgency=low cMSG: * Interface improvement: - Rename MSG_host_is_avail(h) to MSG_host_is_on(h) - - Rename MSG_task_set_compute_duration(t) to MSG_task_set_flops_amount(t) - - Rename MSG_task_set_data_size(t) to MSG_task_set_bytes_amount(t) - Rename MSG_task_get_data_size(t) to MSG_task_get_bytes_amount(t) + - Sanitize the interface in MSG_task_ module: + - Merge two functions that were close enough but misleading: + set_compute_duration(t) -> set_flops_amount(t) + get_remaining_computation(t) -> set_flops_amount(t) + - set_data_size(t) -> set_bytes_amount(t) + get_data_size(t) -> get_bytes_amount(t) - Massive cleanups in the functions related to the energy jMSG: * Interface improvement: - Rename Host.isAvail() to Host.isOn() - Rename Process.currentProcess() to Process.getCurrentProcess() + - Merge Task.getRemainingDuration() and Task.getComputeDuration() into Task.getFlopsAmount() SIMIX: * New functions diff --git a/examples/java/cloud/migration/Daemon.java b/examples/java/cloud/migration/Daemon.java index 80cf2a8b55..68a31f3153 100644 --- a/examples/java/cloud/migration/Daemon.java +++ b/examples/java/cloud/migration/Daemon.java @@ -33,6 +33,6 @@ public class Daemon extends Process { } public double getRemaining(){ - return this.currentTask.getRemainingDuration(); - } + return this.currentTask.getFlopsAmount(); } +} diff --git a/examples/msg/cloud/bound.c b/examples/msg/cloud/bound.c index 1eba3d4203..d9c6adc689 100644 --- a/examples/msg/cloud/bound.c +++ b/examples/msg/cloud/bound.c @@ -92,8 +92,8 @@ static void test_dynamic_change(void) msg_process_t pr1 = MSG_process_create("worker1", worker_busy_loop_main, &task1, vm1); - double task0_remain_prev = MSG_task_get_remaining_computation(task0); - double task1_remain_prev = MSG_task_get_remaining_computation(task1); + double task0_remain_prev = MSG_task_get_flops_amount(task0); + double task1_remain_prev = MSG_task_get_flops_amount(task1); { const double cpu_speed = MSG_get_host_speed(pm0); @@ -104,8 +104,8 @@ static void test_dynamic_change(void) MSG_vm_set_bound(vm1, new_bound); MSG_process_sleep(100); - double task0_remain_now = MSG_task_get_remaining_computation(task0); - double task1_remain_now = MSG_task_get_remaining_computation(task1); + double task0_remain_now = MSG_task_get_flops_amount(task0); + double task1_remain_now = MSG_task_get_flops_amount(task1); double task0_flops_per_sec = task0_remain_prev - task0_remain_now; double task1_flops_per_sec = task1_remain_prev - task1_remain_now; diff --git a/examples/msg/cloud/multicore.c b/examples/msg/cloud/multicore.c index efdb5109db..8fb26bfb3b 100644 --- a/examples/msg/cloud/multicore.c +++ b/examples/msg/cloud/multicore.c @@ -37,14 +37,14 @@ struct task_data { static void task_data_init_clock(struct task_data *t) { - t->prev_computation_amount = MSG_task_get_remaining_computation(t->task); + t->prev_computation_amount = MSG_task_get_flops_amount(t->task); t->prev_clock = MSG_get_clock(); } static void task_data_get_clock(struct task_data *t) { - double now_computation_amount = MSG_task_get_remaining_computation(t->task); + double now_computation_amount = MSG_task_get_flops_amount(t->task); double now_clock = MSG_get_clock(); double done = t->prev_computation_amount - now_computation_amount; diff --git a/examples/msg/cloud/two_tasks_vm.c b/examples/msg/cloud/two_tasks_vm.c index 489c90ede6..a7d61c3647 100644 --- a/examples/msg/cloud/two_tasks_vm.c +++ b/examples/msg/cloud/two_tasks_vm.c @@ -71,7 +71,7 @@ static int master_main(int argc, char *argv[]) while(MSG_get_clock()<100) { if (atask != NULL) - XBT_INFO("aTask remaining duration: %g", MSG_task_get_remaining_computation(atask)); + XBT_INFO("aTask remaining duration: %g", MSG_task_get_flops_amount(atask)); MSG_process_sleep(1); } diff --git a/examples/msg/tracing/ms.c b/examples/msg/tracing/ms.c index 9d6e65402f..52a45c6dbc 100644 --- a/examples/msg/tracing/ms.c +++ b/examples/msg/tracing/ms.c @@ -88,7 +88,7 @@ int slave(int argc, char *argv[]) //to the variable "task_computation" TRACE_host_variable_add(MSG_host_get_name(MSG_host_self()), "task_computation", - MSG_task_get_compute_duration(task)); + MSG_task_get_flops_amount(task)); MSG_task_execute(task); MSG_task_destroy(task); task = NULL; diff --git a/include/simgrid/msg.h b/include/simgrid/msg.h index 264a16e66e..4193fd27d1 100644 --- a/include/simgrid/msg.h +++ b/include/simgrid/msg.h @@ -444,13 +444,12 @@ XBT_PUBLIC(void) MSG_task_set_affinity(msg_task_t task, msg_host_t host, unsigne XBT_PUBLIC(msg_error_t) MSG_process_join(msg_process_t process, double timeout); XBT_PUBLIC(msg_error_t) MSG_process_sleep(double nb_sec); -XBT_PUBLIC(double) MSG_task_get_compute_duration(msg_task_t task); XBT_PUBLIC(void) MSG_task_set_flops_amount(msg_task_t task, double flops_amount); +XBT_PUBLIC(double) MSG_task_get_flops_amount(msg_task_t task); XBT_PUBLIC(void) MSG_task_set_bytes_amount(msg_task_t task, double bytes_amount); -XBT_PUBLIC(double) MSG_task_get_remaining_computation(msg_task_t task); XBT_PUBLIC(double) MSG_task_get_remaining_communication(msg_task_t task); XBT_PUBLIC(int) MSG_task_is_latency_bounded(msg_task_t task); XBT_PUBLIC(double) MSG_task_get_bytes_amount(msg_task_t task); diff --git a/src/bindings/java/jmsg_task.c b/src/bindings/java/jmsg_task.c index 1a968d1973..319a5e17de 100644 --- a/src/bindings/java/jmsg_task.c +++ b/src/bindings/java/jmsg_task.c @@ -294,8 +294,7 @@ Java_org_simgrid_msg_Task_getSource(JNIEnv * env, } JNIEXPORT jdouble JNICALL -Java_org_simgrid_msg_Task_getComputeDuration(JNIEnv * env, - jobject jtask) +Java_org_simgrid_msg_Task_getFlopsAmount(JNIEnv * env, jobject jtask) { msg_task_t ptask = jtask_to_native_task(jtask, env); @@ -303,20 +302,9 @@ Java_org_simgrid_msg_Task_getComputeDuration(JNIEnv * env, jxbt_throw_notbound(env, "task", jtask); return -1; } - return (jdouble) MSG_task_get_compute_duration(ptask); + return (jdouble) MSG_task_get_flops_amount(ptask); } -JNIEXPORT jdouble JNICALL -Java_org_simgrid_msg_Task_getRemainingDuration(JNIEnv * env, jobject jtask) -{ - msg_task_t ptask = jtask_to_native_task(jtask, env); - - if (!ptask) { - jxbt_throw_notbound(env, "task", jtask); - return -1; - } - return (jdouble) MSG_task_get_remaining_computation(ptask); -} JNIEXPORT void JNICALL Java_org_simgrid_msg_Task_setName(JNIEnv *env, jobject jtask, jobject jname) { msg_task_t task = jtask_to_native_task(jtask, env); diff --git a/src/bindings/java/jmsg_task.h b/src/bindings/java/jmsg_task.h index c1c108edd5..b7c7036163 100644 --- a/src/bindings/java/jmsg_task.h +++ b/src/bindings/java/jmsg_task.h @@ -12,25 +12,6 @@ #include #include "simgrid/msg.h" -/** - * This function returns a global reference to the java task instance - * specified by the parameter jtask. - * - * @param jtask The original java task instance. - * @param env The environment of the current thread. - * - * @return The global reference to the original java task - * instance. - */ -/* jobject jtask_new_global_ref(jobject jtask, JNIEnv * env); */ - -/** - * This function delete a global reference to a java task instance. - * - * @param The global refernce to delete. - * @param env The environment of the current thread. - */ -/* void jtask_delete_global_ref(jobject jtask, JNIEnv * env); */ /** * This function associated a native task to a java task instance. @@ -156,19 +137,12 @@ JNIEXPORT jobject JNICALL Java_org_simgrid_msg_Task_getSource (JNIEnv *, jobject); /* * Class org_simgrid_msg_Task - * Method getComputeDuration + * Method getFlopsAmount * Signature ()D */ -JNIEXPORT jdouble JNICALL Java_org_simgrid_msg_Task_getComputeDuration +JNIEXPORT jdouble JNICALL Java_org_simgrid_msg_Task_getFlopsAmount (JNIEnv *, jobject); -/* - * Class org_simgrid_msg_Task - * Method getRemainingDuration - * Signature ()D - */ -JNIEXPORT jdouble JNICALL -Java_org_simgrid_msg_Task_getRemainingDuration(JNIEnv *, jobject); /** * Class org_simgrid_msg_Task * Method setName diff --git a/src/bindings/java/org/simgrid/msg/Task.java b/src/bindings/java/org/simgrid/msg/Task.java index a6adc84bd8..994d2306bf 100644 --- a/src/bindings/java/org/simgrid/msg/Task.java +++ b/src/bindings/java/org/simgrid/msg/Task.java @@ -123,13 +123,12 @@ public class Task { * Returns null if the task hasn't been sent yet. */ public native Host getSource(); - /** Gets the computing amount of the task - * FIXME: Cache it ! - */ - public native double getComputeDuration(); - /** Gets the remaining computation of the task - */ - public native double getRemainingDuration(); + + /** Gets the remaining amount of flops to execute in this task + * + * If it's ongoing, you get the exact amount at the present time. If it's already done, it's 0. + */ + public native double getFlopsAmount(); /** * Sets the name of the task * @param name the new task name.c diff --git a/src/bindings/lua/lua_task.c b/src/bindings/lua/lua_task.c index 41c744e334..38828dbad7 100644 --- a/src/bindings/lua/lua_task.c +++ b/src/bindings/lua/lua_task.c @@ -112,7 +112,7 @@ static int l_task_get_name(lua_State* L) static int l_task_get_computation_duration(lua_State* L) { msg_task_t task = sglua_check_task(L, 1); - lua_pushnumber(L, MSG_task_get_compute_duration(task)); + lua_pushnumber(L, MSG_task_get_flops_amount(task)); return 1; } diff --git a/src/msg/msg_task.c b/src/msg/msg_task.c index 5703d14dab..c6055c5916 100644 --- a/src/msg/msg_task.c +++ b/src/msg/msg_task.c @@ -311,17 +311,18 @@ msg_error_t MSG_task_cancel(msg_task_t task) } /** \ingroup m_task_management - * \brief Returns the computation amount needed to process a task #msg_task_t. + * \brief Returns the remaining 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. */ -double MSG_task_get_compute_duration(msg_task_t task) -{ - xbt_assert((task != NULL) - && (task->simdata != NULL), "Invalid parameter"); +double MSG_task_get_flops_amount(msg_task_t task) { - return task->simdata->flops_amount; + if (task->simdata->compute) { + return simcall_host_execution_get_remains(task->simdata->compute); + } else { + return task->simdata->flops_amount; + } } @@ -352,26 +353,6 @@ void MSG_task_set_bytes_amount(msg_task_t task, double data_size) } - -/** \ingroup m_task_management - * \brief Returns the remaining computation amount of a task #msg_task_t. - * - * If the task is ongoing, this call retrieves the remaining amount of work. - * If it is not ongoing, it returns the total amount of work that will be - * executed when the task starts. - */ -double MSG_task_get_remaining_computation(msg_task_t task) -{ - xbt_assert((task != NULL) - && (task->simdata != NULL), "Invalid parameter"); - - if (task->simdata->compute) { - return simcall_host_execution_get_remains(task->simdata->compute); - } else { - return task->simdata->flops_amount; - } -} - /** \ingroup m_task_management * \brief Returns the total amount received by a task #msg_task_t. * If the communication does not exist it will return 0. diff --git a/src/msg/msg_vm.c b/src/msg/msg_vm.c index c9e1f1f408..a2786ac778 100644 --- a/src/msg/msg_vm.c +++ b/src/msg/msg_vm.c @@ -453,7 +453,7 @@ static void reset_dirty_pages(msg_vm_t vm) xbt_dict_cursor_t cursor = NULL; dirty_page_t dp = NULL; xbt_dict_foreach(priv->dp_objs, cursor, key, dp) { - double remaining = MSG_task_get_remaining_computation(dp->task); + double remaining = MSG_task_get_flops_amount(dp->task); dp->prev_clock = MSG_get_clock(); dp->prev_remaining = remaining; @@ -514,7 +514,7 @@ static double lookup_computed_flop_counts(msg_vm_t vm, int stage_for_fancy_debug xbt_dict_cursor_t cursor = NULL; dirty_page_t dp = NULL; xbt_dict_foreach(priv->dp_objs, cursor, key, dp) { - double remaining = MSG_task_get_remaining_computation(dp->task); + double remaining = MSG_task_get_flops_amount(dp->task); double clock = MSG_get_clock(); @@ -545,7 +545,7 @@ static double lookup_computed_flop_counts(msg_vm_t vm, int stage_for_fancy_debug void MSG_host_add_task(msg_host_t host, msg_task_t task) { msg_host_priv_t priv = msg_host_resource_priv(host); - double remaining = MSG_task_get_remaining_computation(task); + double remaining = MSG_task_get_flops_amount(task); char *key = bprintf("%s-%p", task->name, task); dirty_page_t dp = xbt_new0(s_dirty_page, 1); @@ -577,7 +577,7 @@ void MSG_host_del_task(msg_host_t host, msg_task_t task) * computation has been done until now, and keep the information for the * lookup_() function that will called soon. */ if (priv->dp_enabled) { - double remaining = MSG_task_get_remaining_computation(task); + double remaining = MSG_task_get_flops_amount(task); double clock = MSG_get_clock(); // double updated = calc_updated_pages(key, host, dp, remaining, clock); double updated = get_computed(key, host, dp, remaining, clock); diff --git a/teshsuite/msg/task_destroy_cancel/task_destroy_cancel.c b/teshsuite/msg/task_destroy_cancel/task_destroy_cancel.c index 04cecd006e..0ba661d7b1 100644 --- a/teshsuite/msg/task_destroy_cancel/task_destroy_cancel.c +++ b/teshsuite/msg/task_destroy_cancel/task_destroy_cancel.c @@ -126,7 +126,7 @@ int slave(int argc, char *argv[]) XBT_INFO("Task \"%s\" done in %f (amount %f)" , MSG_task_get_name(task) , end - start - , MSG_task_get_remaining_computation(task)); + , MSG_task_get_flops_amount(task)); MSG_task_destroy(task); task = NULL; -- 2.20.1