Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'v3_8_x'
[simgrid.git] / teshsuite / smpi / mpich-test / env / baseattr.c
1 #include <stdio.h>
2 #include "mpi.h"
3 #include "test.h"
4
5 int main( int argc, char **argv)
6 {
7     int    err = 0;
8     void *v;
9     int  flag;
10     int  vval;
11     int  rank, size;
12
13     MPI_Init( &argc, &argv );
14     MPI_Comm_size( MPI_COMM_WORLD, &size );
15     MPI_Comm_rank( MPI_COMM_WORLD, &rank );
16     MPI_Attr_get( MPI_COMM_WORLD, MPI_TAG_UB, &v, &flag );
17     if (!flag || (vval = *(int*)v)< 32767) {
18         err++;
19         fprintf( stderr, "Could not get TAG_UB or got too-small value\n" );
20     }
21     MPI_Attr_get( MPI_COMM_WORLD, MPI_HOST, &v, &flag );
22     vval = *(int*)v;
23     if (!flag || ((vval < 0 || vval >= size) && vval != MPI_PROC_NULL)) {
24         err++;
25         fprintf( stderr, "Could not get HOST or got invalid value\n" );
26     }
27     MPI_Attr_get( MPI_COMM_WORLD, MPI_IO, &v, &flag );
28     vval = *(int*)v;
29     if (!flag || ((vval < 0 || vval >= size) && vval != MPI_ANY_SOURCE &&
30                   vval != MPI_PROC_NULL)) {
31         err++;
32         fprintf( stderr, "Could not get IO or got invalid value\n" );
33     }
34     MPI_Attr_get( MPI_COMM_WORLD, MPI_WTIME_IS_GLOBAL, &v, &flag );
35     if (flag) {
36         /* Wtime need not be set */
37         vval = *(int*)v;
38         if (vval < 0 || vval > 1) {
39             err++;
40             fprintf( stderr, "Invalid value for WTIME_IS_GLOBAL (got %d)\n", 
41                      vval );
42         }
43     }
44     Test_Waitforall( );
45     MPI_Finalize( );
46     
47     return err;
48 }