Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Upgrade coll mpich testlist to new mpich
[simgrid.git] / teshsuite / smpi / mpich3-test / coll / icalltoall.c
index a6a55e1..d8ef959 100644 (file)
@@ -8,12 +8,13 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include "mpitest.h"
+#include "mpicolltest.h"
 
 /*
 static char MTEST_Descrip[] = "Simple intercomm alltoall test";
 */
 
-int main( int argc, char *argv[] )
+int main(int argc, char *argv[])
 {
     int errs = 0, err;
     int *sendbuf = 0, *recvbuf = 0;
@@ -21,65 +22,64 @@ int main( int argc, char *argv[] )
     MPI_Comm comm;
     MPI_Datatype datatype;
 
-    MTest_Init( &argc, &argv );
+    MTest_Init(&argc, &argv);
 
     datatype = MPI_INT;
-    while (MTestGetIntercomm( &comm, &leftGroup, 4 )) {
-       if (comm == MPI_COMM_NULL) continue;
-       for (count = 1; count < 66000; count = 2 * count) {
-           /* Get an intercommunicator */
-           MPI_Comm_remote_size( comm, &rsize );
-           MPI_Comm_rank( comm, &rrank );
-           sendbuf = (int *)malloc( rsize * count * sizeof(int) );
-           recvbuf = (int *)malloc( rsize * count * sizeof(int) );
-           for (i=0; i<rsize*count; i++) recvbuf[i] = -1;
-           if (leftGroup) {
-               idx = 0;
-               for (j=0; j<rsize; j++) {
-                   for (i=0; i<count; i++) {
-                       sendbuf[idx++] = i + rrank;
-                   }
-               }
-               err = MPI_Alltoall( sendbuf, count, datatype, 
-                                   NULL, 0, datatype, comm );
-               if (err) {
-                   errs++;
-                   MTestPrintError( err );
-               }
-           }
-           else {
-               int rank, size;
+    while (MTestGetIntercomm(&comm, &leftGroup, 4)) {
+        if (comm == MPI_COMM_NULL)
+            continue;
+        for (count = 1; count < 66000; count = 2 * count) {
+            /* Get an intercommunicator */
+            MPI_Comm_remote_size(comm, &rsize);
+            MPI_Comm_rank(comm, &rrank);
+            sendbuf = (int *) malloc(rsize * count * sizeof(int));
+            recvbuf = (int *) malloc(rsize * count * sizeof(int));
+            for (i = 0; i < rsize * count; i++)
+                recvbuf[i] = -1;
+            if (leftGroup) {
+                idx = 0;
+                for (j = 0; j < rsize; j++) {
+                    for (i = 0; i < count; i++) {
+                        sendbuf[idx++] = i + rrank;
+                    }
+                }
+                err = MTest_Alltoall(sendbuf, count, datatype, NULL, 0, datatype, comm);
+                if (err) {
+                    errs++;
+                    MTestPrintError(err);
+                }
+            }
+            else {
+                int rank, size;
 
-               MPI_Comm_rank( comm, &rank );
-               MPI_Comm_size( comm, &size );
+                MPI_Comm_rank(comm, &rank);
+                MPI_Comm_size(comm, &size);
 
-               /* In the right group */
-               err = MPI_Alltoall( NULL, 0, datatype, 
-                                   recvbuf, count, datatype, comm );
-               if (err) {
-                   errs++;
-                   MTestPrintError( err );
-               }
-               /* Check that we have received the correct data */
-               idx = 0;
-               for (j=0; j<rsize; j++) {
-                   for (i=0; i<count; i++) {
-                       if (recvbuf[idx++] != i + j) {
-                           errs++;
-                           if (errs < 10) 
-                               fprintf( stderr, "buf[%d] = %d on %d\n", 
-                                        i, recvbuf[i], rank );
-                       }
-                   }
-               }
-           }
-           free( recvbuf );
-           free( sendbuf );
-       }
-       MTestFreeComm( &comm );
+                /* In the right group */
+                err = MTest_Alltoall(NULL, 0, datatype, recvbuf, count, datatype, comm);
+                if (err) {
+                    errs++;
+                    MTestPrintError(err);
+                }
+                /* Check that we have received the correct data */
+                idx = 0;
+                for (j = 0; j < rsize; j++) {
+                    for (i = 0; i < count; i++) {
+                        if (recvbuf[idx++] != i + j) {
+                            errs++;
+                            if (errs < 10)
+                                fprintf(stderr, "buf[%d] = %d on %d\n", i, recvbuf[i], rank);
+                        }
+                    }
+                }
+            }
+            free(recvbuf);
+            free(sendbuf);
+        }
+        MTestFreeComm(&comm);
     }
 
-    MTest_Finalize( errs );
+    MTest_Finalize(errs);
     MPI_Finalize();
     return 0;
 }