Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Repair collective operations (changes made for asynchronous end to end
authorsuter <suter@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Thu, 4 Feb 2010 13:02:38 +0000 (13:02 +0000)
committersuter <suter@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Thu, 4 Feb 2010 13:02:38 +0000 (13:02 +0000)
communications had a bad impact)

!!! WARNING !!!
In order to save space the arbitrary choice changed. The processes now
have to be named p0, p1, ..., pN instead of process0, process1, processN

The resulting gain becomes impressive for large traces.

git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@7055 48e7efb5-ca39-0410-a469-dd3cf9ba447f

examples/msg/actions/actions.c
examples/msg/actions/actions_allReduce.txt
examples/msg/actions/actions_bcast.txt
examples/msg/actions/actions_reduce.txt
examples/msg/actions/bcast_deployment.xml

index 5034d09..9661ad1 100644 (file)
@@ -45,7 +45,7 @@ static void send(xbt_dynar_t action)
   //  char *to =  xbt_dynar_get_as(action, 2, char *);
   DEBUG2("Entering Send: %s (size: %lg)", name, parse_double(size));
   MSG_task_send(MSG_task_create(name, 0, parse_double(size), NULL), to);
   //  char *to =  xbt_dynar_get_as(action, 2, char *);
   DEBUG2("Entering Send: %s (size: %lg)", name, parse_double(size));
   MSG_task_send(MSG_task_create(name, 0, parse_double(size), NULL), to);
-  INFO2("%s %f", name, MSG_get_clock()-clock);
+  DEBUG2("%s %f", name, MSG_get_clock()-clock);
   free(name);
 }
 
   free(name);
 }
 
@@ -84,7 +84,7 @@ static void Isend(xbt_dynar_t action)
   comm_helper =
     MSG_process_create_with_arguments(spawn_name, spawned_send, 
                                      NULL, MSG_host_self(), 2, myargv);
   comm_helper =
     MSG_process_create_with_arguments(spawn_name, spawned_send, 
                                      NULL, MSG_host_self(), 2, myargv);
-  INFO2("%s %f",xbt_str_join(action, " "), MSG_get_clock()-clock);
+  DEBUG2("%s %f",xbt_str_join(action, " "), MSG_get_clock()-clock);
 }
 
 
 }
 
 
@@ -101,7 +101,7 @@ static void recv(xbt_dynar_t action)
   DEBUG1("Receiving: %s", name);
   MSG_task_receive(&task, mailbox_name);
   //  MSG_task_receive(&task, MSG_process_get_name(MSG_process_self()));
   DEBUG1("Receiving: %s", name);
   MSG_task_receive(&task, mailbox_name);
   //  MSG_task_receive(&task, MSG_process_get_name(MSG_process_self()));
-  INFO2("%s %f", name, MSG_get_clock()-clock);
+  DEBUG2("%s %f", name, MSG_get_clock()-clock);
   MSG_task_destroy(task);
   free(name);
 }
   MSG_task_destroy(task);
   free(name);
 }
@@ -142,7 +142,7 @@ static void Irecv(xbt_dynar_t action)
                                                  NULL, MSG_host_self(),
                                                  1, myargv);
 
                                                  NULL, MSG_host_self(),
                                                  1, myargv);
 
-  INFO2("%s %f",  xbt_str_join(action, " "), 
+  DEBUG2("%s %f",  xbt_str_join(action, " "), 
        MSG_get_clock()-clock);
  
   free(name);
        MSG_get_clock()-clock);
  
   free(name);
@@ -158,17 +158,17 @@ static void wait_action(xbt_dynar_t action)
   
   DEBUG1("Entering %s", name);
   sprintf(task_name,"%s_wait",MSG_process_get_name(MSG_process_self()));
   
   DEBUG1("Entering %s", name);
   sprintf(task_name,"%s_wait",MSG_process_get_name(MSG_process_self()));
-  INFO1("wait: %s", task_name);
+  DEBUG1("wait: %s", task_name);
   MSG_task_receive(&task,task_name);
   MSG_task_destroy(task);
   MSG_task_receive(&task,task_name);
   MSG_task_destroy(task);
