From 1b20703c2048cf176df2d5c792de56da92ae03e2 Mon Sep 17 00:00:00 2001 From: Albert Cheng Date: Fri, 2 Jul 1999 19:27:36 -0500 Subject: [svn-r1417] t_mpi.c: Changed it to skip the test instead of aborting when there is not enough processes to do the test. Also corrected an error in the error reporting printf statement. t_dset.c: testphdf5.c: testphdf5.h: Added option for specifying chunk dimensions. --- testpar/t_dset.c | 4 ++-- testpar/t_mpi.c | 15 +++++++++++---- testpar/testphdf5.c | 27 ++++++++++++++++++++++++++- testpar/testphdf5.h | 1 + 4 files changed, 40 insertions(+), 7 deletions(-) diff --git a/testpar/t_dset.c b/testpar/t_dset.c index 6dfdaca..81c6030 100644 --- a/testpar/t_dset.c +++ b/testpar/t_dset.c @@ -842,8 +842,8 @@ extend_writeInd(char *filename) MPI_Comm_rank(MPI_COMM_WORLD,&mpi_rank); /* setup chunk-size. Make sure sizes are > 0 */ - chunk_dims[0] = (dim0+9)/10; - chunk_dims[1] = (dim1+9)/10; + chunk_dims[0] = chunkdim0; + chunk_dims[1] = chunkdim1; /* allocate memory for data buffer */ data_array1 = (DATATYPE *)malloc(dim0*dim1*sizeof(DATATYPE)); diff --git a/testpar/t_mpi.c b/testpar/t_mpi.c index 0d6d390..dbcfada 100644 --- a/testpar/t_mpi.c +++ b/testpar/t_mpi.c @@ -45,7 +45,12 @@ test_mpio_overlap_writes(char *filename[]) MPI_Comm_rank(MPI_COMM_WORLD,&mpi_rank); /* Need at least 2 processes */ - VRFY((mpi_size >= 2), "Has at least 2 processes"); + if (mpi_size < 2) { + if (MAINPROCESS) + printf("Need at least 2 processes to run MPIO test.\n"); + printf(" -SKIP- \n"); + return; + } /* splits processes 0 to n-2 into one comm. and the last one into another */ color = ((mpi_rank < (mpi_size - 1)) ? 0 : 1); @@ -112,9 +117,11 @@ test_mpio_overlap_writes(char *filename[]) &mpi_stat); VRFY((mrc==MPI_SUCCESS), ""); for (i=0; i\tfilename prefix\n"); printf("\t-d \tdataset dimensions\n"); + printf("\t-c \tdataset chunk dimensions\n"); printf("\tDefault: do write then read with dimensions %dx%d\n", DIM0, DIM1); printf("\n"); @@ -106,6 +110,10 @@ parse_options(int argc, char **argv) MPI_Comm_size(MPI_COMM_WORLD, &mpi_size); MPI_Comm_rank(MPI_COMM_WORLD, &mpi_rank); + /* setup default chunk-size. Make sure sizes are > 0 */ + chunkdim0 = (dim0+9)/10; + chunkdim1 = (dim1+9)/10; + while (--argc){ if (**(++argv) != '-'){ break; @@ -135,6 +143,18 @@ parse_options(int argc, char **argv) dim0 = atoi(*(++argv)); argc--; dim1 = atoi(*(++argv)); + /* set default chunkdim sizes too */ + chunkdim0 = (dim0+9)/10; + chunkdim1 = (dim1+9)/10; + break; + case 'c': /* chunk dimensions */ + if (--argc < 2){ + nerrors++; + return(1); + } + chunkdim0 = atoi(*(++argv)); + argc--; + chunkdim1 = atoi(*(++argv)); break; case 'h': /* print help message--return with nerrors set */ return(1); @@ -144,12 +164,17 @@ parse_options(int argc, char **argv) } } /*while*/ - /* check validity of dimension sizes */ + /* check validity of dimension and chunk sizes */ if (dim0 <= 0 || dim1 <= 0){ printf("Illegal dim sizes (%d, %d)\n", dim0, dim1); nerrors++; return(1); } + if (chunkdim0 <= 0 || chunkdim1 <= 0){ + printf("Illegal chunkdim sizes (%d, %d)\n", chunkdim0, chunkdim1); + nerrors++; + return(1); + } /* Make sure datasets can be divided into equal portions by the processes */ if ((dim0 % mpi_size) || (dim1 % mpi_size)){ diff --git a/testpar/testphdf5.h b/testpar/testphdf5.h index a8a6daf..dd4db92 100644 --- a/testpar/testphdf5.h +++ b/testpar/testphdf5.h @@ -64,6 +64,7 @@ typedef int DATATYPE; /* shared global variables */ extern int dim0, dim1; /* Dataset dimensions */ +extern int chunkdim0, chunkdim1; /* Chunk dimensions */ extern int nerrors; /* errors count */ extern int verbose; /* verbose, default as no. */ extern herr_t (*old_func)(void*); /* previous error handler */ -- cgit v0.12