diff options
Diffstat (limited to 'examples/ph5example.c')
-rw-r--r-- | examples/ph5example.c | 868 |
1 files changed, 418 insertions, 450 deletions
diff --git a/examples/ph5example.c b/examples/ph5example.c index d718479..a5f3c75 100644 --- a/examples/ph5example.c +++ b/examples/ph5example.c @@ -6,7 +6,7 @@ * This file is part of HDF5. The full HDF5 copyright notice, including * * terms governing use, modification, and redistribution, is contained in * * the COPYING file, which can be found at the root of the source code * - * distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases. * + * distribution tree, or in https://www.hdfgroup.org/licenses. * * If you do not have access to either file, you may request a copy from * * help@hdfgroup.org. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ @@ -46,69 +46,73 @@ /* Define some handy debugging shorthands, routines, ... */ /* debugging tools */ -#define MESG(x)\ - if (verbose) printf("%s\n", x);\ - -#define MPI_BANNER(mesg)\ - {printf("--------------------------------\n");\ - printf("Proc %d: ", mpi_rank); \ - printf("*** %s\n", mesg);\ - printf("--------------------------------\n");} +#define MESG(x) \ + if (verbose) \ + printf("%s\n", x); + +#define MPI_BANNER(mesg) \ + { \ + printf("--------------------------------\n"); \ + printf("Proc %d: ", mpi_rank); \ + printf("*** %s\n", mesg); \ + printf("--------------------------------\n"); \ + } -#define SYNC(comm)\ - {MPI_BANNER("doing a SYNC"); MPI_Barrier(comm); MPI_BANNER("SYNC DONE");} +#define SYNC(comm) \ + { \ + MPI_BANNER("doing a SYNC"); \ + MPI_Barrier(comm); \ + MPI_BANNER("SYNC DONE"); \ + } /* End of Define some handy debugging shorthands, routines, ... */ /* Constants definitions */ /* 24 is a multiple of 2, 3, 4, 6, 8, 12. Neat for parallel tests. */ -#define SPACE1_DIM1 24 -#define SPACE1_DIM2 24 -#define SPACE1_RANK 2 -#define DATASETNAME1 "Data1" -#define DATASETNAME2 "Data2" -#define DATASETNAME3 "Data3" +#define SPACE1_DIM1 24 +#define SPACE1_DIM2 24 +#define SPACE1_RANK 2 +#define DATASETNAME1 "Data1" +#define DATASETNAME2 "Data2" +#define DATASETNAME3 "Data3" /* hyperslab layout styles */ -#define BYROW 1 /* divide into slabs of rows */ -#define BYCOL 2 /* divide into blocks of columns */ - -#define PARAPREFIX "HDF5_PARAPREFIX" /* file prefix environment variable name */ +#define BYROW 1 /* divide into slabs of rows */ +#define BYCOL 2 /* divide into blocks of columns */ +#define PARAPREFIX "HDF5_PARAPREFIX" /* file prefix environment variable name */ /* dataset data type. Int's can be easily octo dumped. */ typedef int DATATYPE; /* global variables */ -int nerrors = 0; /* errors count */ +int nerrors = 0; /* errors count */ #ifndef PATH_MAX -#define PATH_MAX 512 -#endif /* !PATH_MAX */ -char testfiles[2][PATH_MAX]; +#define PATH_MAX 512 +#endif /* !PATH_MAX */ +char testfiles[2][PATH_MAX]; - -int mpi_size, mpi_rank; /* mpi variables */ +int mpi_size, mpi_rank; /* mpi variables */ /* option flags */ -int verbose = 0; /* verbose, default as no. */ -int doread=1; /* read test */ -int dowrite=1; /* write test */ -int docleanup=1; /* cleanup */ +int verbose = 0; /* verbose, default as no. */ +int doread = 1; /* read test */ +int dowrite = 1; /* write test */ +int docleanup = 1; /* cleanup */ /* Prototypes */ void slab_set(hsize_t start[], hsize_t count[], hsize_t stride[], int mode); -void dataset_fill(hsize_t start[], hsize_t count[], hsize_t stride[], DATATYPE * dataset); -void dataset_print(hsize_t start[], hsize_t count[], hsize_t stride[], DATATYPE * dataset); -int dataset_vrfy(hsize_t start[], hsize_t count[], hsize_t stride[], DATATYPE *dataset, DATATYPE *original); +void dataset_fill(hsize_t start[], hsize_t count[], hsize_t stride[], DATATYPE *dataset); +void dataset_print(hsize_t start[], hsize_t count[], hsize_t stride[], DATATYPE *dataset); +int dataset_vrfy(hsize_t start[], hsize_t count[], hsize_t stride[], DATATYPE *dataset, DATATYPE *original); void phdf5writeInd(char *filename); void phdf5readInd(char *filename); void phdf5writeAll(char *filename); void phdf5readAll(char *filename); void test_split_comm_access(char filenames[][PATH_MAX]); -int parse_options(int argc, char **argv); +int parse_options(int argc, char **argv); void usage(void); -int mkfilenames(char *prefix); +int mkfilenames(char *prefix); void cleanup(void); - /* * Setup the dimensions of the hyperslab. * Two modes--by rows or by columns. @@ -117,113 +121,110 @@ void cleanup(void); void slab_set(hsize_t start[], hsize_t count[], hsize_t stride[], int mode) { - switch (mode){ - case BYROW: - /* Each process takes a slabs of rows. */ - stride[0] = 1; - stride[1] = 1; - count[0] = SPACE1_DIM1/mpi_size; - count[1] = SPACE1_DIM2; - start[0] = mpi_rank*count[0]; - start[1] = 0; - break; - case BYCOL: - /* Each process takes a block of columns. */ - stride[0] = 1; - stride[1] = 1; - count[0] = SPACE1_DIM1; - count[1] = SPACE1_DIM2/mpi_size; - start[0] = 0; - start[1] = mpi_rank*count[1]; - break; - default: - /* Unknown mode. Set it to cover the whole dataset. */ - printf("unknown slab_set mode (%d)\n", mode); - stride[0] = 1; - stride[1] = 1; - count[0] = SPACE1_DIM1; - count[1] = SPACE1_DIM2; - start[0] = 0; - start[1] = 0; - break; + switch (mode) { + case BYROW: + /* Each process takes a slabs of rows. */ + stride[0] = 1; + stride[1] = 1; + count[0] = SPACE1_DIM1 / mpi_size; + count[1] = SPACE1_DIM2; + start[0] = mpi_rank * count[0]; + start[1] = 0; + break; + case BYCOL: + /* Each process takes a block of columns. */ + stride[0] = 1; + stride[1] = 1; + count[0] = SPACE1_DIM1; + count[1] = SPACE1_DIM2 / mpi_size; + start[0] = 0; + start[1] = mpi_rank * count[1]; + break; + default: + /* Unknown mode. Set it to cover the whole dataset. */ + printf("unknown slab_set mode (%d)\n", mode); + stride[0] = 1; + stride[1] = 1; + count[0] = SPACE1_DIM1; + count[1] = SPACE1_DIM2; + start[0] = 0; + start[1] = 0; + break; } } - /* * Fill the dataset with trivial data for testing. * Assume dimension rank is 2 and data is stored contiguous. */ void -dataset_fill(hsize_t start[], hsize_t count[], hsize_t stride[], DATATYPE * dataset) +dataset_fill(hsize_t start[], hsize_t count[], hsize_t stride[], DATATYPE *dataset) { DATATYPE *dataptr = dataset; - hsize_t i, j; + hsize_t i, j; /* put some trivial data in the data_array */ - for (i=0; i < count[0]; i++){ - for (j=0; j < count[1]; j++){ - *dataptr++ = (i*stride[0]+start[0])*100 + (j*stride[1]+start[1]+1); - } + for (i = 0; i < count[0]; i++) { + for (j = 0; j < count[1]; j++) { + *dataptr++ = (i * stride[0] + start[0]) * 100 + (j * stride[1] + start[1] + 1); + } } } - /* * Print the content of the dataset. */ -void dataset_print(hsize_t start[], hsize_t count[], hsize_t stride[], DATATYPE * dataset) +void +dataset_print(hsize_t start[], hsize_t count[], hsize_t stride[], DATATYPE *dataset) { DATATYPE *dataptr = dataset; - hsize_t i, j; + hsize_t i, j; /* print the slab read */ - for (i=0; i < count[0]; i++){ - printf("Row %lu: ", (unsigned long)(i*stride[0]+start[0])); - for (j=0; j < count[1]; j++){ - printf("%03d ", *dataptr++); - } - printf("\n"); + for (i = 0; i < count[0]; i++) { + printf("Row %lu: ", (unsigned long)(i * stride[0] + start[0])); + for (j = 0; j < count[1]; j++) { + printf("%03d ", *dataptr++); + } + printf("\n"); } } - /* * Print the content of the dataset. */ -int dataset_vrfy(hsize_t start[], hsize_t count[], hsize_t stride[], DATATYPE *dataset, DATATYPE *original) +int +dataset_vrfy(hsize_t start[], hsize_t count[], hsize_t stride[], DATATYPE *dataset, DATATYPE *original) { -#define MAX_ERR_REPORT 10 /* Maximum number of errors reported */ +#define MAX_ERR_REPORT 10 /* Maximum number of errors reported */ hsize_t i, j; - int nerr; + int nerr; /* print it if verbose */ if (verbose) - dataset_print(start, count, stride, dataset); + dataset_print(start, count, stride, dataset); nerr = 0; - for (i=0; i < count[0]; i++){ - for (j=0; j < count[1]; j++){ - if (*dataset++ != *original++){ - nerr++; - if (nerr <= MAX_ERR_REPORT){ - printf("Dataset Verify failed at [%lu][%lu](row %lu, col %lu): expect %d, got %d\n", - (unsigned long)i, (unsigned long)j, - (unsigned long)(i*stride[0]+start[0]), (unsigned long)(j*stride[1]+start[1]), - *(dataset-1), *(original-1)); - } - } - } + for (i = 0; i < count[0]; i++) { + for (j = 0; j < count[1]; j++) { + if (*dataset++ != *original++) { + nerr++; + if (nerr <= MAX_ERR_REPORT) { + printf("Dataset Verify failed at [%lu][%lu](row %lu, col %lu): expect %d, got %d\n", + (unsigned long)i, (unsigned long)j, (unsigned long)(i * stride[0] + start[0]), + (unsigned long)(j * stride[1] + start[1]), *(dataset - 1), *(original - 1)); + } + } + } } if (nerr > MAX_ERR_REPORT) - printf("[more errors ...]\n"); + printf("[more errors ...]\n"); if (nerr) - printf("%d errors found in dataset_vrfy\n", nerr); - return(nerr); + printf("%d errors found in dataset_vrfy\n", nerr); + return (nerr); } - /* * Example of using the parallel HDF5 library to create two datasets * in one HDF5 files with parallel MPIO access support. @@ -235,32 +236,31 @@ int dataset_vrfy(hsize_t start[], hsize_t count[], hsize_t stride[], DATATYPE *d void phdf5writeInd(char *filename) { - hid_t fid1; /* HDF5 file IDs */ - hid_t acc_tpl1; /* File access templates */ - hid_t sid1; /* Dataspace ID */ - hid_t file_dataspace; /* File dataspace ID */ - hid_t mem_dataspace; /* memory dataspace ID */ - hid_t dataset1, dataset2; /* Dataset ID */ - hsize_t dims1[SPACE1_RANK] = - {SPACE1_DIM1,SPACE1_DIM2}; /* dataspace dim sizes */ - DATATYPE data_array1[SPACE1_DIM1][SPACE1_DIM2]; /* data buffer */ + hid_t fid1; /* HDF5 file IDs */ + hid_t acc_tpl1; /* File access templates */ + hid_t sid1; /* Dataspace ID */ + hid_t file_dataspace; /* File dataspace ID */ + hid_t mem_dataspace; /* memory dataspace ID */ + hid_t dataset1, dataset2; /* Dataset ID */ + hsize_t dims1[SPACE1_RANK] = {SPACE1_DIM1, SPACE1_DIM2}; /* dataspace dim sizes */ + DATATYPE data_array1[SPACE1_DIM1][SPACE1_DIM2]; /* data buffer */ - hsize_t start[SPACE1_RANK]; /* for hyperslab setting */ - hsize_t count[SPACE1_RANK], stride[SPACE1_RANK]; /* for hyperslab setting */ + hsize_t start[SPACE1_RANK]; /* for hyperslab setting */ + hsize_t count[SPACE1_RANK], stride[SPACE1_RANK]; /* for hyperslab setting */ - herr_t ret; /* Generic return value */ + herr_t ret; /* Generic return value */ MPI_Comm comm = MPI_COMM_WORLD; MPI_Info info = MPI_INFO_NULL; if (verbose) - printf("Independent write test on file %s\n", filename); + printf("Independent write test on file %s\n", filename); /* ------------------- * START AN HDF5 FILE * -------------------*/ /* setup file access template with parallel IO access. */ - acc_tpl1 = H5Pcreate (H5P_FILE_ACCESS); + acc_tpl1 = H5Pcreate(H5P_FILE_ACCESS); assert(acc_tpl1 != FAIL); MESG("H5Pcreate access succeed"); /* set Parallel access with communicator */ @@ -277,70 +277,60 @@ phdf5writeInd(char *filename) ret = H5Pclose(acc_tpl1); assert(ret != FAIL); - /* -------------------------- * Define the dimensions of the overall datasets * and the slabs local to the MPI process. * ------------------------- */ /* setup dimensionality object */ sid1 = H5Screate_simple(SPACE1_RANK, dims1, NULL); - assert (sid1 != FAIL); + assert(sid1 != FAIL); MESG("H5Screate_simple succeed"); - /* create a dataset collectively */ - dataset1 = H5Dcreate2(fid1, DATASETNAME1, H5T_NATIVE_INT, sid1, - H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); + dataset1 = H5Dcreate2(fid1, DATASETNAME1, H5T_NATIVE_INT, sid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); assert(dataset1 != FAIL); MESG("H5Dcreate2 succeed"); /* create another dataset collectively */ - dataset2 = H5Dcreate2(fid1, DATASETNAME2, H5T_NATIVE_INT, sid1, - H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); + dataset2 = H5Dcreate2(fid1, DATASETNAME2, H5T_NATIVE_INT, sid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); assert(dataset2 != FAIL); MESG("H5Dcreate2 succeed"); - - /* set up dimensions of the slab this process accesses */ - start[0] = mpi_rank*SPACE1_DIM1/mpi_size; - start[1] = 0; - count[0] = SPACE1_DIM1/mpi_size; - count[1] = SPACE1_DIM2; + start[0] = mpi_rank * SPACE1_DIM1 / mpi_size; + start[1] = 0; + count[0] = SPACE1_DIM1 / mpi_size; + count[1] = SPACE1_DIM2; stride[0] = 1; - stride[1] =1; -if (verbose) - printf("start[]=(%lu,%lu), count[]=(%lu,%lu), total datapoints=%lu\n", - (unsigned long)start[0], (unsigned long)start[1], - (unsigned long)count[0], (unsigned long)count[1], - (unsigned long)(count[0]*count[1])); + stride[1] = 1; + if (verbose) + printf("start[]=(%lu,%lu), count[]=(%lu,%lu), total datapoints=%lu\n", (unsigned long)start[0], + (unsigned long)start[1], (unsigned long)count[0], (unsigned long)count[1], + (unsigned long)(count[0] * count[1])); /* put some trivial data in the data_array */ dataset_fill(start, count, stride, &data_array1[0][0]); MESG("data_array initialized"); /* create a file dataspace independently */ - file_dataspace = H5Dget_space (dataset1); + file_dataspace = H5Dget_space(dataset1); assert(file_dataspace != FAIL); MESG("H5Dget_space succeed"); - ret=H5Sselect_hyperslab(file_dataspace, H5S_SELECT_SET, start, stride, - count, NULL); + ret = H5Sselect_hyperslab(file_dataspace, H5S_SELECT_SET, start, stride, count, NULL); assert(ret != FAIL); MESG("H5Sset_hyperslab succeed"); /* create a memory dataspace independently */ - mem_dataspace = H5Screate_simple (SPACE1_RANK, count, NULL); - assert (mem_dataspace != FAIL); + mem_dataspace = H5Screate_simple(SPACE1_RANK, count, NULL); + assert(mem_dataspace != FAIL); /* write data independently */ - ret = H5Dwrite(dataset1, H5T_NATIVE_INT, mem_dataspace, file_dataspace, - H5P_DEFAULT, data_array1); + ret = H5Dwrite(dataset1, H5T_NATIVE_INT, mem_dataspace, file_dataspace, H5P_DEFAULT, data_array1); assert(ret != FAIL); MESG("H5Dwrite succeed"); /* write data independently */ - ret = H5Dwrite(dataset2, H5T_NATIVE_INT, mem_dataspace, file_dataspace, - H5P_DEFAULT, data_array1); + ret = H5Dwrite(dataset2, H5T_NATIVE_INT, mem_dataspace, file_dataspace, H5P_DEFAULT, data_array1); assert(ret != FAIL); MESG("H5Dwrite succeed"); @@ -348,10 +338,10 @@ if (verbose) H5Sclose(file_dataspace); /* close dataset collectively */ - ret=H5Dclose(dataset1); + ret = H5Dclose(dataset1); assert(ret != FAIL); MESG("H5Dclose1 succeed"); - ret=H5Dclose(dataset2); + ret = H5Dclose(dataset2); assert(ret != FAIL); MESG("H5Dclose2 succeed"); @@ -366,39 +356,38 @@ if (verbose) void phdf5readInd(char *filename) { - hid_t fid1; /* HDF5 file IDs */ - hid_t acc_tpl1; /* File access templates */ - hid_t file_dataspace; /* File dataspace ID */ - hid_t mem_dataspace; /* memory dataspace ID */ - hid_t dataset1, dataset2; /* Dataset ID */ - DATATYPE data_array1[SPACE1_DIM1][SPACE1_DIM2]; /* data buffer */ - DATATYPE data_origin1[SPACE1_DIM1][SPACE1_DIM2]; /* expected data buffer */ + hid_t fid1; /* HDF5 file IDs */ + hid_t acc_tpl1; /* File access templates */ + hid_t file_dataspace; /* File dataspace ID */ + hid_t mem_dataspace; /* memory dataspace ID */ + hid_t dataset1, dataset2; /* Dataset ID */ + DATATYPE data_array1[SPACE1_DIM1][SPACE1_DIM2]; /* data buffer */ + DATATYPE data_origin1[SPACE1_DIM1][SPACE1_DIM2]; /* expected data buffer */ - hsize_t start[SPACE1_RANK]; /* for hyperslab setting */ - hsize_t count[SPACE1_RANK], stride[SPACE1_RANK]; /* for hyperslab setting */ + hsize_t start[SPACE1_RANK]; /* for hyperslab setting */ + hsize_t count[SPACE1_RANK], stride[SPACE1_RANK]; /* for hyperslab setting */ - herr_t ret; /* Generic return value */ + herr_t ret; /* Generic return value */ MPI_Comm comm = MPI_COMM_WORLD; MPI_Info info = MPI_INFO_NULL; if (verbose) - printf("Independent read test on file %s\n", filename); + printf("Independent read test on file %s\n", filename); /* setup file access template */ - acc_tpl1 = H5Pcreate (H5P_FILE_ACCESS); + acc_tpl1 = H5Pcreate(H5P_FILE_ACCESS); assert(acc_tpl1 != FAIL); /* set Parallel access with communicator */ ret = H5Pset_fapl_mpio(acc_tpl1, comm, info); assert(ret != FAIL); - /* open the file collectively */ - fid1=H5Fopen(filename,H5F_ACC_RDWR,acc_tpl1); + fid1 = H5Fopen(filename, H5F_ACC_RDWR, acc_tpl1); assert(fid1 != FAIL); /* Release file-access template */ - ret=H5Pclose(acc_tpl1); + ret = H5Pclose(acc_tpl1); assert(ret != FAIL); /* open the dataset1 collectively */ @@ -409,37 +398,33 @@ phdf5readInd(char *filename) dataset2 = H5Dopen2(fid1, DATASETNAME1, H5P_DEFAULT); assert(dataset2 != FAIL); - /* set up dimensions of the slab this process accesses */ - start[0] = mpi_rank*SPACE1_DIM1/mpi_size; - start[1] = 0; - count[0] = SPACE1_DIM1/mpi_size; - count[1] = SPACE1_DIM2; + start[0] = mpi_rank * SPACE1_DIM1 / mpi_size; + start[1] = 0; + count[0] = SPACE1_DIM1 / mpi_size; + count[1] = SPACE1_DIM2; stride[0] = 1; - stride[1] =1; -if (verbose) - printf("start[]=(%lu,%lu), count[]=(%lu,%lu), total datapoints=%lu\n", - (unsigned long)start[0], (unsigned long)start[1], - (unsigned long)count[0], (unsigned long)count[1], - (unsigned long)(count[0]*count[1])); + stride[1] = 1; + if (verbose) + printf("start[]=(%lu,%lu), count[]=(%lu,%lu), total datapoints=%lu\n", (unsigned long)start[0], + (unsigned long)start[1], (unsigned long)count[0], (unsigned long)count[1], + (unsigned long)(count[0] * count[1])); /* create a file dataspace independently */ - file_dataspace = H5Dget_space (dataset1); + file_dataspace = H5Dget_space(dataset1); assert(file_dataspace != FAIL); - ret=H5Sselect_hyperslab(file_dataspace, H5S_SELECT_SET, start, stride, - count, NULL); + ret = H5Sselect_hyperslab(file_dataspace, H5S_SELECT_SET, start, stride, count, NULL); assert(ret != FAIL); /* create a memory dataspace independently */ - mem_dataspace = H5Screate_simple (SPACE1_RANK, count, NULL); - assert (mem_dataspace != FAIL); + mem_dataspace = H5Screate_simple(SPACE1_RANK, count, NULL); + assert(mem_dataspace != FAIL); /* fill dataset with test data */ dataset_fill(start, count, stride, &data_origin1[0][0]); /* read data independently */ - ret = H5Dread(dataset1, H5T_NATIVE_INT, mem_dataspace, file_dataspace, - H5P_DEFAULT, data_array1); + ret = H5Dread(dataset1, H5T_NATIVE_INT, mem_dataspace, file_dataspace, H5P_DEFAULT, data_array1); assert(ret != FAIL); /* verify the read data with original expected data */ @@ -447,8 +432,7 @@ if (verbose) assert(ret != FAIL); /* read data independently */ - ret = H5Dread(dataset2, H5T_NATIVE_INT, mem_dataspace, file_dataspace, - H5P_DEFAULT, data_array1); + ret = H5Dread(dataset2, H5T_NATIVE_INT, mem_dataspace, file_dataspace, H5P_DEFAULT, data_array1); assert(ret != FAIL); /* verify the read data with original expected data */ @@ -456,9 +440,9 @@ if (verbose) assert(ret == 0); /* close dataset collectively */ - ret=H5Dclose(dataset1); + ret = H5Dclose(dataset1); assert(ret != FAIL); - ret=H5Dclose(dataset2); + ret = H5Dclose(dataset2); assert(ret != FAIL); /* release all IDs created */ @@ -468,7 +452,6 @@ if (verbose) H5Fclose(fid1); } - /* * Example of using the parallel HDF5 library to create two datasets * in one HDF5 file with collective parallel access support. @@ -481,33 +464,32 @@ if (verbose) void phdf5writeAll(char *filename) { - hid_t fid1; /* HDF5 file IDs */ - hid_t acc_tpl1; /* File access templates */ - hid_t xfer_plist; /* Dataset transfer properties list */ - hid_t sid1; /* Dataspace ID */ - hid_t file_dataspace; /* File dataspace ID */ - hid_t mem_dataspace; /* memory dataspace ID */ - hid_t dataset1, dataset2; /* Dataset ID */ - hsize_t dims1[SPACE1_RANK] = - {SPACE1_DIM1,SPACE1_DIM2}; /* dataspace dim sizes */ - DATATYPE data_array1[SPACE1_DIM1][SPACE1_DIM2]; /* data buffer */ - - hsize_t start[SPACE1_RANK]; /* for hyperslab setting */ - hsize_t count[SPACE1_RANK], stride[SPACE1_RANK]; /* for hyperslab setting */ - - herr_t ret; /* Generic return value */ + hid_t fid1; /* HDF5 file IDs */ + hid_t acc_tpl1; /* File access templates */ + hid_t xfer_plist; /* Dataset transfer properties list */ + hid_t sid1; /* Dataspace ID */ + hid_t file_dataspace; /* File dataspace ID */ + hid_t mem_dataspace; /* memory dataspace ID */ + hid_t dataset1, dataset2; /* Dataset ID */ + hsize_t dims1[SPACE1_RANK] = {SPACE1_DIM1, SPACE1_DIM2}; /* dataspace dim sizes */ + DATATYPE data_array1[SPACE1_DIM1][SPACE1_DIM2]; /* data buffer */ + + hsize_t start[SPACE1_RANK]; /* for hyperslab setting */ + hsize_t count[SPACE1_RANK], stride[SPACE1_RANK]; /* for hyperslab setting */ + + herr_t ret; /* Generic return value */ MPI_Comm comm = MPI_COMM_WORLD; MPI_Info info = MPI_INFO_NULL; if (verbose) - printf("Collective write test on file %s\n", filename); + printf("Collective write test on file %s\n", filename); /* ------------------- * START AN HDF5 FILE * -------------------*/ /* setup file access template with parallel IO access. */ - acc_tpl1 = H5Pcreate (H5P_FILE_ACCESS); + acc_tpl1 = H5Pcreate(H5P_FILE_ACCESS); assert(acc_tpl1 != FAIL); MESG("H5Pcreate access succeed"); /* set Parallel access with communicator */ @@ -516,25 +498,23 @@ phdf5writeAll(char *filename) MESG("H5Pset_fapl_mpio succeed"); /* create the file collectively */ - fid1=H5Fcreate(filename,H5F_ACC_TRUNC,H5P_DEFAULT,acc_tpl1); + fid1 = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, acc_tpl1); assert(fid1 != FAIL); MESG("H5Fcreate succeed"); /* Release file-access template */ - ret=H5Pclose(acc_tpl1); + ret = H5Pclose(acc_tpl1); assert(ret != FAIL); - /* -------------------------- * Define the dimensions of the overall datasets * and create the dataset * ------------------------- */ /* setup dimensionality object */ - sid1 = H5Screate_simple (SPACE1_RANK, dims1, NULL); - assert (sid1 != FAIL); + sid1 = H5Screate_simple(SPACE1_RANK, dims1, NULL); + assert(sid1 != FAIL); MESG("H5Screate_simple succeed"); - /* create a dataset collectively */ dataset1 = H5Dcreate2(fid1, DATASETNAME1, H5T_NATIVE_INT, sid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); assert(dataset1 != FAIL); @@ -551,43 +531,40 @@ phdf5writeAll(char *filename) /* Dataset1: each process takes a block of rows. */ slab_set(start, count, stride, BYROW); -if (verbose) - printf("start[]=(%lu,%lu), count[]=(%lu,%lu), total datapoints=%lu\n", - (unsigned long)start[0], (unsigned long)start[1], - (unsigned long)count[0], (unsigned long)count[1], - (unsigned long)(count[0]*count[1])); + if (verbose) + printf("start[]=(%lu,%lu), count[]=(%lu,%lu), total datapoints=%lu\n", (unsigned long)start[0], + (unsigned long)start[1], (unsigned long)count[0], (unsigned long)count[1], + (unsigned long)(count[0] * count[1])); /* create a file dataspace independently */ - file_dataspace = H5Dget_space (dataset1); + file_dataspace = H5Dget_space(dataset1); assert(file_dataspace != FAIL); MESG("H5Dget_space succeed"); - ret=H5Sselect_hyperslab(file_dataspace, H5S_SELECT_SET, start, stride, - count, NULL); + ret = H5Sselect_hyperslab(file_dataspace, H5S_SELECT_SET, start, stride, count, NULL); assert(ret != FAIL); MESG("H5Sset_hyperslab succeed"); /* create a memory dataspace independently */ - mem_dataspace = H5Screate_simple (SPACE1_RANK, count, NULL); - assert (mem_dataspace != FAIL); + mem_dataspace = H5Screate_simple(SPACE1_RANK, count, NULL); + assert(mem_dataspace != FAIL); /* fill the local slab with some trivial data */ dataset_fill(start, count, stride, &data_array1[0][0]); MESG("data_array initialized"); - if (verbose){ - MESG("data_array created"); - dataset_print(start, count, stride, &data_array1[0][0]); + if (verbose) { + MESG("data_array created"); + dataset_print(start, count, stride, &data_array1[0][0]); } /* set up the collective transfer properties list */ - xfer_plist = H5Pcreate (H5P_DATASET_XFER); + xfer_plist = H5Pcreate(H5P_DATASET_XFER); assert(xfer_plist != FAIL); - ret=H5Pset_dxpl_mpio(xfer_plist, H5FD_MPIO_COLLECTIVE); + ret = H5Pset_dxpl_mpio(xfer_plist, H5FD_MPIO_COLLECTIVE); assert(ret != FAIL); MESG("H5Pcreate xfer succeed"); /* write data collectively */ - ret = H5Dwrite(dataset1, H5T_NATIVE_INT, mem_dataspace, file_dataspace, - xfer_plist, data_array1); + ret = H5Dwrite(dataset1, H5T_NATIVE_INT, mem_dataspace, file_dataspace, xfer_plist, data_array1); assert(ret != FAIL); MESG("H5Dwrite succeed"); @@ -600,51 +577,48 @@ if (verbose) /* Dataset2: each process takes a block of columns. */ slab_set(start, count, stride, BYCOL); -if (verbose) - printf("start[]=(%lu,%lu), count[]=(%lu,%lu), total datapoints=%lu\n", - (unsigned long)start[0], (unsigned long)start[1], - (unsigned long)count[0], (unsigned long)count[1], - (unsigned long)(count[0]*count[1])); + if (verbose) + printf("start[]=(%lu,%lu), count[]=(%lu,%lu), total datapoints=%lu\n", (unsigned long)start[0], + (unsigned long)start[1], (unsigned long)count[0], (unsigned long)count[1], + (unsigned long)(count[0] * count[1])); /* put some trivial data in the data_array */ dataset_fill(start, count, stride, &data_array1[0][0]); MESG("data_array initialized"); - if (verbose){ - MESG("data_array created"); - dataset_print(start, count, stride, &data_array1[0][0]); + if (verbose) { + MESG("data_array created"); + dataset_print(start, count, stride, &data_array1[0][0]); } /* create a file dataspace independently */ - file_dataspace = H5Dget_space (dataset1); + file_dataspace = H5Dget_space(dataset1); assert(file_dataspace != FAIL); MESG("H5Dget_space succeed"); - ret=H5Sselect_hyperslab(file_dataspace, H5S_SELECT_SET, start, stride, - count, NULL); + ret = H5Sselect_hyperslab(file_dataspace, H5S_SELECT_SET, start, stride, count, NULL); assert(ret != FAIL); MESG("H5Sset_hyperslab succeed"); /* create a memory dataspace independently */ - mem_dataspace = H5Screate_simple (SPACE1_RANK, count, NULL); - assert (mem_dataspace != FAIL); + mem_dataspace = H5Screate_simple(SPACE1_RANK, count, NULL); + assert(mem_dataspace != FAIL); /* fill the local slab with some trivial data */ dataset_fill(start, count, stride, &data_array1[0][0]); MESG("data_array initialized"); - if (verbose){ - MESG("data_array created"); - dataset_print(start, count, stride, &data_array1[0][0]); + if (verbose) { + MESG("data_array created"); + dataset_print(start, count, stride, &data_array1[0][0]); } /* set up the collective transfer properties list */ - xfer_plist = H5Pcreate (H5P_DATASET_XFER); + xfer_plist = H5Pcreate(H5P_DATASET_XFER); assert(xfer_plist != FAIL); - ret=H5Pset_dxpl_mpio(xfer_plist, H5FD_MPIO_COLLECTIVE); + ret = H5Pset_dxpl_mpio(xfer_plist, H5FD_MPIO_COLLECTIVE); assert(ret != FAIL); MESG("H5Pcreate xfer succeed"); /* write data independently */ - ret = H5Dwrite(dataset2, H5T_NATIVE_INT, mem_dataspace, file_dataspace, - xfer_plist, data_array1); + ret = H5Dwrite(dataset2, H5T_NATIVE_INT, mem_dataspace, file_dataspace, xfer_plist, data_array1); assert(ret != FAIL); MESG("H5Dwrite succeed"); @@ -653,14 +627,13 @@ if (verbose) H5Sclose(mem_dataspace); H5Pclose(xfer_plist); - /* * All writes completed. Close datasets collectively */ - ret=H5Dclose(dataset1); + ret = H5Dclose(dataset1); assert(ret != FAIL); MESG("H5Dclose1 succeed"); - ret=H5Dclose(dataset2); + ret = H5Dclose(dataset2); assert(ret != FAIL); MESG("H5Dclose2 succeed"); @@ -683,31 +656,31 @@ if (verbose) void phdf5readAll(char *filename) { - hid_t fid1; /* HDF5 file IDs */ - hid_t acc_tpl1; /* File access templates */ - hid_t xfer_plist; /* Dataset transfer properties list */ - hid_t file_dataspace; /* File dataspace ID */ - hid_t mem_dataspace; /* memory dataspace ID */ - hid_t dataset1, dataset2; /* Dataset ID */ - DATATYPE data_array1[SPACE1_DIM1][SPACE1_DIM2]; /* data buffer */ - DATATYPE data_origin1[SPACE1_DIM1][SPACE1_DIM2]; /* expected data buffer */ + hid_t fid1; /* HDF5 file IDs */ + hid_t acc_tpl1; /* File access templates */ + hid_t xfer_plist; /* Dataset transfer properties list */ + hid_t file_dataspace; /* File dataspace ID */ + hid_t mem_dataspace; /* memory dataspace ID */ + hid_t dataset1, dataset2; /* Dataset ID */ + DATATYPE data_array1[SPACE1_DIM1][SPACE1_DIM2]; /* data buffer */ + DATATYPE data_origin1[SPACE1_DIM1][SPACE1_DIM2]; /* expected data buffer */ - hsize_t start[SPACE1_RANK]; /* for hyperslab setting */ - hsize_t count[SPACE1_RANK], stride[SPACE1_RANK]; /* for hyperslab setting */ + hsize_t start[SPACE1_RANK]; /* for hyperslab setting */ + hsize_t count[SPACE1_RANK], stride[SPACE1_RANK]; /* for hyperslab setting */ - herr_t ret; /* Generic return value */ + herr_t ret; /* Generic return value */ MPI_Comm comm = MPI_COMM_WORLD; MPI_Info info = MPI_INFO_NULL; if (verbose) - printf("Collective read test on file %s\n", filename); + printf("Collective read test on file %s\n", filename); /* ------------------- * OPEN AN HDF5 FILE * -------------------*/ /* setup file access template with parallel IO access. */ - acc_tpl1 = H5Pcreate (H5P_FILE_ACCESS); + acc_tpl1 = H5Pcreate(H5P_FILE_ACCESS); assert(acc_tpl1 != FAIL); MESG("H5Pcreate access succeed"); /* set Parallel access with communicator */ @@ -716,15 +689,14 @@ phdf5readAll(char *filename) MESG("H5Pset_fapl_mpio succeed"); /* open the file collectively */ - fid1=H5Fopen(filename,H5F_ACC_RDWR,acc_tpl1); + fid1 = H5Fopen(filename, H5F_ACC_RDWR, acc_tpl1); assert(fid1 != FAIL); MESG("H5Fopen succeed"); /* Release file-access template */ - ret=H5Pclose(acc_tpl1); + ret = H5Pclose(acc_tpl1); assert(ret != FAIL); - /* -------------------------- * Open the datasets in it * ------------------------- */ @@ -744,43 +716,40 @@ phdf5readAll(char *filename) /* Dataset1: each process takes a block of columns. */ slab_set(start, count, stride, BYCOL); -if (verbose) - printf("start[]=(%lu,%lu), count[]=(%lu,%lu), total datapoints=%lu\n", - (unsigned long)start[0], (unsigned long)start[1], - (unsigned long)count[0], (unsigned long)count[1], - (unsigned long)(count[0]*count[1])); + if (verbose) + printf("start[]=(%lu,%lu), count[]=(%lu,%lu), total datapoints=%lu\n", (unsigned long)start[0], + (unsigned long)start[1], (unsigned long)count[0], (unsigned long)count[1], + (unsigned long)(count[0] * count[1])); /* create a file dataspace independently */ - file_dataspace = H5Dget_space (dataset1); + file_dataspace = H5Dget_space(dataset1); assert(file_dataspace != FAIL); MESG("H5Dget_space succeed"); - ret=H5Sselect_hyperslab(file_dataspace, H5S_SELECT_SET, start, stride, - count, NULL); + ret = H5Sselect_hyperslab(file_dataspace, H5S_SELECT_SET, start, stride, count, NULL); assert(ret != FAIL); MESG("H5Sset_hyperslab succeed"); /* create a memory dataspace independently */ - mem_dataspace = H5Screate_simple (SPACE1_RANK, count, NULL); - assert (mem_dataspace != FAIL); + mem_dataspace = H5Screate_simple(SPACE1_RANK, count, NULL); + assert(mem_dataspace != FAIL); /* fill dataset with test data */ dataset_fill(start, count, stride, &data_origin1[0][0]); MESG("data_array initialized"); - if (verbose){ - MESG("data_array created"); - dataset_print(start, count, stride, &data_array1[0][0]); + if (verbose) { + MESG("data_array created"); + dataset_print(start, count, stride, &data_array1[0][0]); } /* set up the collective transfer properties list */ - xfer_plist = H5Pcreate (H5P_DATASET_XFER); + xfer_plist = H5Pcreate(H5P_DATASET_XFER); assert(xfer_plist != FAIL); - ret=H5Pset_dxpl_mpio(xfer_plist, H5FD_MPIO_COLLECTIVE); + ret = H5Pset_dxpl_mpio(xfer_plist, H5FD_MPIO_COLLECTIVE); assert(ret != FAIL); MESG("H5Pcreate xfer succeed"); /* read data collectively */ - ret = H5Dread(dataset1, H5T_NATIVE_INT, mem_dataspace, file_dataspace, - xfer_plist, data_array1); + ret = H5Dread(dataset1, H5T_NATIVE_INT, mem_dataspace, file_dataspace, xfer_plist, data_array1); assert(ret != FAIL); MESG("H5Dread succeed"); @@ -797,43 +766,40 @@ if (verbose) /* Dataset2: each process takes a block of rows. */ slab_set(start, count, stride, BYROW); -if (verbose) - printf("start[]=(%lu,%lu), count[]=(%lu,%lu), total datapoints=%lu\n", - (unsigned long)start[0], (unsigned long)start[1], - (unsigned long)count[0], (unsigned long)count[1], - (unsigned long)(count[0]*count[1])); + if (verbose) + printf("start[]=(%lu,%lu), count[]=(%lu,%lu), total datapoints=%lu\n", (unsigned long)start[0], + (unsigned long)start[1], (unsigned long)count[0], (unsigned long)count[1], + (unsigned long)(count[0] * count[1])); /* create a file dataspace independently */ - file_dataspace = H5Dget_space (dataset1); + file_dataspace = H5Dget_space(dataset1); assert(file_dataspace != FAIL); MESG("H5Dget_space succeed"); - ret=H5Sselect_hyperslab(file_dataspace, H5S_SELECT_SET, start, stride, - count, NULL); + ret = H5Sselect_hyperslab(file_dataspace, H5S_SELECT_SET, start, stride, count, NULL); assert(ret != FAIL); MESG("H5Sset_hyperslab succeed"); /* create a memory dataspace independently */ - mem_dataspace = H5Screate_simple (SPACE1_RANK, count, NULL); - assert (mem_dataspace != FAIL); + mem_dataspace = H5Screate_simple(SPACE1_RANK, count, NULL); + assert(mem_dataspace != FAIL); /* fill dataset with test data */ dataset_fill(start, count, stride, &data_origin1[0][0]); MESG("data_array initialized"); - if (verbose){ - MESG("data_array created"); - dataset_print(start, count, stride, &data_array1[0][0]); + if (verbose) { + MESG("data_array created"); + dataset_print(start, count, stride, &data_array1[0][0]); } /* set up the collective transfer properties list */ - xfer_plist = H5Pcreate (H5P_DATASET_XFER); + xfer_plist = H5Pcreate(H5P_DATASET_XFER); assert(xfer_plist != FAIL); - ret=H5Pset_dxpl_mpio(xfer_plist, H5FD_MPIO_COLLECTIVE); + ret = H5Pset_dxpl_mpio(xfer_plist, H5FD_MPIO_COLLECTIVE); assert(ret != FAIL); MESG("H5Pcreate xfer succeed"); /* read data independently */ - ret = H5Dread(dataset2, H5T_NATIVE_INT, mem_dataspace, file_dataspace, - xfer_plist, data_array1); + ret = H5Dread(dataset2, H5T_NATIVE_INT, mem_dataspace, file_dataspace, xfer_plist, data_array1); assert(ret != FAIL); MESG("H5Dread succeed"); @@ -846,14 +812,13 @@ if (verbose) H5Sclose(mem_dataspace); H5Pclose(xfer_plist); - /* * All reads completed. Close datasets collectively */ - ret=H5Dclose(dataset1); + ret = H5Dclose(dataset1); assert(ret != FAIL); MESG("H5Dclose1 succeed"); - ret=H5Dclose(dataset2); + ret = H5Dclose(dataset2); assert(ret != FAIL); MESG("H5Dclose2 succeed"); @@ -877,51 +842,51 @@ test_split_comm_access(char filenames[][PATH_MAX]) { MPI_Comm comm; MPI_Info info = MPI_INFO_NULL; - int color, mrc; - int newrank, newprocs; - hid_t fid; /* file IDs */ - hid_t acc_tpl; /* File access properties */ - herr_t ret; /* generic return value */ + int color, mrc; + int newrank, newprocs; + hid_t fid; /* file IDs */ + hid_t acc_tpl; /* File access properties */ + herr_t ret; /* generic return value */ if (verbose) - printf("Independent write test on file %s %s\n", - filenames[0], filenames[1]); - - color = mpi_rank%2; - mrc = MPI_Comm_split (MPI_COMM_WORLD, color, mpi_rank, &comm); - assert(mrc==MPI_SUCCESS); - MPI_Comm_size(comm,&newprocs); - MPI_Comm_rank(comm,&newrank); - - if (color){ - /* odd-rank processes */ - mrc = MPI_Barrier(comm); - assert(mrc==MPI_SUCCESS); - }else{ - /* even-rank processes */ - /* setup file access template */ - acc_tpl = H5Pcreate (H5P_FILE_ACCESS); - assert(acc_tpl != FAIL); - - /* set Parallel access with communicator */ - ret = H5Pset_fapl_mpio(acc_tpl, comm, info); - assert(ret != FAIL); - - /* create the file collectively */ - fid=H5Fcreate(filenames[color],H5F_ACC_TRUNC,H5P_DEFAULT,acc_tpl); - assert(fid != FAIL); - MESG("H5Fcreate succeed"); - - /* Release file-access template */ - ret=H5Pclose(acc_tpl); - assert(ret != FAIL); - - ret=H5Fclose(fid); - assert(ret != FAIL); + printf("Independent write test on file %s %s\n", filenames[0], filenames[1]); + + color = mpi_rank % 2; + mrc = MPI_Comm_split(MPI_COMM_WORLD, color, mpi_rank, &comm); + assert(mrc == MPI_SUCCESS); + MPI_Comm_size(comm, &newprocs); + MPI_Comm_rank(comm, &newrank); + + if (color) { + /* odd-rank processes */ + mrc = MPI_Barrier(comm); + assert(mrc == MPI_SUCCESS); } - if (mpi_rank == 0){ - mrc = MPI_File_delete(filenames[color], info); - assert(mrc==MPI_SUCCESS); + else { + /* even-rank processes */ + /* setup file access template */ + acc_tpl = H5Pcreate(H5P_FILE_ACCESS); + assert(acc_tpl != FAIL); + + /* set Parallel access with communicator */ + ret = H5Pset_fapl_mpio(acc_tpl, comm, info); + assert(ret != FAIL); + + /* create the file collectively */ + fid = H5Fcreate(filenames[color], H5F_ACC_TRUNC, H5P_DEFAULT, acc_tpl); + assert(fid != FAIL); + MESG("H5Fcreate succeed"); + + /* Release file-access template */ + ret = H5Pclose(acc_tpl); + assert(ret != FAIL); + + ret = H5Fclose(fid); + assert(ret != FAIL); + } + if (mpi_rank == 0) { + mrc = MPI_File_delete(filenames[color], info); + assert(mrc == MPI_SUCCESS); } } @@ -944,7 +909,6 @@ usage(void) printf("\n"); } - /* * compose the test filename with the prefix supplied. * return code: 0 if no error @@ -953,88 +917,93 @@ usage(void) int mkfilenames(char *prefix) { - int i, n; + int i, n; size_t strsize; /* filename will be prefix/ParaEgN.h5 where N is 0 to 9. */ /* So, string must be big enough to hold the prefix, / and 10 more chars */ /* and the terminating null. */ strsize = strlen(prefix) + 12; - if (strsize > PATH_MAX){ - printf("File prefix too long; Use a short path name.\n"); - return(1); + if (strsize > PATH_MAX) { + printf("File prefix too long; Use a short path name.\n"); + return (1); } - n = sizeof(testfiles)/sizeof(testfiles[0]); - if (n > 9){ - printf("Warning: Too many entries in testfiles. " - "Need to adjust the code to accommodate the large size.\n"); + n = sizeof(testfiles) / sizeof(testfiles[0]); + if (n > 9) { + printf("Warning: Too many entries in testfiles. " + "Need to adjust the code to accommodate the large size.\n"); } - for (i=0; i<n; i++){ - sprintf(testfiles[i], "%s/ParaEg%d.h5", prefix, i); + for (i = 0; i < n; i++) { + sprintf(testfiles[i], "%s/ParaEg%d.h5", prefix, i); } - return(0); - + return (0); } - /* * parse the command line options */ int -parse_options(int argc, char **argv){ +parse_options(int argc, char **argv) +{ int i, n; /* initialize testfiles to nulls */ - n = sizeof(testfiles)/sizeof(testfiles[0]); - for (i=0; i<n; i++){ - testfiles[i][0] = '\0'; + n = sizeof(testfiles) / sizeof(testfiles[0]); + for (i = 0; i < n; i++) { + testfiles[i][0] = '\0'; } - while (--argc){ - if (**(++argv) != '-'){ - break; - }else{ - switch(*(*argv+1)){ - case 'f': ++argv; - if (--argc < 1){ - usage(); - nerrors++; - return(1); - } - if (mkfilenames(*argv)){ - nerrors++; - return(1); - } - break; - case 'c': docleanup = 0; /* no cleanup */ - break; - case 'r': doread = 0; - break; - case 'w': dowrite = 0; - break; - case 'v': verbose = 1; - break; - default: usage(); - nerrors++; - return(1); - } - } + while (--argc) { + if (**(++argv) != '-') { + break; + } + else { + switch (*(*argv + 1)) { + case 'f': + ++argv; + if (--argc < 1) { + usage(); + nerrors++; + return (1); + } + if (mkfilenames(*argv)) { + nerrors++; + return (1); + } + break; + case 'c': + docleanup = 0; /* no cleanup */ + break; + case 'r': + doread = 0; + break; + case 'w': + dowrite = 0; + break; + case 'v': + verbose = 1; + break; + default: + usage(); + nerrors++; + return (1); + } + } } /* check the file prefix */ - if (testfiles[0][0] == '\0'){ - /* try get it from environment variable HDF5_PARAPREFIX */ - char *env; - char *env_default = "."; /* default to current directory */ - if ((env=getenv(PARAPREFIX))==NULL){ - env = env_default; - } - mkfilenames(env); + if (testfiles[0][0] == '\0') { + /* try get it from environment variable HDF5_PARAPREFIX */ + char *env; + char *env_default = "."; /* default to current directory */ + if ((env = getenv(PARAPREFIX)) == NULL) { + env = env_default; + } + mkfilenames(env); } - return(0); + return (0); } - /* * cleanup test files created */ @@ -1043,88 +1012,87 @@ cleanup(void) { int i, n; - n = sizeof(testfiles)/sizeof(testfiles[0]); - for (i=0; i<n; i++){ - MPI_File_delete(testfiles[i], MPI_INFO_NULL); + n = sizeof(testfiles) / sizeof(testfiles[0]); + for (i = 0; i < n; i++) { + MPI_File_delete(testfiles[i], MPI_INFO_NULL); } } - /* Main Program */ int main(int argc, char **argv) { - int mpi_namelen; + int mpi_namelen; char mpi_name[MPI_MAX_PROCESSOR_NAME]; - int i, n; + int i, n; - MPI_Init(&argc,&argv); - MPI_Comm_size(MPI_COMM_WORLD,&mpi_size); - MPI_Comm_rank(MPI_COMM_WORLD,&mpi_rank); - MPI_Get_processor_name(mpi_name,&mpi_namelen); + MPI_Init(&argc, &argv); + MPI_Comm_size(MPI_COMM_WORLD, &mpi_size); + MPI_Comm_rank(MPI_COMM_WORLD, &mpi_rank); + MPI_Get_processor_name(mpi_name, &mpi_namelen); /* Make sure datasets can be divided into equal chunks by the processes */ - if ((SPACE1_DIM1 % mpi_size) || (SPACE1_DIM2 % mpi_size)){ - printf("DIM1(%d) and DIM2(%d) must be multiples of processes (%d)\n", - SPACE1_DIM1, SPACE1_DIM2, mpi_size); - nerrors++; - goto finish; + if ((SPACE1_DIM1 % mpi_size) || (SPACE1_DIM2 % mpi_size)) { + printf("DIM1(%d) and DIM2(%d) must be multiples of processes (%d)\n", SPACE1_DIM1, SPACE1_DIM2, + mpi_size); + nerrors++; + goto finish; } if (parse_options(argc, argv) != 0) - goto finish; + goto finish; /* show test file names */ - if (mpi_rank == 0){ - n = sizeof(testfiles)/sizeof(testfiles[0]); - printf("Parallel test files are:\n"); - for (i=0; i<n; i++){ - printf(" %s\n", testfiles[i]); - } + if (mpi_rank == 0) { + n = sizeof(testfiles) / sizeof(testfiles[0]); + printf("Parallel test files are:\n"); + for (i = 0; i < n; i++) { + printf(" %s\n", testfiles[i]); + } } - if (dowrite){ - MPI_BANNER("testing PHDF5 dataset using split communicators..."); - test_split_comm_access(testfiles); - MPI_BANNER("testing PHDF5 dataset independent write..."); - phdf5writeInd(testfiles[0]); - MPI_BANNER("testing PHDF5 dataset collective write..."); - phdf5writeAll(testfiles[1]); + if (dowrite) { + MPI_BANNER("testing PHDF5 dataset using split communicators..."); + test_split_comm_access(testfiles); + MPI_BANNER("testing PHDF5 dataset independent write..."); + phdf5writeInd(testfiles[0]); + MPI_BANNER("testing PHDF5 dataset collective write..."); + phdf5writeAll(testfiles[1]); } - if (doread){ - MPI_BANNER("testing PHDF5 dataset independent read..."); - phdf5readInd(testfiles[0]); - MPI_BANNER("testing PHDF5 dataset collective read..."); - phdf5readAll(testfiles[1]); + if (doread) { + MPI_BANNER("testing PHDF5 dataset independent read..."); + phdf5readInd(testfiles[0]); + MPI_BANNER("testing PHDF5 dataset collective read..."); + phdf5readAll(testfiles[1]); } - if (!(dowrite || doread)){ - usage(); - nerrors++; + if (!(dowrite || doread)) { + usage(); + nerrors++; } finish: - if (mpi_rank == 0){ /* only process 0 reports */ - if (nerrors) - printf("***PHDF5 tests detected %d errors***\n", nerrors); - else{ - printf("===================================\n"); - printf("PHDF5 tests finished with no errors\n"); - printf("===================================\n"); - } + if (mpi_rank == 0) { /* only process 0 reports */ + if (nerrors) + printf("***PHDF5 tests detected %d errors***\n", nerrors); + else { + printf("===================================\n"); + printf("PHDF5 tests finished with no errors\n"); + printf("===================================\n"); + } } if (docleanup) - cleanup(); + cleanup(); MPI_Finalize(); - return(nerrors); + return (nerrors); } -#else /* H5_HAVE_PARALLEL */ +#else /* H5_HAVE_PARALLEL */ /* dummy program since H5_HAVE_PARALLE is not configured in */ int main(void) { -printf("No PHDF5 example because parallel is not configured in\n"); -return(0); + printf("No PHDF5 example because parallel is not configured in\n"); + return (0); } #endif /* H5_HAVE_PARALLEL */ |