-  INFO2("%s %f", name, MSG_get_clock()-clock);
+  DEBUG2("%s %f", name,        MSG_get_clock()-clock);
   free(name);
 }
 
 static void barrier (xbt_dynar_t action)
 {
   char *name = xbt_str_join(action, " ");
   free(name);
 }
 
 static void barrier (xbt_dynar_t action)
 {
   char *name = xbt_str_join(action, " ");
-  INFO1("barrier: %s", name);
+  DEBUG1("barrier: %s", name);
   
 
   free(name);
   
 
   free(name);
@@ -181,6 +181,7 @@ static void reduce(xbt_dynar_t action)
   char *name;
   char task_name[80];
   char spawn_name[80];
   char *name;
   char task_name[80];
   char spawn_name[80];
+  char **myargv;
   char *comm_size = xbt_dynar_get_as(action, 2, char *);
   char *comp_size = xbt_dynar_get_as(action, 3, char *);
   m_process_t comm_helper=NULL;
   char *comm_size = xbt_dynar_get_as(action, 2, char *);
   char *comp_size = xbt_dynar_get_as(action, 3, char *);
   m_process_t comm_helper=NULL;
@@ -202,19 +203,25 @@ static void reduce(xbt_dynar_t action)
 
   name = bprintf("reduce_%d", counters->reduce_counter++);
 
 
   name = bprintf("reduce_%d", counters->reduce_counter++);
 
-  if (!strcmp(process_name, "process0")){
+  if (!strcmp(process_name, "p0")){
     DEBUG2("%s: %s is the Root",name, process_name);
     for(i=1;i<communicator_size;i++){
     DEBUG2("%s: %s is the Root",name, process_name);
     for(i=1;i<communicator_size;i++){
-      sprintf(spawn_name,"%s_process%d", name, i);
+      sprintf(spawn_name,"%s_p%d_%s", name, i,
+          MSG_process_get_name(MSG_process_self()));
       sprintf(task_name,"%s_wait", spawn_name);
       sprintf(task_name,"%s_wait", spawn_name);
+      myargv = (char**) calloc (2, sizeof (char*));
+      
+      myargv[0] = xbt_strdup(spawn_name);
+      myargv[1] = NULL;
+
       comm_helper = 
       comm_helper = 
-       MSG_process_create(task_name, spawned_recv, 
-                          (void *) xbt_strdup(spawn_name),
-                          MSG_host_self());      
+       MSG_process_create_with_arguments(task_name, spawned_recv, 
+                                         NULL, MSG_host_self(),
+                                         1, myargv);
     }
 
     for(i=1;i<communicator_size;i++){
     }
 
     for(i=1;i<communicator_size;i++){
-      sprintf(task_name,"%s_process%d_wait", name, i);
+      sprintf(task_name,"%s_p%d_p0_wait", name, i);
       MSG_task_receive(&task,task_name);
       MSG_task_destroy(task);
       task=NULL;
       MSG_task_receive(&task,task_name);
       MSG_task_destroy(task);
       task=NULL;
@@ -228,14 +235,14 @@ static void reduce(xbt_dynar_t action)
     DEBUG1("%s: computed", name);
   } else {
     DEBUG2("%s: %s sends", name, process_name);
     DEBUG1("%s: computed", name);
   } else {
     DEBUG2("%s: %s sends", name, process_name);
-    sprintf(task_name,"%s_%s", name, process_name);
+    sprintf(task_name,"%s_%s_p0", name, process_name);
     DEBUG1("put on %s", task_name);
     MSG_task_send(MSG_task_create(name, 0, parse_double(comm_size), NULL),
                  task_name);
   }
 
   MSG_process_set_data(MSG_process_self(), (void*)counters);
     DEBUG1("put on %s", task_name);
     MSG_task_send(MSG_task_create(name, 0, parse_double(comm_size), NULL),
                  task_name);
   }
 
   MSG_process_set_data(MSG_process_self(), (void*)counters);
-  INFO2("%s %f", xbt_str_join(action, " "), MSG_get_clock()-clock);
+  DEBUG2("%s %f", xbt_str_join(action, " "), MSG_get_clock()-clock);
   free(name);
 }
 
   free(name);
 }
 
@@ -264,7 +271,7 @@ static void bcast (xbt_dynar_t action)
   }
 
   name = bprintf("bcast_%d", counters->bcast_counter++);
   }
 
   name = bprintf("bcast_%d", counters->bcast_counter++);
