X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/dff9e15c44ab6340d27215957c56fa72fad246a2..9a8ce506851427358a58031d014dc51b353e4baa:/examples/simdag/sd_test.c diff --git a/examples/simdag/sd_test.c b/examples/simdag/sd_test.c index 9d70ef8eb4..d2887908c3 100644 --- a/examples/simdag/sd_test.c +++ b/examples/simdag/sd_test.c @@ -1,3 +1,9 @@ +/* Copyright (c) 2006, 2007, 2008, 2009, 2010. The SimGrid Team. + * All rights reserved. */ + +/* This program is free software; you can redistribute it and/or modify it + * under the terms of the license (GNU LGPL) which comes with this package. */ + #include #include #include "simdag/simdag.h" @@ -10,6 +16,7 @@ XBT_LOG_NEW_DEFAULT_CATEGORY(sd_test, int main(int argc, char **argv) { int i; + unsigned int ctr; const char *platform_file; const SD_workstation_t *workstations; const char *name1; @@ -20,8 +27,8 @@ int main(int argc, char **argv) double communication_amount21; const SD_link_t *route; int route_size; - SD_task_t task, taskA, taskB, taskC, taskD; - SD_task_t *changed_tasks; + SD_task_t task, taskA, taskB, taskC, taskD, checkB, checkD; + xbt_dynar_t changed_tasks; xbt_ex_t ex; const int workstation_number = 2; SD_workstation_t workstation_list[2]; @@ -30,14 +37,14 @@ int main(int argc, char **argv) double rate = -1.0; SD_workstation_t w1, w2; - /* initialisation of SD */ + /* initialization of SD */ SD_init(&argc, argv); /* xbt_log_control_set("sd.thres=debug"); */ if (argc < 2) { - INFO1("Usage: %s platform_file", argv[0]); - INFO1("example: %s sd_platform.xml", argv[0]); + XBT_INFO("Usage: %s platform_file", argv[0]); + XBT_INFO("example: %s sd_platform.xml", argv[0]); exit(1); } @@ -56,26 +63,29 @@ int main(int argc, char **argv) computation_amount2 = 1000000; communication_amount12 = 2000000; communication_amount21 = 3000000; - INFO3("Computation time for %f flops on %s: %f", computation_amount1, name1, - SD_workstation_get_computation_time(w1, computation_amount1)); - INFO3("Computation time for %f flops on %s: %f", computation_amount2, name2, - SD_workstation_get_computation_time(w2, computation_amount2)); - - INFO2("Route between %s and %s:", name1, name2); + XBT_INFO("Computation time for %f flops on %s: %f", computation_amount1, + name1, SD_workstation_get_computation_time(w1, + computation_amount1)); + XBT_INFO("Computation time for %f flops on %s: %f", computation_amount2, + name2, SD_workstation_get_computation_time(w2, + computation_amount2)); + + XBT_INFO("Route between %s and %s:", name1, name2); route = SD_route_get_list(w1, w2); route_size = SD_route_get_size(w1, w2); for (i = 0; i < route_size; i++) { - INFO3(" Link %s: latency = %f, bandwidth = %f", - SD_link_get_name(route[i]), SD_link_get_current_latency(route[i]), + XBT_INFO(" Link %s: latency = %f, bandwidth = %f", + SD_link_get_name(route[i]), + SD_link_get_current_latency(route[i]), SD_link_get_current_bandwidth(route[i])); } - INFO2("Route latency = %f, route bandwidth = %f", + XBT_INFO("Route latency = %f, route bandwidth = %f", SD_route_get_current_latency(w1, w2), SD_route_get_current_bandwidth(w1, w2)); - INFO4("Communication time for %f bytes between %s and %s: %f", + XBT_INFO("Communication time for %f bytes between %s and %s: %f", communication_amount12, name1, name2, SD_route_get_communication_time(w1, w2, communication_amount12)); - INFO4("Communication time for %f bytes between %s and %s: %f", + XBT_INFO("Communication time for %f bytes between %s and %s: %f", communication_amount21, name2, name1, SD_route_get_communication_time(w2, w1, communication_amount21)); @@ -154,10 +164,10 @@ int main(int argc, char **argv) /* estimated time */ task = taskD; - INFO2("Estimated time for '%s': %f", SD_task_get_name(task), - SD_task_get_execution_time(task, workstation_number, workstation_list, - computation_amount, communication_amount, - rate)); + XBT_INFO("Estimated time for '%s': %f", SD_task_get_name(task), + SD_task_get_execution_time(task, workstation_number, + workstation_list, computation_amount, + communication_amount)); /* let's launch the simulation! */ @@ -171,27 +181,28 @@ int main(int argc, char **argv) computation_amount, communication_amount, rate); changed_tasks = SD_simulate(-1.0); - for (i = 0; changed_tasks[i] != NULL; i++) { - INFO3("Task '%s' start time: %f, finish time: %f", - SD_task_get_name(changed_tasks[i]), - SD_task_get_start_time(changed_tasks[i]), - SD_task_get_finish_time(changed_tasks[i])); + xbt_dynar_foreach(changed_tasks, ctr, task) { + XBT_INFO("Task '%s' start time: %f, finish time: %f", + SD_task_get_name(task), + SD_task_get_start_time(task), SD_task_get_finish_time(task)); } - xbt_assert0(changed_tasks[0] == taskD && - changed_tasks[1] == taskB && - changed_tasks[2] == NULL, "Unexpected simulation results"); + xbt_dynar_get_cpy(changed_tasks, 0, &checkD); + xbt_dynar_get_cpy(changed_tasks, 1, &checkB); + + xbt_assert(checkD == taskD && + checkB == taskB, "Unexpected simulation results"); - xbt_free(changed_tasks); + xbt_dynar_free_container(&changed_tasks); - DEBUG0("Destroying tasks..."); + XBT_DEBUG("Destroying tasks..."); SD_task_destroy(taskA); SD_task_destroy(taskB); SD_task_destroy(taskC); SD_task_destroy(taskD); - DEBUG0("Tasks destroyed. Exiting SimDag..."); + XBT_DEBUG("Tasks destroyed. Exiting SimDag..."); SD_exit(); return 0;