Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge pull request #65 from fabienchaix/master
[simgrid.git] / teshsuite / bug-17132 / bug-17132.c
1 /* Copyright (c) 2014. The SimGrid Team.
2  * All rights reserved.                                                     */
3
4 /* This program is free software; you can redistribute it and/or modify it
5  * under the terms of the license (GNU LGPL) which comes with this package. */
6
7 #include "xbt/log.h"
8 #include <stdio.h>
9 #include <mpi.h>
10
11 XBT_LOG_NEW_DEFAULT_CATEGORY(MM_mpi, "Messages for this SMPI test");
12
13 int main(int argc, char ** argv)
14 {
15   size_t err;
16   size_t M = 8*1024;
17   size_t N = 32*1024;
18
19   MPI_Init(&argc, &argv);
20
21   int rank;
22   MPI_Comm_rank(MPI_COMM_WORLD,&rank);
23
24   double *a = malloc(sizeof(double) * M);
25   double *b = malloc(sizeof(double) * N);
26
27   // A broadcast
28   err = MPI_Bcast(a, M, MPI_DOUBLE, 0, MPI_COMM_WORLD);
29   if (err != MPI_SUCCESS) {
30     perror("Error Bcast A\n"); MPI_Finalize(); exit(-1);
31   }
32
33 //  Uncommenting this barrier fixes it!
34 //  MPI_Barrier(MPI_COMM_WORLD);
35
36   // Another broadcast
37   err = MPI_Bcast(b, N, MPI_DOUBLE, 0, MPI_COMM_WORLD );
38   if (err != MPI_SUCCESS) {
39     perror("Error Bcast B\n"); MPI_Finalize(); exit(-1);
40   }
41
42   // Commenting out this barrier fixes it!!
43   MPI_Barrier(MPI_COMM_WORLD);
44
45   if(rank==0) {
46     printf("Walltime = %g\n",MPI_Wtime());
47   }
48
49   MPI_Finalize();
50   free(a);
51   free(b);
52   return 0;
53 }