Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix mpi bcast flattree-pipeline collective
authorPaul Bédaride <paul.bedaride@gmail.com>
Tue, 9 Apr 2013 13:42:46 +0000 (15:42 +0200)
committerPaul Bédaride <paul.bedaride@gmail.com>
Tue, 9 Apr 2013 13:42:46 +0000 (15:42 +0200)
src/smpi/colls/bcast-flattree-pipeline.c
teshsuite/smpi/bcast_coll.c
teshsuite/smpi/bcast_coll.tesh

index f01bbae..9033bf5 100644 (file)
@@ -16,7 +16,10 @@ smpi_coll_tuned_bcast_flattree_pipeline(void *buff, int count,
   int segment = flattree_segment_in_byte / extent;
   int pipe_length = count / segment;
   int increment = segment * extent;
-
+  if (pipe_length==0) {
+    XBT_WARN("MPI_bcast_flattree_pipeline use default MPI_bcast_flattree.");
+    return smpi_coll_tuned_bcast_flattree(buff, count, data_type, root, comm);
+  }
   rank = smpi_comm_rank(comm);
   num_procs = smpi_comm_size(comm);
 
index 008543a..9bb6a04 100644 (file)
@@ -10,6 +10,7 @@
 int main(int argc, char **argv)
 {
   int i, size, rank;
+  int count = 2048;
   int *values;
   int status;
 
@@ -17,17 +18,17 @@ int main(int argc, char **argv)
   MPI_Comm_size(MPI_COMM_WORLD, &size);
   MPI_Comm_rank(MPI_COMM_WORLD, &rank);
   
-  values = (int *) xbt_malloc(size * sizeof(int));  
+  values = (int *) xbt_malloc(count * sizeof(int));  
 
-  for (i = 0; i < size; i++)
+  for (i = 0; i < count; i++)
     values[i] = (0 == rank) ? 17 : 3;
 
-  status = MPI_Bcast(values, size, MPI_INT, 0, MPI_COMM_WORLD);
+  status = MPI_Bcast(values, count, MPI_INT, 0, MPI_COMM_WORLD);
 
-  printf("[%d] values=[", rank);
-  for (i = 0; i < size; i++)
-    printf("%d ", values[i]);
-  printf("]\n");
+  int good = 0;
+  for (i = 0; i < count; i++)
+    if (values[i]==17) good++;
+  printf("[%d] number of values equals to 17: %d\n", rank, good);
 
   MPI_Barrier(MPI_COMM_WORLD);
 
index f14e2b7..7dc08a5 100644 (file)
@@ -21,20 +21,19 @@ $ ../../bin/smpirun -map -hostfile ${srcdir:=.}/hostfile -platform ${srcdir:=.}/
 > [rank 14] -> Bourassa
 > [rank 15] -> Tremblay
 > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
-> [0] values=[17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 ]
-> [1] values=[17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 ]
-> [2] values=[17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 ]
-> [3] values=[17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 ]
-> [4] values=[17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 ]
-> [5] values=[17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 ]
-> [6] values=[17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 ]
-> [7] values=[17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 ]
-> [8] values=[17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 ]
-> [9] values=[17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 ]
-> [10] values=[17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 ]
-> [11] values=[17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 ]
-> [12] values=[17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 ]
-> [13] values=[17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 ]
-> [14] values=[17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 ]
-> [15] values=[17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 ]
-
+> [0] number of values equals to 17: 2048
+> [1] number of values equals to 17: 2048
+> [2] number of values equals to 17: 2048
+> [3] number of values equals to 17: 2048
+> [4] number of values equals to 17: 2048
+> [5] number of values equals to 17: 2048
+> [6] number of values equals to 17: 2048
+> [7] number of values equals to 17: 2048
+> [8] number of values equals to 17: 2048
+> [9] number of values equals to 17: 2048
+> [10] number of values equals to 17: 2048
+> [11] number of values equals to 17: 2048
+> [12] number of values equals to 17: 2048
+> [13] number of values equals to 17: 2048
+> [14] number of values equals to 17: 2048
+> [15] number of values equals to 17: 2048