-  if (!strcmp(process_name, "process0")){
+  if (!strcmp(process_name, "p0")){
     DEBUG2("%s: %s is the Root",name, process_name);
 
     for(i=1;i<communicator_size;i++){
     DEBUG2("%s: %s is the Root",name, process_name);
 
     for(i=1;i<communicator_size;i++){
@@ -280,7 +287,7 @@ static void bcast (xbt_dynar_t action)
     }
     
     for(i=1;i<communicator_size;i++){
     }
     
     for(i=1;i<communicator_size;i++){
-      sprintf(task_name,"process%d_wait", i);
+      sprintf(task_name,"p%d_wait", i);
       DEBUG1("get on %s", task_name);
       MSG_task_receive(&task,task_name);      
       MSG_task_destroy(task);
       DEBUG1("get on %s", task_name);
       MSG_task_receive(&task,task_name);      
       MSG_task_destroy(task);
@@ -299,7 +306,7 @@ static void bcast (xbt_dynar_t action)
   }
 
   MSG_process_set_data(MSG_process_self(), (void*)counters);
   }
 
   MSG_process_set_data(MSG_process_self(), (void*)counters);
-  INFO2("%s %f", xbt_str_join(action, " "), MSG_get_clock()-clock);
+  DEBUG2("%s %f", xbt_str_join(action, " "), MSG_get_clock()-clock);
   free(name);
 }
 
   free(name);
 }
 
@@ -311,7 +318,7 @@ static void sleep(xbt_dynar_t action)
   double clock = MSG_get_clock();
   DEBUG1("Entering %s", name);
   MSG_process_sleep(parse_double(duration));
   double clock = MSG_get_clock();
   DEBUG1("Entering %s", name);
   MSG_process_sleep(parse_double(duration));
-  INFO2("%s %f ", name, MSG_get_clock()-clock);
+  DEBUG2("%s %f ", name, MSG_get_clock()-clock);
   free(name);
 }
 
   free(name);
 }
 
@@ -343,19 +350,25 @@ static void allReduce(xbt_dynar_t action)
 
   name = bprintf("allReduce_%d", counters->allReduce_counter++);
 
 
   name = bprintf("allReduce_%d", counters->allReduce_counter++);
 
-  if (!strcmp(process_name, "process0")){
+  if (!strcmp(process_name, "p0")){
     DEBUG2("%s: %s is the Root",name, process_name);
     for(i=1;i<communicator_size;i++){
     DEBUG2("%s: %s is the Root",name, process_name);
     for(i=1;i<communicator_size;i++){
-      sprintf(spawn_name,"%s_process%d", name, i);
+      sprintf(spawn_name,"%s_p%d_%s", name, i,
+          MSG_process_get_name(MSG_process_self()));
       sprintf(task_name,"%s_wait", spawn_name);
       sprintf(task_name,"%s_wait", spawn_name);
+      myargv = (char**) calloc (2, sizeof (char*));
+      
+      myargv[0] = xbt_strdup(spawn_name);
+      myargv[1] = NULL;
+
       comm_helper = 
       comm_helper = 
-       MSG_process_create(task_name, spawned_recv, 
-                          (void *) xbt_strdup(spawn_name),
-                          MSG_host_self());      
+       MSG_process_create_with_arguments(task_name, spawned_recv, 
+                                         NULL, MSG_host_self(),
+                                         1, myargv);
     }
 
     for(i=1;i<communicator_size;i++){
     }
 
     for(i=1;i<communicator_size;i++){
-      sprintf(task_name,"%s_process%d_wait", name, i);
+      sprintf(task_name,"%s_p%d_p0_wait", name, i);
       MSG_task_receive(&task,task_name);
       MSG_task_destroy(task);
       task=NULL;
       MSG_task_receive(&task,task_name);
       MSG_task_destroy(task);
       task=NULL;
@@ -381,7 +394,7 @@ static void allReduce(xbt_dynar_t action)
     }
     
     for(i=1;i<communicator_size;i++){
     }
     
     for(i=1;i<communicator_size;i++){
-      sprintf(task_name,"process%d_wait", i);
+      sprintf(task_name,"p%d_wait", i);
       DEBUG1("get on %s", task_name);
       MSG_task_receive(&task,task_name);      
       MSG_task_destroy(task);
       DEBUG1("get on %s", task_name);
       MSG_task_receive(&task,task_name);      
       MSG_task_destroy(task);
@@ -392,7 +405,7 @@ static void allReduce(xbt_dynar_t action)
 
   } else {
     DEBUG2("%s: %s sends", name, process_name);
 
   } else {
     DEBUG2("%s: %s sends", name, process_name);
-    sprintf(task_name,"%s_%s", name, process_name);
+    sprintf(task_name,"%s_%s_p0", name, process_name);
     DEBUG1("put on %s", task_name);
     MSG_task_send(MSG_task_create(name, 0, parse_double(comm_size), NULL),
                  task_name);
     DEBUG1("put on %s", task_name);
     MSG_task_send(MSG_task_create(name, 0, parse_double(comm_size), NULL),
                  task_name);
@@ -407,7 +420,7 @@ static void allReduce(xbt_dynar_t action)
   }
 
   MSG_process_set_data(MSG_process_self(), (void*)counters);
   }
 
   MSG_process_set_data(MSG_process_self(), (void*)counters);
-  INFO2("%s %f", xbt_str_join(action, " "), MSG_get_clock()-clock);
+  DEBUG2("%s %f", xbt_str_join(action, " "), MSG_get_clock()-clock);
   free(name);
 }
 
   free(name);
 }
 
