Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Free memory.
[simgrid.git] / teshsuite / smpi / mpich3-test / pt2pt / sendflood.c
index e2fed07..d03a868 100644 (file)
@@ -10,8 +10,8 @@
 
 /*
  * Run this test with 8 processes.  This test was submitted by xxx
- * as a result of problems seen with the ch3:shm device on a Solaris 
- * system.  The symptom is that the test hangs; this is due to losing 
+ * as a result of problems seen with the ch3:shm device on a Solaris
+ * system.  The symptom is that the test hangs; this is due to losing
  * a message, probably due to a race condition in a message-queue update.
  * As a test for race conditions, it may need to be run multiple times
  * to expose a problem if a problem does exist.
 static int verbose = 0;
 static int loopProgress = 0;
 
-int main( int argc, char *argv[] )
+int main(int argc, char *argv[])
 {
-    int     nProc, rank ;
-    int     i, j, status ;
-    FILE    *pf=0 ;
+    int nProc, rank;
+    int i, j, status;
+    FILE *pf = 0;
 
-    MPI_Init( &argc, &argv ) ;
-    MPI_Comm_size( MPI_COMM_WORLD, &nProc ) ;
-    MPI_Comm_rank( MPI_COMM_WORLD, &rank ) ;
+    MPI_Init(&argc, &argv);
+    MPI_Comm_size(MPI_COMM_WORLD, &nProc);
+    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
 
-    for (i=1; i<argc; i++) {
-       if (strcmp(argv[i],"-v") == 0 ||
-           strcmp(argv[i],"--verbose") == 0) verbose = 1;
-       else if (strcmp(argv[i],"-p") == 0 ||
-                strcmp(argv[i],"--progress") == 0) loopProgress = 1;
-       else {
-           if (rank == 0) {
-               fprintf( stderr, "%s: [ -v | --verbose ] [ -p | --progress ]\n",
-                        argv[0] );
-               fflush(stderr);
-           }
-       }
+    for (i = 1; i < argc; i++) {
+        if (strcmp(argv[i], "-v") == 0 || strcmp(argv[i], "--verbose") == 0)
+            verbose = 1;
+        else if (strcmp(argv[i], "-p") == 0 || strcmp(argv[i], "--progress") == 0)
+            loopProgress = 1;
+        else {
+            if (rank == 0) {
+                fprintf(stderr, "%s: [ -v | --verbose ] [ -p | --progress ]\n", argv[0]);
+                fflush(stderr);
+            }
+        }
     }
 
     if (verbose) {
-       char    buf[ 128 ] ;
-       sprintf( buf, "fast_mpi_%d.dmp", rank ) ;
-       pf = fopen( buf, "w" ) ;
+        char buf[128];
+        sprintf(buf, "fast_mpi_%d.dmp", rank);
+        pf = fopen(buf, "w");
     }
     else if (loopProgress) {
-       pf = stdout;
+        pf = stdout;
     }
 
-    if( !rank ) {
-       int      **psend ;
-       int      **precv ;
-       psend = (int**)calloc( nProc, sizeof( int *) ) ;
-       precv = (int**)calloc( nProc, sizeof( int *) ) ;
-       for( i = 0 ; i < nProc ; i++ ) {
-           psend[ i ] = (int*)calloc( DATA_SIZE, sizeof( int ) ) ;
-           precv[ i ] = (int*)calloc( DATA_SIZE, sizeof( int ) ) ;
-       }
-       for( i = 0 ; i < LOOP_COUNT ; i++ ) {
-          if (verbose) {
-              fprintf( pf, "Master : loop %d\n", i ) ;
-              fflush( pf ) ;
-          }
-          else if (loopProgress && (i & PROGRESS_COUNT) == 0) {
-            fprintf( pf, "Master: loop %d\n", i ); fflush( pf );
-          }
-          for( j = 1 ; j < nProc ; j++ ) {
-             if (verbose) {
-                 fprintf( pf, "  read from child %d\n", j ) ;
-                 fflush( pf ) ;
-             }
-             status = MPI_Recv( precv[ j ], DATA_SIZE, MPI_INT, j, MP_TAG,
-                               MPI_COMM_WORLD, MPI_STATUS_IGNORE ) ;
-            if (verbose) {
-                fprintf( pf, "  read from child %d done, status = %d\n", j,
-                         status ) ;
-                fflush( pf ) ;
-            }
-          }
-          for( j = 1 ; j < nProc ; j++ ) {
-             if (verbose) {
-                 fprintf( pf, "  send to child %d\n", j ) ;
-                 fflush( pf ) ;
-             }
-             status = MPI_Send( psend[ j ], DATA_SIZE - 1, MPI_INT, j,
-                               MP_TAG, MPI_COMM_WORLD ) ;
-            if (verbose) {
-                fprintf( pf, "  send to child %d done, status = %d\n", j,
-                         status ) ;
-                fflush( pf ) ;
-            }
-          }
-       }
-       for( i = 0 ; i < nProc ; i++ ) {
-          free( psend[ i ] );
-          free( precv[ i ] );
-       }
-       free( psend );
-       free( precv );
-    } else {
-       int  *psend ;
-       int  *precv ;
-       psend = (int*)calloc( DATA_SIZE, sizeof( int ) ) ;
-       precv = (int*)calloc( DATA_SIZE, sizeof( int ) ) ;
-       for( i = 0 ; i < LOOP_COUNT ; i++ ) {
-          if (verbose) {
-              fprintf( pf, "  send to master\n" ) ;
-              fflush( pf ) ;
-          }
-          /*
-          else if (loopProgress && (i & PROGRESS_COUNT) == 0) {
-            fprintf( pf, "Slave: loop %d\n", i ); fflush( pf );
-          }
-          */
-          status = MPI_Send( psend, DATA_SIZE - 1, MPI_INT, 0, MP_TAG,
-                             MPI_COMM_WORLD ) ;
-          if (verbose) {
-              fprintf( pf, "  send to master done, status = %d\n", status ) ;
-              fflush( pf ) ;
-              fprintf( pf, "  read from master\n" ) ;
-              fflush( pf ) ;
-          }
-          status = MPI_Recv( precv, DATA_SIZE, MPI_INT, 0, MP_TAG,
-                             MPI_COMM_WORLD, MPI_STATUS_IGNORE ) ;
-          if (verbose) {
-              fprintf( pf, "  read from master done, status = %d\n", status ) ;
-              fflush( pf ) ;
-          }
-       }
-       free( psend );
-       free( precv );
+    if (!rank) {
+        int **psend;
+        int **precv;
+        psend = (int **) calloc(nProc, sizeof(int *));
+        precv = (int **) calloc(nProc, sizeof(int *));
+        for (i = 0; i < nProc; i++) {
+            psend[i] = (int *) calloc(DATA_SIZE, sizeof(int));
+            precv[i] = (int *) calloc(DATA_SIZE, sizeof(int));
+        }
+        for (i = 0; i < LOOP_COUNT; i++) {
+            if (verbose) {
+                fprintf(pf, "Master : loop %d\n", i);
+                fflush(pf);
+            }
+            else if (loopProgress && (i & PROGRESS_COUNT) == 0) {
+                fprintf(pf, "Master: loop %d\n", i);
+                fflush(pf);
+            }
+            for (j = 1; j < nProc; j++) {
+                if (verbose) {
+                    fprintf(pf, "  read from child %d\n", j);
+                    fflush(pf);
+                }
+                status = MPI_Recv(precv[j], DATA_SIZE, MPI_INT, j, MP_TAG,
+                                  MPI_COMM_WORLD, MPI_STATUS_IGNORE);
+                if (verbose) {
+                    fprintf(pf, "  read from child %d done, status = %d\n", j, status);
+                    fflush(pf);
+                }
+            }
+            for (j = 1; j < nProc; j++) {
+                if (verbose) {
+                    fprintf(pf, "  send to child %d\n", j);
+                    fflush(pf);
+                }
+                status = MPI_Send(psend[j], DATA_SIZE - 1, MPI_INT, j, MP_TAG, MPI_COMM_WORLD);
+                if (verbose) {
+                    fprintf(pf, "  send to child %d done, status = %d\n", j, status);
+                    fflush(pf);
+                }
+            }
+        }
+        for (i = 0; i < nProc; i++) {
+            free(psend[i]);
+            free(precv[i]);
+        }
+        free(psend);
+        free(precv);
+    }
+    else {
+        int *psend;
+        int *precv;
+        psend = (int *) calloc(DATA_SIZE, sizeof(int));
+        precv = (int *) calloc(DATA_SIZE, sizeof(int));
+        for (i = 0; i < LOOP_COUNT; i++) {
+            if (verbose) {
+                fprintf(pf, "  send to master\n");
+                fflush(pf);
+            }
+            /*
+             * else if (loopProgress && (i & PROGRESS_COUNT) == 0) {
+             * fprintf(pf, "Slave: loop %d\n", i); fflush(pf);
+             * }
+             */
+            status = MPI_Send(psend, DATA_SIZE - 1, MPI_INT, 0, MP_TAG, MPI_COMM_WORLD);
+            if (verbose) {
+                fprintf(pf, "  send to master done, status = %d\n", status);
+                fflush(pf);
+                fprintf(pf, "  read from master\n");
+                fflush(pf);
+            }
+            status = MPI_Recv(precv, DATA_SIZE, MPI_INT, 0, MP_TAG,
+                              MPI_COMM_WORLD, MPI_STATUS_IGNORE);
+            if (verbose) {
+                fprintf(pf, "  read from master done, status = %d\n", status);
+                fflush(pf);
+            }
+        }
+        free(psend);
+        free(precv);
     }
     if (verbose) {
-       fclose( pf ) ;
+        fclose(pf);
     }
-    MPI_Finalize() ;
+    MPI_Finalize();
 
     /* This test fails if it hangs */
     if (rank == 0) {
-       printf( " No Errors\n" );
+        printf(" No Errors\n");
     }
 
     return 0;
 }
-