This source file includes following definitions.
- main
- allocate_comms
- deallocate_comms
   1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 
  10 
  11 #include <errno.h>
  12 #include <stdio.h>
  13 #include <stdlib.h>
  14 #include <string.h>
  15 #include <netdb.h>
  16 #include <unistd.h>
  17 
  18 #include <mpi.h>
  19 
  20 #define ITERATIONS 1000000
  21 
  22 static void allocate_comms(void);
  23 static void deallocate_comms(void);
  24 static MPI_Comm communicator_a, communicator_b, communicator_c;
  25 
  26 int
  27 main(int argc, char *argv[])
  28 {
  29     int         rank;                         
  30     int         np;                           
  31     int         i;
  32     int         unslept;
  33 
  34     MPI_Init(&argc, &argv);
  35     MPI_Comm_rank(MPI_COMM_WORLD, &rank);
  36     MPI_Comm_size(MPI_COMM_WORLD, &np);
  37 
  38     for (i=0; i < ITERATIONS; i++) {
  39         
  40         allocate_comms();
  41 
  42         
  43         unslept = sleep(5);
  44 
  45         
  46         deallocate_comms();
  47     }
  48     MPI_Finalize();
  49     return 0;
  50 }
  51 
  52 void allocate_comms(void) {
  53     MPI_Comm_dup(MPI_COMM_WORLD, &communicator_a);
  54     MPI_Comm_dup(MPI_COMM_WORLD, &communicator_b);
  55     MPI_Comm_dup(MPI_COMM_WORLD, &communicator_c);
  56 }
  57 
  58 void deallocate_comms(void) {
  59     MPI_Comm_free(&communicator_a);
  60     MPI_Comm_free(&communicator_c);
  61 }