@@ -427,7 +440,7 @@ static void compute(xbt_dynar_t action)
   DEBUG1("Entering %s", name);
   MSG_task_execute(task);
   MSG_task_destroy(task);
   DEBUG1("Entering %s", name);
   MSG_task_execute(task);
   MSG_task_destroy(task);
-  INFO2("%s %f", name, MSG_get_clock()-clock);
+  DEBUG2("%s %f", name, MSG_get_clock()-clock);
   free(name);
 }
 
   free(name);
 }
 
index d56c8dd..b583982 100644 (file)
@@ -1,9 +1,9 @@
-process0 comm_size 3
-process0 allReduce 5e8 5e8
-process1 allReduce 5e8 5e8
-process2 allReduce 5e8 5e8
+p0 comm_size 3
+p0 allReduce 5e8 5e8
+p1 allReduce 5e8 5e8
+p2 allReduce 5e8 5e8
 
 
-process0 compute 5e8
-process1 compute 5e8
-process2 compute 5e8
+p0 compute 5e8
+p1 compute 5e8
+p2 compute 5e8
 
 
index d789a4e..62a5456 100644 (file)
@@ -1,22 +1,22 @@
-process0 comm_size 3
-process0 bcast 5e8
-process1 bcast 5e8
-process2 bcast 5e8
+p0 comm_size 3
+p0 bcast 5e8
+p1 bcast 5e8
+p2 bcast 5e8
 
 
-process0 compute 5e8
-process1 compute 2e8
-process2 compute 5e8
+p0 compute 5e8
+p1 compute 2e8
+p2 compute 5e8
 
 
-process0 bcast 5e8
-process1 bcast 5e8
-process2 bcast 5e8
+p0 bcast 5e8
+p1 bcast 5e8
+p2 bcast 5e8
 
 
-process0 compute 5e8
-process1 compute 2e8
-process2 compute 5e8
+p0 compute 5e8
+p1 compute 2e8
+p2 compute 5e8
 
 
-process0 reduce 5e8 5e8
-process1 reduce 5e8 5e8
-process2 reduce 5e8 5e8
+p0 reduce 5e8 5e8
+p1 reduce 5e8 5e8
+p2 reduce 5e8 5e8
 
 
 
 
index e3b6199..c1a58b4 100644 (file)
@@ -1,9 +1,9 @@
-process0 comm_size 3
-process0 reduce 5e8 5e8
-process1 reduce 5e8 5e8
-process2 reduce 5e8 5e8
+p0 comm_size 3
+p0 reduce 5e8 5e8
+p1 reduce 5e8 5e8
+p2 reduce 5e8 5e8
 
 
-process0 compute 5e8
-process1 compute 5e8
-process2 compute 5e8
+p0 compute 5e8
+p1 compute 5e8
+p2 compute 5e8
 
 
index 589bdcb..798b9cc 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version='1.0'?>
 <!DOCTYPE platform SYSTEM "simgrid.dtd">
 <platform version="2">
 <?xml version='1.0'?>
 <!DOCTYPE platform SYSTEM "simgrid.dtd">
 <platform version="2">
-  <process host="Tremblay" function="process0"/>
-  <process host="Jupiter" function="process1"/>
-  <process host="Fafard" function="process2"/>
+  <process host="Tremblay" function="p0"/>
+  <process host="Jupiter" function="p1"/>
+  <process host="Fafard" function="p2"/>
 </platform>
 </platform>