Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix dist
[simgrid.git] / teshsuite / smpi / mpich3-test / coll / coll8.c
1 /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */
2 /*
3  *  (C) 2001 by Argonne National Laboratory.
4  *      See COPYRIGHT in top-level directory.
5  */
6 #include "mpi.h"
7 #include <stdio.h>
8 #include "mpitest.h"
9
10 int main(int argc, char **argv)
11 {
12     int rank, size, i;
13     int data;
14     int errors = 0;
15     int result = -100;
16     int correct_result;
17
18     MTest_Init(&argc, &argv);
19     MPI_Comm_rank(MPI_COMM_WORLD, &rank);
20     MPI_Comm_size(MPI_COMM_WORLD, &size);
21
22     data = rank;
23
24     MPI_Reduce(&data, &result, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD);
25     MPI_Bcast(&result, 1, MPI_INT, 0, MPI_COMM_WORLD);
26     correct_result = 0;
27     for (i = 0; i < size; i++)
28         correct_result += i;
29     if (result != correct_result)
30         errors++;
31
32     MPI_Reduce(&data, &result, 1, MPI_INT, MPI_MIN, 0, MPI_COMM_WORLD);
33     MPI_Bcast(&result, 1, MPI_INT, 0, MPI_COMM_WORLD);
34     if (result != 0)
35         errors++;
36
37     MPI_Reduce(&data, &result, 1, MPI_INT, MPI_MAX, 0, MPI_COMM_WORLD);
38     MPI_Bcast(&result, 1, MPI_INT, 0, MPI_COMM_WORLD);
39     if (result != (size - 1))
40         errors++;
41
42     MTest_Finalize(errors);
43     MPI_Finalize();
44     return MTestReturnValue(errors);
45 }