From: suter Date: Mon, 17 Dec 2012 22:40:23 +0000 (+0100) Subject: add an example to test availability traces. Weird behavior and runs X-Git-Tag: v3_9_rc1~86^2~106^2~1 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/c87a1faf862f306f15dd80a2d3428814a250c4ca add an example to test availability traces. Weird behavior and runs forever (thus no tesh yet) --- diff --git a/examples/simdag/CMakeLists.txt b/examples/simdag/CMakeLists.txt index a3525c5682..e814baa92c 100644 --- a/examples/simdag/CMakeLists.txt +++ b/examples/simdag/CMakeLists.txt @@ -5,6 +5,7 @@ set(EXECUTABLE_OUTPUT_PATH "${CMAKE_CURRENT_BINARY_DIR}") add_executable(ex_sd_test sd_test.c) add_executable(sd_test2 sd_test2.c) add_executable(sd_fail sd_fail.c) +add_executable(sd_avail sd_avail.c) add_executable(sd_typed_tasks_test sd_typed_tasks_test.c) add_executable(sd_comm_throttling sd_comm_throttling.c) add_executable(sd_seq_access sd_seq_access.c) @@ -16,6 +17,7 @@ if(NOT WIN32) target_link_libraries(ex_sd_test simgrid pthread m ) target_link_libraries(sd_test2 simgrid pthread m ) target_link_libraries(sd_fail simgrid pthread m ) + target_link_libraries(sd_avail simgrid pthread m ) target_link_libraries(sd_typed_tasks_test simgrid pthread m ) target_link_libraries(sd_comm_throttling simgrid pthread m ) target_link_libraries(sd_seq_access simgrid pthread m ) @@ -36,6 +38,7 @@ else() target_link_libraries(ex_sd_test simgrid) target_link_libraries(sd_test2 simgrid) target_link_libraries(sd_fail simgrid) + target_link_libraries(sd_avail simgrid) target_link_libraries(sd_typed_tasks_test simgrid) target_link_libraries(sd_comm_throttling simgrid) target_link_libraries(sd_seq_access simgrid) @@ -68,11 +71,13 @@ set(tesh_files set(xml_files ${xml_files} ${CMAKE_CURRENT_SOURCE_DIR}/2clusters.xml + ${CMAKE_CURRENT_SOURCE_DIR}/two_hosts.xml ${CMAKE_CURRENT_SOURCE_DIR}/faulty_host.xml PARENT_SCOPE ) set(examples_src ${examples_src} + ${CMAKE_CURRENT_SOURCE_DIR}/sd_avail.c ${CMAKE_CURRENT_SOURCE_DIR}/sd_comm_throttling.c ${CMAKE_CURRENT_SOURCE_DIR}/sd_fail.c ${CMAKE_CURRENT_SOURCE_DIR}/sd_seq_access.c @@ -92,5 +97,7 @@ set(bin_files set(txt_files ${txt_files} ${CMAKE_CURRENT_SOURCE_DIR}/faulty_host.trace + ${CMAKE_CURRENT_SOURCE_DIR}/jupiter_power.trace + ${CMAKE_CURRENT_SOURCE_DIR}/link1_avail.trace PARENT_SCOPE ) diff --git a/examples/simdag/jupiter_power.trace b/examples/simdag/jupiter_power.trace new file mode 100644 index 0000000000..8550f51b54 --- /dev/null +++ b/examples/simdag/jupiter_power.trace @@ -0,0 +1,2 @@ +0.0 0.5 +2.0 1.0 \ No newline at end of file diff --git a/examples/simdag/link1_avail.trace b/examples/simdag/link1_avail.trace new file mode 100644 index 0000000000..05142207cc --- /dev/null +++ b/examples/simdag/link1_avail.trace @@ -0,0 +1,3 @@ +PERIODICITY 6.0 +2.0 62500000 +4.0 31250000 diff --git a/examples/simdag/sd_avail.c b/examples/simdag/sd_avail.c new file mode 100644 index 0000000000..bef36e9e96 --- /dev/null +++ b/examples/simdag/sd_avail.c @@ -0,0 +1,109 @@ +/* Copyright (c) 2012. 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" +#include "xbt/ex.h" +#include "xbt/log.h" + +XBT_LOG_NEW_DEFAULT_CATEGORY(sd_avail, + "Logging specific to this SimDag example"); + +/* Test of dynamic availability traces + * Scenario: + * - A chain of tasks: t1 -> c1 -> t2 -> c2 -> t3 -> c3 -> t4 alternatively + * scheduled across two workstations (Tremblay and Jupiter) connected by a + * single link (link1) + * - Make the characteristics of the resources change across time + * Jupiter + * [0.000000 -> 2.000000[ runs at half speed: 12500000 + * [2.000000 -> end[ runs at full speed: 25000000 + * Tremblay + * [0.000000 -> 1.000000[ runs at half speed: 15000000 + * [1.000000 -> 4.000000[ runs at full speed: 25000000 + * [4.000000 -> 6.000000[ runs at half speed: 12500000 + * then loop back. + * link1 + * [0.000000 -> 2.000000[ bandwidth = 125000000 + * [2.000000 -> 4.000000[ bandwidth = 62500000 + * [4.000000 -> 6.000000[ bandwidth = 31250000 + * then loop back. + * - Adjust tasks' amounts to have comprehensive execution times + * t1: 25000000 flops, should last 2 seconds + * c1: 125000000 bytes, should last 1.0001 seconds + * t2: 25000000 flops, should last 1 second + * c2: 62500000 bytes, should last 1.0001 seconds + * t3: 25000000 flops, should last 1 second + * c3: 31250000 bytes, should last 1.0001 seconds + * t4: + */ + +int main(int argc, char **argv) +{ + unsigned int ctr; + const SD_workstation_t *workstations; + SD_task_t t1, c1, t2, c2, t3, c3, t4, task; + xbt_dynar_t changed_tasks; + + SD_init(&argc, argv); + SD_create_environment(argv[1]); + workstations = SD_workstation_get_list(); + + t1 = SD_task_create_comp_seq("t1", NULL, 25000000); + c1 = SD_task_create_comm_e2e("c1", NULL, 125000000); + t2 = SD_task_create_comp_seq("t2", NULL, 25000000); + c2 = SD_task_create_comm_e2e("c2", NULL, 62500000); + t3 = SD_task_create_comp_seq("t3", NULL, 25000000); + c3 = SD_task_create_comm_e2e("c3", NULL, 31250000); + /* Should last 0.5 second */ + t4 = SD_task_create_comp_seq("t4", NULL, 25000000); + + /* Add dependencies: t1->c1->t2->c2->t3 */ + SD_task_dependency_add(NULL, NULL, t1, c1); + SD_task_dependency_add(NULL, NULL, c1, t2); + SD_task_dependency_add(NULL, NULL, t2, c2); + SD_task_dependency_add(NULL, NULL, c2, t3); + SD_task_dependency_add(NULL, NULL, t3, c3); + SD_task_dependency_add(NULL, NULL, c3, t4); + + /* Schedule tasks t1 and w3 on first host, t2 on second host */ + /* Transfers are auto-scheduled */ + SD_task_schedulel(t1, 1, workstations[0]); + SD_task_schedulel(t2, 1, workstations[1]); + SD_task_schedulel(t3, 1, workstations[0]); + SD_task_schedulel(t4, 1, workstations[1]); + + /* Add some watchpoint upon task completion */ + SD_task_watch(t1, SD_DONE); + SD_task_watch(c1, SD_DONE); + SD_task_watch(t2, SD_DONE); + SD_task_watch(c2, SD_DONE); + SD_task_watch(t3, SD_DONE); + SD_task_watch(c3, SD_DONE); + SD_task_watch(t4, SD_DONE); + + while (!xbt_dynar_is_empty((changed_tasks = SD_simulate(-1.0)))) { + XBT_INFO("link1: bw=%.0f, lat=%f", + SD_route_get_current_bandwidth(workstations[0], workstations[1]), + SD_route_get_current_latency(workstations[0], workstations[1])); + XBT_INFO("Jupiter: power=%.0f", + SD_workstation_get_power(workstations[0])* + SD_workstation_get_available_power(workstations[0])); + XBT_INFO("Tremblay: power=%.0f", + SD_workstation_get_power(workstations[1])* + SD_workstation_get_available_power(workstations[1])); + 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)); + if (SD_task_get_state(task)==SD_DONE) + SD_task_destroy(task); + } + } + SD_exit(); + return 0; +} diff --git a/examples/simdag/two_hosts.xml b/examples/simdag/two_hosts.xml new file mode 100644 index 0000000000..408737fc42 --- /dev/null +++ b/examples/simdag/two_hosts.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + 1.0 0.5 + 4.0 1.0 + + + +