Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Also add the mpich3 binaries in the dependencies of make tests
[simgrid.git] / teshsuite / smpi / mpich3-test / pt2pt / cancelrecv.c
index 2744748..1770167 100644 (file)
 #include <stdio.h>
 #include <stdlib.h>
 #include "mpitest.h"
-#include <string.h>   /* For memset */
+#include <string.h>     /* For memset */
 
-int main( int argc, char *argv[] )
+int main(int argc, char *argv[])
 {
     MPI_Request r[3];
-    MPI_Status  s[3];
+    MPI_Status s[3];
     int *buf0, *buf1, *buf2;
     int rank, size, src, dest, flag, errs = 0;
     int n0, n1, n2;
     MPI_Comm comm;
 
-    MTest_Init( &argc, &argv );
+    MTest_Init(&argc, &argv);
 
-    MPI_Comm_size( MPI_COMM_WORLD, &size );
+    MPI_Comm_size(MPI_COMM_WORLD, &size);
     if (size < 2) {
-       fprintf( stderr, "Must run with at least 2 processes\n" );
-       MPI_Abort( MPI_COMM_WORLD, 1 );
+        fprintf(stderr, "Must run with at least 2 processes\n");
+        MPI_Abort(MPI_COMM_WORLD, 1);
     }
-    MPI_Comm_rank( MPI_COMM_WORLD, &rank );
+    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
 
     dest = 0;
-    src  = 1;
+    src = 1;
     comm = MPI_COMM_WORLD;
 
     n0 = n1 = n2 = 65536;
-    buf0 = (int *)malloc( n0 * sizeof(int) );
-    buf1 = (int *)malloc( n1 * sizeof(int) );
-    buf2 = (int *)malloc( n2 * sizeof(int) );
+    buf0 = (int *) malloc(n0 * sizeof(int));
+    buf1 = (int *) malloc(n1 * sizeof(int));
+    buf2 = (int *) malloc(n2 * sizeof(int));
     if (!buf0 || !buf1 || !buf2) {
-       fprintf( stderr, "Unable to allocate buffers of size %d\n", 
-                n0 * (int)sizeof(int) );
-       MPI_Abort( MPI_COMM_WORLD, 1 );
+        fprintf(stderr, "Unable to allocate buffers of size %d\n", n0 * (int) sizeof(int));
+        MPI_Abort(MPI_COMM_WORLD, 1);
     }
-    memset( buf0, -1, n0 * sizeof(int) );
-    memset( buf1, -1, n0 * sizeof(int) );
-    memset( buf2, -1, n0 * sizeof(int) );
+    memset(buf0, -1, n0 * sizeof(int));
+    memset(buf1, -1, n0 * sizeof(int));
+    memset(buf2, -1, n0 * sizeof(int));
 
     if (rank == dest) {
-       MPI_Irecv( buf0, n0, MPI_INT, src, 0, comm, &r[0] );
-       MPI_Irecv( buf1, n1, MPI_INT, src, 1, comm, &r[1] );
-       MPI_Irecv( buf2, n2, MPI_INT, src, 2, comm, &r[2] );
-       
-       MPI_Barrier( comm );
+        MPI_Irecv(buf0, n0, MPI_INT, src, 0, comm, &r[0]);
+        MPI_Irecv(buf1, n1, MPI_INT, src, 1, comm, &r[1]);
+        MPI_Irecv(buf2, n2, MPI_INT, src, 2, comm, &r[2]);
 
-       MPI_Cancel( &r[1] );
-       MPI_Barrier( comm );
-       memset( s, -1, sizeof(s) );
-       MPI_Waitall( 3, r, s );
-        MPI_Test_cancelled( &s[0], &flag );
+        MPI_Barrier(comm);
+
+        MPI_Cancel(&r[1]);
+        MPI_Barrier(comm);
+        memset(s, -1, sizeof(s));
+        MPI_Waitall(3, r, s);
+        MPI_Test_cancelled(&s[0], &flag);
         if (flag) {
-           errs++;
-           printf( "request 0 was cancelled!\n" );
-       }
-        MPI_Test_cancelled( &s[1], &flag );
+            errs++;
+            printf("request 0 was cancelled!\n");
+        }
+        MPI_Test_cancelled(&s[1], &flag);
         if (!flag) {
-           errs++;
-           printf( "request 1 was not cancelled!\n" );
-       }
-        MPI_Test_cancelled( &s[2], &flag );
+            errs++;
+            printf("request 1 was not cancelled!\n");
+        }
+        MPI_Test_cancelled(&s[2], &flag);
         if (flag) {
-           errs++;
-           printf( "request 2 was cancelled!\n" );
-       }
-       MPI_Barrier( comm );
+            errs++;
+            printf("request 2 was cancelled!\n");
+        }
+        MPI_Barrier(comm);
     }
     if (rank == src) {
-       int tflag;
-       MPI_Barrier( comm );
-       MPI_Barrier( comm );
-       MPI_Send( buf0, n0, MPI_INT, dest, 0, comm );
-       MPI_Isend( buf2, n2, MPI_INT, dest, 2, comm, &r[1] );
-       MPI_Isend( buf1, n1, MPI_INT, dest, 4, comm, &r[0] );
-       MPI_Cancel( &r[0] );
-       memset( s, -3, sizeof(s) );
-       s[0].MPI_ERROR = -3;
-       s[1].MPI_ERROR = -3;
-       MPI_Testall( 2, r, &tflag, s );
-       if (tflag) {
-           MPI_Test_cancelled( &s[0], &flag );
-           if (!flag) {
-               errs++;
-               printf( "send request 0 was not cancelled!\n" );
-           }
-           MPI_Test_cancelled( &s[1], &flag );
-           if (flag) {
-               errs++;
-               printf( "send request 1 was cancelled!\n" );
-           }
-       }
-       else {
-           /* If all requests are not complete, then neither r nor s 
-              may be changed */
-           if ( (s[0].MPI_ERROR) != -3) {
-               errs++;
-               printf( "Send request status 0 modified. s[0].MPI_ERROR = %x\n",
-                       s[0].MPI_ERROR );
-           }
-           if ( (s[1].MPI_ERROR) != -3) {
-               errs++;
-               printf( "Send request status 1 modified. s[1].MPI_ERROR = %x\n",
-                       s[1].MPI_ERROR );
-           }
-       }
-       MPI_Barrier( comm );
-       while (!tflag) {
-           MPI_Testall( 2, r, &tflag, s );
-       }
-       MPI_Test_cancelled( &s[0], &flag );
-       if (!flag) {
-           errs++;
-           printf( "send request 0 was not cancelled!\n" );
-       }
-       MPI_Test_cancelled( &s[1], &flag );
-       if (flag) {
-           errs++;
-           printf( "send request 1 was cancelled!\n" );
-       }
+        int tflag;
+        MPI_Barrier(comm);
+        MPI_Barrier(comm);
+        MPI_Send(buf0, n0, MPI_INT, dest, 0, comm);
+        MPI_Isend(buf2, n2, MPI_INT, dest, 2, comm, &r[1]);
+        MPI_Isend(buf1, n1, MPI_INT, dest, 4, comm, &r[0]);
+        MPI_Cancel(&r[0]);
+        memset(s, -3, sizeof(s));
+        s[0].MPI_ERROR = -3;
+        s[1].MPI_ERROR = -3;
+        MPI_Testall(2, r, &tflag, s);
+        if (tflag) {
+            MPI_Test_cancelled(&s[0], &flag);
+            if (!flag) {
+                errs++;
+                printf("send request 0 was not cancelled!\n");
+            }
+            MPI_Test_cancelled(&s[1], &flag);
+            if (flag) {
+                errs++;
+                printf("send request 1 was cancelled!\n");
+            }
+        }
+        else {
+            /* If all requests are not complete, then neither r nor s
+             * may be changed */
+            if ((s[0].MPI_ERROR) != -3) {
+                errs++;
+                printf("Send request status 0 modified. s[0].MPI_ERROR = %d\n", s[0].MPI_ERROR);
+            }
+            if ((s[1].MPI_ERROR) != -3) {
+                errs++;
+                printf("Send request status 1 modified. s[1].MPI_ERROR = %d\n", s[1].MPI_ERROR);
+            }
+        }
+        MPI_Barrier(comm);
+        while (!tflag) {
+            MPI_Testall(2, r, &tflag, s);
+        }
+        MPI_Test_cancelled(&s[0], &flag);
+        if (!flag) {
+            errs++;
+            printf("send request 0 was not cancelled!\n");
+        }
+        MPI_Test_cancelled(&s[1], &flag);
+        if (flag) {
+            errs++;
+            printf("send request 1 was cancelled!\n");
+        }
     }
     if (rank != src && rank != dest) {
-       MPI_Barrier( comm );
-       MPI_Barrier( comm );
-       MPI_Barrier( comm );
+        MPI_Barrier(comm);
+        MPI_Barrier(comm);
+        MPI_Barrier(comm);
     }
 
-    MTest_Finalize( errs );
+    MTest_Finalize(errs);
     MPI_Finalize();
 
     return 0;