Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
fix the compilation of MPICH3 tests with the absolute paranoid flags (enable_maintainer)
[simgrid.git] / teshsuite / smpi / mpich3-test / pt2pt / isendself.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 <stdio.h>
7 #include "mpi.h"
8 #include "mpitest.h"
9
10 int main(int argc, char *argv[])
11 {
12     int a[10], b[10], i;
13     MPI_Status status;
14     MPI_Request request;
15     int rank, count;
16     int errs = 0;
17
18
19     MTest_Init(&argc, &argv);
20
21     MPI_Comm_rank(MPI_COMM_WORLD, &rank);
22
23     for (i = 0; i < 10; i++)
24         a[i] = i + 1;
25
26     status.MPI_ERROR = 0;
27     MPI_Isend(a, 0, MPI_INT, rank, 0, MPI_COMM_WORLD, &request);
28     MPI_Recv(b, 1, MPI_INT, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &status);
29     MPI_Get_count(&status, MPI_INT, &count);
30     if (status.MPI_SOURCE != rank || status.MPI_TAG != 0 || status.MPI_ERROR != 0 || count != 0) {
31         errs++;
32         printf("1 status = %d %d %d %d\n", status.MPI_SOURCE, status.MPI_TAG,
33                status.MPI_ERROR, count);
34     }
35     /* printf("b[0] = %d\n", b[0]); */
36     MPI_Wait(&request, &status);
37
38     MPI_Isend(NULL, 0, MPI_INT, rank, 0, MPI_COMM_WORLD, &request);
39     MPI_Recv(NULL, 0, MPI_INT, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &status);
40     MPI_Get_count(&status, MPI_INT, &count);
41     if (status.MPI_SOURCE != rank || status.MPI_TAG != 0 || status.MPI_ERROR != 0 || count != 0) {
42         errs++;
43         printf("2 status = %d %d %d %d\n", status.MPI_SOURCE, status.MPI_TAG,
44                status.MPI_ERROR, count);
45     }
46     MPI_Wait(&request, &status);
47
48     MTest_Finalize(errs);
49     MPI_Finalize();
50     return 0;
51 }