1 /* GOAL loader prototype. Not ready for public usage yet */
3 /* Copyright (c) 2011. The SimGrid Team.
4 * All rights reserved. */
6 /* This program is free software; you can redistribute it and/or modify it
7 * under the terms of the license (GNU LGPL) which comes with this package. */
11 #include "simdag/simdag.h"
16 XBT_LOG_NEW_DEFAULT_CATEGORY(goal, "The GOAL loader into SimDag");
20 } s_bcast_task_t,*bcast_task_t;
23 const SD_workstation_t* ws_list;
26 xbt_dynar_t reclaimed;
28 static void send_one(int from, int to) {
29 //XBT_DEBUG("send_one(%d, %d)",from,to);
31 if (count %100000 == 0)
32 XBT_INFO("Sending task #%d",count);
36 if (xbt_dynar_length(reclaimed)>0) {
37 bt = xbt_dynar_pop_as(reclaimed,bcast_task_t);
39 bt = xbt_new(s_bcast_task_t,1);
45 SD_task_t task = SD_task_create_comm_e2e(NULL,bt,424242);
47 XBT_DEBUG("Schedule task between %d and %d",bt->i,bt->j);
48 SD_task_schedulel(task,2,ws_list[bt->i],ws_list[bt->j]);
49 SD_task_watch(task,SD_DONE);
53 int main(int argc, char **argv) {
55 /* initialization of SD */
59 SD_create_environment(argv[1]);
61 SD_create_environment("../../platforms/One_cluster_no_backbone.xml");
64 ws_list = SD_workstation_get_list();
65 reclaimed = xbt_dynar_new(sizeof(bcast_task_t),xbt_free_ref);
66 xbt_dynar_t done = NULL;
67 send_one(0,SD_workstation_get_number());
69 if (done != NULL && xbt_dynar_length(done) > 0) {
73 xbt_dynar_foreach(done, cursor, task) {
74 bcast_task_t bt = SD_task_get_data(task);
76 if (bt->i != bt->j -1)
77 send_one(bt->i,bt->j);
78 if (bt->j != bt->k -1)
79 send_one(bt->j,bt->k);
81 if (xbt_dynar_length(reclaimed)<100) {
82 xbt_dynar_push_as(reclaimed,bcast_task_t,bt);
86 SD_task_destroy(task);
88 xbt_dynar_free(&done);
91 } while(xbt_dynar_length(done) > 0);
92 xbt_dynar_free(&done);
93 xbt_dynar_free(&reclaimed);
96 XBT_INFO("Done. Bailing out");