A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge pull request #193 from Takishipp/signals
[simgrid.git]
/
examples
/
simdag
/
scheduling
/
sd_scheduling.c
diff --git
a/examples/simdag/scheduling/sd_scheduling.c
b/examples/simdag/scheduling/sd_scheduling.c
index
eca4354
..
bb53f2b
100644
(file)
--- a/
examples/simdag/scheduling/sd_scheduling.c
+++ b/
examples/simdag/scheduling/sd_scheduling.c
@@
-8,7
+8,7
@@
#include <string.h>
#include "simgrid/simdag.h"
#include <string.h>
#include "simgrid/simdag.h"
-#if HAVE_JEDULE
+#if
SIMGRID_
HAVE_JEDULE
#include "simgrid/jedule/jedule_sd_binding.h"
#endif
#include "simgrid/jedule/jedule_sd_binding.h"
#endif
@@
-65,14
+65,14
@@
static xbt_dynar_t get_ready_tasks(xbt_dynar_t dax)
static double finish_on_at(SD_task_t task, sg_host_t host)
{
double result;
static double finish_on_at(SD_task_t task, sg_host_t host)
{
double result;
- unsigned int i;
- double data_available = 0.;
- double redist_time = 0;
- double last_data_available;
xbt_dynar_t parents = SD_task_get_parents(task);
if (!xbt_dynar_is_empty(parents)) {
xbt_dynar_t parents = SD_task_get_parents(task);
if (!xbt_dynar_is_empty(parents)) {
+ unsigned int i;
+ double data_available = 0.;
+ double redist_time = 0;
+ double last_data_available;
/* compute last_data_available */
SD_task_t parent;
last_data_available = -1.0;
/* compute last_data_available */
SD_task_t parent;
last_data_available = -1.0;
@@
-84,8
+84,8
@@
static double finish_on_at(SD_task_t task, sg_host_t host)
if (SD_task_get_amount(parent) <= 1e-6){
redist_time= 0;
} else {
if (SD_task_get_amount(parent) <= 1e-6){
redist_time= 0;
} else {
- redist_time =
SD_route_get
_latency(parent_host[0], host) +
- SD_task_get_amount(parent) /
SD_route_get
_bandwidth(parent_host[0], host);
+ redist_time =
sg_host_route
_latency(parent_host[0], host) +
+ SD_task_get_amount(parent) /
sg_host_route
_bandwidth(parent_host[0], host);
}
data_available = SD_task_get_start_time(parent) + redist_time;
}
}
data_available = SD_task_get_start_time(parent) + redist_time;
}
@@
-134,7
+134,8
@@
int main(int argc, char **argv)
{
unsigned int cursor;
double min_finish_time = -1.0;
{
unsigned int cursor;
double min_finish_time = -1.0;
- SD_task_t task, selected_task = NULL;
+ SD_task_t task;
+ SD_task_t selected_task = NULL;
xbt_dynar_t ready_tasks;
sg_host_t selected_host = NULL;
char * tracefilename = NULL;
xbt_dynar_t ready_tasks;
sg_host_t selected_host = NULL;
char * tracefilename = NULL;
@@
-170,13
+171,18
@@
int main(int argc, char **argv)
xbt_dynar_get_cpy(dax, 0, &task);
sg_host_t host = SD_task_get_best_host(task);
SD_task_schedulel(task, 1, host);
xbt_dynar_get_cpy(dax, 0, &task);
sg_host_t host = SD_task_get_best_host(task);
SD_task_schedulel(task, 1, host);
+ xbt_dynar_t changed_tasks = xbt_dynar_new(sizeof(SD_task_t), NULL);
+ SD_simulate_with_update(-1.0, changed_tasks);
- while (!xbt_dynar_is_empty(
SD_simulate(-1.0)
)) {
+ while (!xbt_dynar_is_empty(
changed_tasks
)) {
/* Get the set of ready tasks */
ready_tasks = get_ready_tasks(dax);
/* Get the set of ready tasks */
ready_tasks = get_ready_tasks(dax);
+ xbt_dynar_reset(changed_tasks);
+
if (xbt_dynar_is_empty(ready_tasks)) {
xbt_dynar_free_container(&ready_tasks);
/* there is no ready task, let advance the simulation */
if (xbt_dynar_is_empty(ready_tasks)) {
xbt_dynar_free_container(&ready_tasks);
/* there is no ready task, let advance the simulation */
+ SD_simulate_with_update(-1.0, changed_tasks);
continue;
}
/* For each ready task:
continue;
}
/* For each ready task:
@@
-218,17
+224,20
@@
int main(int argc, char **argv)
xbt_dynar_free_container(&ready_tasks);
/* reset the min_finish_time for the next set of ready tasks */
min_finish_time = -1.;
xbt_dynar_free_container(&ready_tasks);
/* reset the min_finish_time for the next set of ready tasks */
min_finish_time = -1.;
+ xbt_dynar_reset(changed_tasks);
+ SD_simulate_with_update(-1.0, changed_tasks);
}
XBT_INFO("Simulation Time: %f", SD_get_clock());
XBT_INFO("------------------- Produce the trace file---------------------------");
XBT_INFO("Producing a jedule output (if active) of the run into %s", tracefilename?tracefilename:"minmin_test.jed");
}
XBT_INFO("Simulation Time: %f", SD_get_clock());
XBT_INFO("------------------- Produce the trace file---------------------------");
XBT_INFO("Producing a jedule output (if active) of the run into %s", tracefilename?tracefilename:"minmin_test.jed");
-#if HAVE_JEDULE
+#if
SIMGRID_
HAVE_JEDULE
jedule_sd_dump(tracefilename);
#endif
free(tracefilename);
xbt_dynar_free_container(&ready_tasks);
jedule_sd_dump(tracefilename);
#endif
free(tracefilename);
xbt_dynar_free_container(&ready_tasks);
+ xbt_dynar_free(&changed_tasks);
xbt_dynar_foreach(dax, cursor, task) {
SD_task_destroy(task);
xbt_dynar_foreach(dax, cursor, task) {
SD_task_destroy(task);
@@
-241,7
+250,5
@@
int main(int argc, char **argv)
}
xbt_free(hosts);
}
xbt_free(hosts);
- /* exit */
- SD_exit();
return 0;
}
return 0;
}