Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
add new coll tests
[simgrid.git] / teshsuite / smpi / mpich3-test / coll / scantst.c
index 1359acc51d0690d14e8b49562fc36812b5e98e1c..153726d4f25d937002d44f753d086b925b4a55c9 100644 (file)
 #include <stdio.h>
 #include "mpitest.h"
 
 #include <stdio.h>
 #include "mpitest.h"
 
-void addem ( int *, int *, int *, MPI_Datatype * );
-void assoc ( int *, int *, int *, MPI_Datatype * );
+void addem(int *, int *, int *, MPI_Datatype *);
+void assoc(int *, int *, int *, MPI_Datatype *);
 
 
-void addem( int *invec, int *inoutvec, int *len, MPI_Datatype *dtype)
+void addem(int *invec, int *inoutvec, int *len, MPI_Datatype * dtype)
 {
 {
-  int i;
-  for ( i=0; i<*len; i++ ) 
-    inoutvec[i] += invec[i];
+    int i;
+    for (i = 0; i < *len; i++)
+        inoutvec[i] += invec[i];
 }
 
 #define BAD_ANSWER 100000
 
 /*
 }
 
 #define BAD_ANSWER 100000
 
 /*
-    The operation is inoutvec[i] = invec[i] op inoutvec[i] 
+    The operation is inoutvec[i] = invec[i] op inoutvec[i]
     (see 4.9.4).  The order is important.
 
     Note that the computation is in process rank (in the communicator)
     (see 4.9.4).  The order is important.
 
     Note that the computation is in process rank (in the communicator)
-    order, independant of the root.
+    order, independent of the root.
  */
  */
-void assoc( int *invec, int *inoutvec, int *len, MPI_Datatype *dtype)
+void assoc(int *invec, int *inoutvec, int *len, MPI_Datatype * dtype)
 {
 {
-  int i;
-  for ( i=0; i<*len; i++ )  {
-    if (inoutvec[i] <= invec[i] ) {
-      int rank;
-      MPI_Comm_rank( MPI_COMM_WORLD, &rank );
-      fprintf( stderr, "[%d] inout[0] = %d, in[0] = %d\n", 
-             rank, inoutvec[0], invec[0] );
-      inoutvec[i] = BAD_ANSWER;
-      }
-    else 
-      inoutvec[i] = invec[i];
-  }
+    int i;
+    for (i = 0; i < *len; i++) {
+        if (inoutvec[i] <= invec[i]) {
+            int rank;
+            MPI_Comm_rank(MPI_COMM_WORLD, &rank);
+            fprintf(stderr, "[%d] inout[0] = %d, in[0] = %d\n", rank, inoutvec[0], invec[0]);
+            inoutvec[i] = BAD_ANSWER;
+        }
+        else
+            inoutvec[i] = invec[i];
+    }
 }
 
 }
 
-int main( int argc, char **argv )
+int main(int argc, char **argv)
 {
 {
-    int              rank, size, i;
-    int              data;
-    int              errors=0;
-    int              result = -100;
-    int              correct_result;
-    MPI_Op           op_assoc, op_addem;
-    MPI_Comm comm=MPI_COMM_WORLD;
-    
-    MPI_Init( &argc, &argv );
-    MPI_Op_create( (MPI_User_function *)assoc, 0, &op_assoc );
-    MPI_Op_create( (MPI_User_function *)addem, 1, &op_addem );
+    int rank, size, i;
+    int data;
+    int errors = 0;
+    int result = -100;
+    int correct_result;
+    MPI_Op op_assoc, op_addem;
+    MPI_Comm comm = MPI_COMM_WORLD;
+
+    MPI_Init(&argc, &argv);
+    MPI_Op_create((MPI_User_function *) assoc, 0, &op_assoc);
+    MPI_Op_create((MPI_User_function *) addem, 1, &op_addem);
 
     /* Run this for a variety of communicator sizes */
 
 
     /* Run this for a variety of communicator sizes */
 
-    MPI_Comm_rank( comm, &rank );
-    MPI_Comm_size( comm, &size );
+    MPI_Comm_rank(comm, &rank);
+    MPI_Comm_size(comm, &size);
 
     data = rank;
 
     data = rank;
-       
+
     correct_result = 0;
     correct_result = 0;
-    for (i=0;i<=rank;i++)
+    for (i = 0; i <= rank; i++)
         correct_result += i;
         correct_result += i;
-    
-    MPI_Scan ( &data, &result, 1, MPI_INT, MPI_SUM, comm );
+
+    MPI_Scan(&data, &result, 1, MPI_INT, MPI_SUM, comm);
     if (result != correct_result) {
     if (result != correct_result) {
-        fprintf( stderr, "[%d] Error suming ints with scan\n", rank );
+        fprintf(stderr, "[%d] Error suming ints with scan\n", rank);
         errors++;
     }
 
         errors++;
     }
 
-    MPI_Scan ( &data, &result, 1, MPI_INT, MPI_SUM, comm );
+    MPI_Scan(&data, &result, 1, MPI_INT, MPI_SUM, comm);
     if (result != correct_result) {
     if (result != correct_result) {
-        fprintf( stderr, "[%d] Error summing ints with scan (2)\n", rank );
+        fprintf(stderr, "[%d] Error summing ints with scan (2)\n", rank);
         errors++;
     }
         errors++;
     }
-    
+
     data = rank;
     result = -100;
     data = rank;
     result = -100;
-    MPI_Scan ( &data, &result, 1, MPI_INT, op_addem, comm );
+    MPI_Scan(&data, &result, 1, MPI_INT, op_addem, comm);
     if (result != correct_result) {
     if (result != correct_result) {
-        fprintf( stderr, "[%d] Error summing ints with scan (userop)\n", 
-                 rank );
+        fprintf(stderr, "[%d] Error summing ints with scan (userop)\n", rank);
         errors++;
     }
         errors++;
     }
-    
-    MPI_Scan ( &data, &result, 1, MPI_INT, op_addem, comm );
+
+    MPI_Scan(&data, &result, 1, MPI_INT, op_addem, comm);
     if (result != correct_result) {
     if (result != correct_result) {
-        fprintf( stderr, "[%d] Error summing ints with scan (userop2)\n", 
-                 rank );
+        fprintf(stderr, "[%d] Error summing ints with scan (userop2)\n", rank);
         errors++;
     }
     result = -100;
     data = rank;
         errors++;
     }
     result = -100;
     data = rank;
-    MPI_Scan ( &data, &result, 1, MPI_INT, op_assoc, comm );
+    MPI_Scan(&data, &result, 1, MPI_INT, op_assoc, comm);
     if (result == BAD_ANSWER) {
     if (result == BAD_ANSWER) {
-        fprintf( stderr, "[%d] Error scanning with non-commutative op\n",
-                 rank );
+        fprintf(stderr, "[%d] Error scanning with non-commutative op\n", rank);
         errors++;
     }
 
         errors++;
     }
 
-#if MTEST_HAVE_MIN_MPI_VERSION(2,2)
-    MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN);
-    if (MPI_SUCCESS == MPI_Scan( &data, &data, 1, MPI_INT, op_assoc, comm))
-        errors++;
-#endif
+    MPI_Op_free(&op_assoc);
+    MPI_Op_free(&op_addem);
 
 
-    MPI_Op_free( &op_assoc );
-    MPI_Op_free( &op_addem );
-    
     MPI_Finalize();
     if (errors)
     MPI_Finalize();
     if (errors)
-        printf( "[%d] done with ERRORS(%d)!\n", rank, errors );
+        printf("[%d] done with ERRORS(%d)!\n", rank, errors);
     else {
     else {
-       if (rank == 0) 
-           printf(" No Errors\n");
+        if (rank == 0)
+            printf(" No Errors\n");
     }
 
     return errors;
     }
 
     return errors;