Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Reindent (again).
[simgrid.git] / examples / msg / actions / actions.c
index 02e4b13..c700d63 100644 (file)
@@ -278,23 +278,18 @@ static void action_reduce(const char *const *action)
   if (!strcmp(process_name, "p0")) {
     XBT_DEBUG("%s: %s is the Root", reduce_identifier, process_name);
 
-    xbt_dynar_t comms = xbt_dynar_new(sizeof(msg_comm_t), NULL);
+    msg_comm_t *comms = xbt_new0(msg_comm_t, communicator_size - 1);
     msg_task_t *tasks = xbt_new0(msg_task_t, communicator_size - 1);
     for (i = 1; i < communicator_size; i++) {
       sprintf(mailbox, "%s_p%d_p0", reduce_identifier, i);
-      xbt_dynar_push_as(comms, msg_comm_t,
-                        MSG_task_irecv(&(tasks[i - 1]), mailbox));
+      comms[i - 1] = MSG_task_irecv(&(tasks[i - 1]), mailbox);
     }
-    MSG_comm_waitall(comms, -1);
-
-    msg_comm_t comm;
-    unsigned int cursor;
-    xbt_dynar_foreach(comms, cursor, comm) {
-      MSG_comm_destroy(comm);
-      MSG_task_destroy(tasks[i]);
+    MSG_comm_waitall(comms, communicator_size - 1, -1);
+    for (i = 1; i < communicator_size; i++) {
+      MSG_comm_destroy(comms[i - 1]);
+      MSG_task_destroy(tasks[i - 1]);
     }
     free(tasks);
-    xbt_dynar_free(&comms);
 
     comp_task = MSG_task_create("reduce_comp", comp_size, 0, NULL);
     XBT_DEBUG("%s: computing 'reduce_comp'", reduce_identifier);
@@ -337,24 +332,17 @@ static void action_bcast(const char *const *action)
   if (!strcmp(process_name, "p0")) {
     XBT_DEBUG("%s: %s is the Root", bcast_identifier, process_name);
 
-    xbt_dynar_t comms = xbt_dynar_new(sizeof(msg_comm_t), NULL);
-
+    msg_comm_t *comms = xbt_new0(msg_comm_t, communicator_size - 1);
 
     for (i = 1; i < communicator_size; i++) {
       sprintf(mailbox, "%s_p0_p%d", bcast_identifier, i);
-      xbt_dynar_push_as(comms, msg_comm_t,
-                        MSG_task_isend(MSG_task_create
-                                       (mailbox, 0, comm_size, NULL), mailbox));
-    }
-    MSG_comm_waitall(comms, -1);
-
-    msg_comm_t comm;
-    unsigned int cursor;
-    xbt_dynar_foreach(comms, cursor, comm) {
-      MSG_comm_destroy(comm);
+      comms[i - 1] =
+          MSG_task_isend(MSG_task_create(mailbox, 0, comm_size, NULL), mailbox);
     }
-    xbt_dynar_free(&comms);
-
+    MSG_comm_waitall(comms, communicator_size - 1, -1);
+    for (i = 1; i < communicator_size; i++)
+      MSG_comm_destroy(comms[i - 1]);
+    free(comms);
 
     XBT_DEBUG("%s: all messages sent by %s have been received",
               bcast_identifier, process_name);
@@ -411,20 +399,16 @@ static void action_allReduce(const char *const *action)
   if (!strcmp(process_name, "p0")) {
     XBT_DEBUG("%s: %s is the Root", allreduce_identifier, process_name);
 
-    xbt_dynar_t comms = xbt_dynar_new(sizeof(msg_comm_t), NULL);
+    msg_comm_t *comms = xbt_new0(msg_comm_t, communicator_size - 1);
     msg_task_t *tasks = xbt_new0(msg_task_t, communicator_size - 1);
     for (i = 1; i < communicator_size; i++) {
       sprintf(mailbox, "%s_p%d_p0", allreduce_identifier, i);
-      xbt_dynar_push_as(comms, msg_comm_t,
-                        MSG_task_irecv(&(tasks[i - 1]), mailbox));
+      comms[i - 1] = MSG_task_irecv(&(tasks[i - 1]), mailbox);
     }
-    MSG_comm_waitall(comms, -1);
-
-    msg_comm_t comm;
-    unsigned int cursor;
-    xbt_dynar_foreach(comms, cursor, comm) {
-      MSG_comm_destroy(comm);
-      MSG_task_destroy(tasks[i]);
+    MSG_comm_waitall(comms, communicator_size - 1, -1);
+    for (i = 1; i < communicator_size; i++) {
+      MSG_comm_destroy(comms[i - 1]);
+      MSG_task_destroy(tasks[i - 1]);
     }
     free(tasks);
 
@@ -434,18 +418,15 @@ static void action_allReduce(const char *const *action)
     MSG_task_destroy(comp_task);
     XBT_DEBUG("%s: computed", allreduce_identifier);
 
-    xbt_dynar_reset(comms);
     for (i = 1; i < communicator_size; i++) {
       sprintf(mailbox, "%s_p0_p%d", allreduce_identifier, i);
-      xbt_dynar_push_as(comms, msg_comm_t,
-                        MSG_task_isend(MSG_task_create
-                                       (mailbox, 0, comm_size, NULL), mailbox));
-    }
-    MSG_comm_waitall(comms, -1);
-    xbt_dynar_foreach(comms, cursor, comm) {
-      MSG_comm_destroy(comm);
+      comms[i - 1] =
+          MSG_task_isend(MSG_task_create(mailbox, 0, comm_size, NULL), mailbox);
     }
-    xbt_dynar_free(&comms);
+    MSG_comm_waitall(comms, communicator_size - 1, -1);
+    for (i = 1; i < communicator_size; i++)
+      MSG_comm_destroy(comms[i - 1]);
+    free(comms);
 
     XBT_DEBUG("%s: all messages sent by %s have been received",
               allreduce_identifier, process_name);