diff options
author | Albert Cheng <acheng@hdfgroup.org> | 1999-02-17 04:39:22 (GMT) |
---|---|---|
committer | Albert Cheng <acheng@hdfgroup.org> | 1999-02-17 04:39:22 (GMT) |
commit | a3a9df36579a76bece85ec8e59b285b7a25e676b (patch) | |
tree | 21c245e3c3e6ac9a1e11a1496b5dfec877d92c50 | |
parent | 8ed6e885439d7acd4f68e078b1f3dc221e15fc0b (diff) | |
download | hdf5-a3a9df36579a76bece85ec8e59b285b7a25e676b.zip hdf5-a3a9df36579a76bece85ec8e59b285b7a25e676b.tar.gz hdf5-a3a9df36579a76bece85ec8e59b285b7a25e676b.tar.bz2 |
[svn-r1071] Moved the MPI test to a file of its own (t_mpi.c) for future addition
of other MPI tests.
Changed return code tests from comparing with FAIL to with 0.
Updated MANIFEST for the addition of a new file.
Tested in O2k.
-rw-r--r-- | MANIFEST | 1 | ||||
-rw-r--r-- | testpar/Makefile.in | 2 | ||||
-rw-r--r-- | testpar/t_dset.c | 226 | ||||
-rw-r--r-- | testpar/t_file.c | 144 | ||||
-rw-r--r-- | testpar/t_mpi.c | 135 | ||||
-rw-r--r-- | testpar/testphdf5.c | 8 |
6 files changed, 259 insertions, 257 deletions
@@ -353,6 +353,7 @@ ./testpar/README ./testpar/t_dset.c ./testpar/t_file.c +./testpar/t_mpi.c ./testpar/testphdf5.c ./testpar/testphdf5.h diff --git a/testpar/Makefile.in b/testpar/Makefile.in index dcab8f1..e6cb86a 100644 --- a/testpar/Makefile.in +++ b/testpar/Makefile.in @@ -22,7 +22,7 @@ MOSTLYCLEAN=ParaEg[123].h5f DISTCLEAN=go # Test source files -TEST_SRC=testphdf5.c t_dset.c t_file.c +TEST_SRC=testphdf5.c t_dset.c t_file.c t_mpi.c TEST_OBJ=$(TEST_SRC:.c=.o) PRIVATE_HDR=testphdf5.h diff --git a/testpar/t_dset.c b/testpar/t_dset.c index b818103..c71ec79 100644 --- a/testpar/t_dset.c +++ b/testpar/t_dset.c @@ -214,18 +214,18 @@ dataset_writeInd(char *filename) * ---------------------------------------*/ /* setup file access template with parallel IO access. */ acc_tpl = H5Pcreate (H5P_FILE_ACCESS); - VRFY((acc_tpl != FAIL), "H5Pcreate access succeeded"); + VRFY((acc_tpl >= 0), "H5Pcreate access succeeded"); /* set Parallel access with communicator */ ret = H5Pset_mpi(acc_tpl, comm, info); - VRFY((ret != FAIL), "H5Pset_mpi succeeded"); + VRFY((ret >= 0), "H5Pset_mpi succeeded"); /* create the file collectively */ fid=H5Fcreate(filename,H5F_ACC_TRUNC,H5P_DEFAULT,acc_tpl); - VRFY((fid != FAIL), "H5Fcreate succeeded"); + VRFY((fid >= 0), "H5Fcreate succeeded"); /* Release file-access template */ ret=H5Pclose(acc_tpl); - VRFY((ret != FAIL), ""); + VRFY((ret >= 0), ""); /* --------------------------------------------- @@ -234,18 +234,18 @@ dataset_writeInd(char *filename) * ------------------------------------------- */ /* setup dimensionality object */ sid = H5Screate_simple (RANK, dims, NULL); - VRFY((sid != FAIL), "H5Screate_simple succeeded"); + VRFY((sid >= 0), "H5Screate_simple succeeded"); /* create a dataset collectively */ dataset1 = H5Dcreate(fid, DATASETNAME1, H5T_NATIVE_INT, sid, H5P_DEFAULT); - VRFY((dataset1 != FAIL), "H5Dcreate succeeded"); + VRFY((dataset1 >= 0), "H5Dcreate succeeded"); /* create another dataset collectively */ dataset2 = H5Dcreate(fid, DATASETNAME2, H5T_NATIVE_INT, sid, H5P_DEFAULT); - VRFY((dataset2 != FAIL), "H5Dcreate succeeded"); + VRFY((dataset2 >= 0), "H5Dcreate succeeded"); /* @@ -263,31 +263,31 @@ dataset_writeInd(char *filename) /* create a file dataspace independently */ file_dataspace = H5Dget_space (dataset1); - VRFY((file_dataspace != FAIL), "H5Dget_space succeeded"); + VRFY((file_dataspace >= 0), "H5Dget_space succeeded"); ret=H5Sselect_hyperslab(file_dataspace, H5S_SELECT_SET, start, stride, count, NULL); - VRFY((ret != FAIL), "H5Sset_hyperslab succeeded"); + VRFY((ret >= 0), "H5Sset_hyperslab succeeded"); /* create a memory dataspace independently */ mem_dataspace = H5Screate_simple (RANK, count, NULL); - VRFY((mem_dataspace != FAIL), ""); + VRFY((mem_dataspace >= 0), ""); /* write data independently */ ret = H5Dwrite(dataset1, H5T_NATIVE_INT, mem_dataspace, file_dataspace, H5P_DEFAULT, data_array1); - VRFY((ret != FAIL), "H5Dwrite dataset1 succeeded"); + VRFY((ret >= 0), "H5Dwrite dataset1 succeeded"); /* write data independently */ ret = H5Dwrite(dataset2, H5T_NATIVE_INT, mem_dataspace, file_dataspace, H5P_DEFAULT, data_array1); - VRFY((ret != FAIL), "H5Dwrite dataset2 succeeded"); + VRFY((ret >= 0), "H5Dwrite dataset2 succeeded"); /* release dataspace ID */ H5Sclose(file_dataspace); /* close dataset collectively */ ret=H5Dclose(dataset1); - VRFY((ret != FAIL), "H5Dclose1 succeeded"); + VRFY((ret >= 0), "H5Dclose1 succeeded"); ret=H5Dclose(dataset2); - VRFY((ret != FAIL), "H5Dclose2 succeeded"); + VRFY((ret >= 0), "H5Dclose2 succeeded"); /* release all IDs created */ H5Sclose(sid); @@ -330,27 +330,27 @@ dataset_readInd(char *filename) /* setup file access template */ acc_tpl = H5Pcreate (H5P_FILE_ACCESS); - VRFY((acc_tpl != FAIL), ""); + VRFY((acc_tpl >= 0), ""); /* set Parallel access with communicator */ ret = H5Pset_mpi(acc_tpl, comm, info); - VRFY((ret != FAIL), ""); + VRFY((ret >= 0), ""); /* open the file collectively */ fid=H5Fopen(filename,H5F_ACC_RDONLY,acc_tpl); - VRFY((fid != FAIL), ""); + VRFY((fid >= 0), ""); /* Release file-access template */ ret=H5Pclose(acc_tpl); - VRFY((ret != FAIL), ""); + VRFY((ret >= 0), ""); /* open the dataset1 collectively */ dataset1 = H5Dopen(fid, DATASETNAME1); - VRFY((dataset1 != FAIL), ""); + VRFY((dataset1 >= 0), ""); /* open another dataset collectively */ dataset2 = H5Dopen(fid, DATASETNAME1); - VRFY((dataset2 != FAIL), ""); + VRFY((dataset2 >= 0), ""); /* set up dimensions of the slab this process accesses */ @@ -358,13 +358,13 @@ dataset_readInd(char *filename) /* create a file dataspace independently */ file_dataspace = H5Dget_space (dataset1); - VRFY((file_dataspace != FAIL), ""); + VRFY((file_dataspace >= 0), ""); ret=H5Sselect_hyperslab(file_dataspace, H5S_SELECT_SET, start, stride, count, NULL); - VRFY((ret != FAIL), ""); + VRFY((ret >= 0), ""); /* create a memory dataspace independently */ mem_dataspace = H5Screate_simple (RANK, count, NULL); - VRFY((mem_dataspace != FAIL), ""); + VRFY((mem_dataspace >= 0), ""); /* fill dataset with test data */ dataset_fill(start, count, stride, &data_origin1[0][0]); @@ -372,7 +372,7 @@ dataset_readInd(char *filename) /* read data independently */ ret = H5Dread(dataset1, H5T_NATIVE_INT, mem_dataspace, file_dataspace, H5P_DEFAULT, data_array1); - VRFY((ret != FAIL), ""); + VRFY((ret >= 0), ""); /* verify the read data with original expected data */ ret = dataset_vrfy(start, count, stride, &data_array1[0][0], &data_origin1[0][0]); @@ -381,7 +381,7 @@ dataset_readInd(char *filename) /* read data independently */ ret = H5Dread(dataset2, H5T_NATIVE_INT, mem_dataspace, file_dataspace, H5P_DEFAULT, data_array1); - VRFY((ret != FAIL), ""); + VRFY((ret >= 0), ""); /* verify the read data with original expected data */ ret = dataset_vrfy(start, count, stride, &data_array1[0][0], &data_origin1[0][0]); @@ -389,9 +389,9 @@ dataset_readInd(char *filename) /* close dataset collectively */ ret=H5Dclose(dataset1); - VRFY((ret != FAIL), ""); + VRFY((ret >= 0), ""); ret=H5Dclose(dataset2); - VRFY((ret != FAIL), ""); + VRFY((ret >= 0), ""); /* release all IDs created */ H5Sclose(file_dataspace); @@ -449,18 +449,18 @@ dataset_writeAll(char *filename) * -------------------*/ /* setup file access template with parallel IO access. */ acc_tpl = H5Pcreate (H5P_FILE_ACCESS); - VRFY((acc_tpl != FAIL), "H5Pcreate access succeeded"); + VRFY((acc_tpl >= 0), "H5Pcreate access succeeded"); /* set Parallel access with communicator */ ret = H5Pset_mpi(acc_tpl, comm, info); - VRFY((ret != FAIL), "H5Pset_mpi succeeded"); + VRFY((ret >= 0), "H5Pset_mpi succeeded"); /* create the file collectively */ fid=H5Fcreate(filename,H5F_ACC_TRUNC,H5P_DEFAULT,acc_tpl); - VRFY((fid != FAIL), "H5Fcreate succeeded"); + VRFY((fid >= 0), "H5Fcreate succeeded"); /* Release file-access template */ ret=H5Pclose(acc_tpl); - VRFY((ret != FAIL), ""); + VRFY((ret >= 0), ""); /* -------------------------- @@ -469,20 +469,20 @@ dataset_writeAll(char *filename) * ------------------------- */ /* setup dimensionality object */ sid = H5Screate_simple (RANK, dims, NULL); - VRFY((sid != FAIL), "H5Screate_simple succeeded"); + VRFY((sid >= 0), "H5Screate_simple succeeded"); /* create a dataset collectively */ dataset1 = H5Dcreate(fid, DATASETNAME1, H5T_NATIVE_INT, sid, H5P_DEFAULT); - VRFY((dataset1 != FAIL), "H5Dcreate succeeded"); + VRFY((dataset1 >= 0), "H5Dcreate succeeded"); /* create another dataset collectively */ datatype = H5Tcopy(H5T_NATIVE_INT); ret = H5Tset_order(datatype, H5T_ORDER_LE); - VRFY((ret != FAIL), "H5Tset_order succeeded"); + VRFY((ret >= 0), "H5Tset_order succeeded"); dataset2 = H5Dcreate(fid, DATASETNAME2, datatype, sid, H5P_DEFAULT); - VRFY((dataset2 != FAIL), "H5Dcreate 2 succeeded"); + VRFY((dataset2 >= 0), "H5Dcreate 2 succeeded"); /* * Set up dimensions of the slab this process accesses. @@ -493,13 +493,13 @@ dataset_writeAll(char *filename) /* create a file dataspace independently */ file_dataspace = H5Dget_space (dataset1); - VRFY((file_dataspace != FAIL), "H5Dget_space succeeded"); + VRFY((file_dataspace >= 0), "H5Dget_space succeeded"); ret=H5Sselect_hyperslab(file_dataspace, H5S_SELECT_SET, start, stride, count, NULL); - VRFY((ret != FAIL), "H5Sset_hyperslab succeeded"); + VRFY((ret >= 0), "H5Sset_hyperslab succeeded"); /* create a memory dataspace independently */ mem_dataspace = H5Screate_simple (RANK, count, NULL); - VRFY((mem_dataspace != FAIL), ""); + VRFY((mem_dataspace >= 0), ""); /* fill the local slab with some trivial data */ dataset_fill(start, count, stride, &data_array1[0][0]); @@ -511,14 +511,14 @@ dataset_writeAll(char *filename) /* set up the collective transfer properties list */ xfer_plist = H5Pcreate (H5P_DATASET_XFER); - VRFY((xfer_plist != FAIL), ""); + VRFY((xfer_plist >= 0), ""); ret=H5Pset_xfer(xfer_plist, H5D_XFER_COLLECTIVE); - VRFY((ret != FAIL), "H5Pcreate xfer succeeded"); + VRFY((ret >= 0), "H5Pcreate xfer succeeded"); /* write data collectively */ ret = H5Dwrite(dataset1, H5T_NATIVE_INT, mem_dataspace, file_dataspace, xfer_plist, data_array1); - VRFY((ret != FAIL), "H5Dwrite dataset1 succeeded"); + VRFY((ret >= 0), "H5Dwrite dataset1 succeeded"); /* release all temporary handles. */ /* Could have used them for dataset2 but it is cleaner */ @@ -540,13 +540,13 @@ dataset_writeAll(char *filename) /* create a file dataspace independently */ file_dataspace = H5Dget_space (dataset1); - VRFY((file_dataspace != FAIL), "H5Dget_space succeeded"); + VRFY((file_dataspace >= 0), "H5Dget_space succeeded"); ret=H5Sselect_hyperslab(file_dataspace, H5S_SELECT_SET, start, stride, count, NULL); - VRFY((ret != FAIL), "H5Sset_hyperslab succeeded"); + VRFY((ret >= 0), "H5Sset_hyperslab succeeded"); /* create a memory dataspace independently */ mem_dataspace = H5Screate_simple (RANK, count, NULL); - VRFY((mem_dataspace != FAIL), ""); + VRFY((mem_dataspace >= 0), ""); /* fill the local slab with some trivial data */ dataset_fill(start, count, stride, &data_array1[0][0]); @@ -558,14 +558,14 @@ dataset_writeAll(char *filename) /* set up the collective transfer properties list */ xfer_plist = H5Pcreate (H5P_DATASET_XFER); - VRFY((xfer_plist != FAIL), ""); + VRFY((xfer_plist >= 0), ""); ret=H5Pset_xfer(xfer_plist, H5D_XFER_COLLECTIVE); - VRFY((ret != FAIL), "H5Pcreate xfer succeeded"); + VRFY((ret >= 0), "H5Pcreate xfer succeeded"); /* write data independently */ ret = H5Dwrite(dataset2, H5T_NATIVE_INT, mem_dataspace, file_dataspace, xfer_plist, data_array1); - VRFY((ret != FAIL), "H5Dwrite dataset2 succeeded"); + VRFY((ret >= 0), "H5Dwrite dataset2 succeeded"); /* release all temporary handles. */ H5Sclose(file_dataspace); @@ -577,9 +577,9 @@ dataset_writeAll(char *filename) * All writes completed. Close datasets collectively */ ret=H5Dclose(dataset1); - VRFY((ret != FAIL), "H5Dclose1 succeeded"); + VRFY((ret >= 0), "H5Dclose1 succeeded"); ret=H5Dclose(dataset2); - VRFY((ret != FAIL), "H5Dclose2 succeeded"); + VRFY((ret >= 0), "H5Dclose2 succeeded"); /* release all IDs created */ H5Sclose(sid); @@ -632,18 +632,18 @@ dataset_readAll(char *filename) * -------------------*/ /* setup file access template with parallel IO access. */ acc_tpl = H5Pcreate (H5P_FILE_ACCESS); - VRFY((acc_tpl != FAIL), "H5Pcreate access succeeded"); + VRFY((acc_tpl >= 0), "H5Pcreate access succeeded"); /* set Parallel access with communicator */ ret = H5Pset_mpi(acc_tpl, comm, info); - VRFY((ret != FAIL), "H5Pset_mpi succeeded"); + VRFY((ret >= 0), "H5Pset_mpi succeeded"); /* open the file collectively */ fid=H5Fopen(filename,H5F_ACC_RDONLY,acc_tpl); - VRFY((fid != FAIL), "H5Fopen succeeded"); + VRFY((fid >= 0), "H5Fopen succeeded"); /* Release file-access template */ ret=H5Pclose(acc_tpl); - VRFY((ret != FAIL), ""); + VRFY((ret >= 0), ""); /* -------------------------- @@ -651,11 +651,11 @@ dataset_readAll(char *filename) * ------------------------- */ /* open the dataset1 collectively */ dataset1 = H5Dopen(fid, DATASETNAME1); - VRFY((dataset1 != FAIL), "H5Dopen succeeded"); + VRFY((dataset1 >= 0), "H5Dopen succeeded"); /* open another dataset collectively */ dataset2 = H5Dopen(fid, DATASETNAME2); - VRFY((dataset2 != FAIL), "H5Dopen 2 succeeded"); + VRFY((dataset2 >= 0), "H5Dopen 2 succeeded"); /* * Set up dimensions of the slab this process accesses. @@ -666,13 +666,13 @@ dataset_readAll(char *filename) /* create a file dataspace independently */ file_dataspace = H5Dget_space (dataset1); - VRFY((file_dataspace != FAIL), "H5Dget_space succeeded"); + VRFY((file_dataspace >= 0), "H5Dget_space succeeded"); ret=H5Sselect_hyperslab(file_dataspace, H5S_SELECT_SET, start, stride, count, NULL); - VRFY((ret != FAIL), "H5Sset_hyperslab succeeded"); + VRFY((ret >= 0), "H5Sset_hyperslab succeeded"); /* create a memory dataspace independently */ mem_dataspace = H5Screate_simple (RANK, count, NULL); - VRFY((mem_dataspace != FAIL), ""); + VRFY((mem_dataspace >= 0), ""); /* fill dataset with test data */ dataset_fill(start, count, stride, &data_origin1[0][0]); @@ -684,14 +684,14 @@ dataset_readAll(char *filename) /* set up the collective transfer properties list */ xfer_plist = H5Pcreate (H5P_DATASET_XFER); - VRFY((xfer_plist != FAIL), ""); + VRFY((xfer_plist >= 0), ""); ret=H5Pset_xfer(xfer_plist, H5D_XFER_COLLECTIVE); - VRFY((ret != FAIL), "H5Pcreate xfer succeeded"); + VRFY((ret >= 0), "H5Pcreate xfer succeeded"); /* read data collectively */ ret = H5Dread(dataset1, H5T_NATIVE_INT, mem_dataspace, file_dataspace, xfer_plist, data_array1); - VRFY((ret != FAIL), "H5Dread succeeded"); + VRFY((ret >= 0), "H5Dread succeeded"); /* verify the read data with original expected data */ ret = dataset_vrfy(start, count, stride, &data_array1[0][0], &data_origin1[0][0]); @@ -709,13 +709,13 @@ dataset_readAll(char *filename) /* create a file dataspace independently */ file_dataspace = H5Dget_space (dataset1); - VRFY((file_dataspace != FAIL), "H5Dget_space succeeded"); + VRFY((file_dataspace >= 0), "H5Dget_space succeeded"); ret=H5Sselect_hyperslab(file_dataspace, H5S_SELECT_SET, start, stride, count, NULL); - VRFY((ret != FAIL), "H5Sset_hyperslab succeeded"); + VRFY((ret >= 0), "H5Sset_hyperslab succeeded"); /* create a memory dataspace independently */ mem_dataspace = H5Screate_simple (RANK, count, NULL); - VRFY((mem_dataspace != FAIL), ""); + VRFY((mem_dataspace >= 0), ""); /* fill dataset with test data */ dataset_fill(start, count, stride, &data_origin1[0][0]); @@ -727,14 +727,14 @@ dataset_readAll(char *filename) /* set up the collective transfer properties list */ xfer_plist = H5Pcreate (H5P_DATASET_XFER); - VRFY((xfer_plist != FAIL), ""); + VRFY((xfer_plist >= 0), ""); ret=H5Pset_xfer(xfer_plist, H5D_XFER_COLLECTIVE); - VRFY((ret != FAIL), "H5Pcreate xfer succeeded"); + VRFY((ret >= 0), "H5Pcreate xfer succeeded"); /* read data independently */ ret = H5Dread(dataset2, H5T_NATIVE_INT, mem_dataspace, file_dataspace, xfer_plist, data_array1); - VRFY((ret != FAIL), "H5Dread succeeded"); + VRFY((ret >= 0), "H5Dread succeeded"); /* verify the read data with original expected data */ ret = dataset_vrfy(start, count, stride, &data_array1[0][0], &data_origin1[0][0]); @@ -750,9 +750,9 @@ dataset_readAll(char *filename) * All reads completed. Close datasets collectively */ ret=H5Dclose(dataset1); - VRFY((ret != FAIL), "H5Dclose1 succeeded"); + VRFY((ret >= 0), "H5Dclose1 succeeded"); ret=H5Dclose(dataset2); - VRFY((ret != FAIL), "H5Dclose2 succeeded"); + VRFY((ret >= 0), "H5Dclose2 succeeded"); /* close the file collectively */ H5Fclose(fid); @@ -812,18 +812,18 @@ extend_writeInd(char *filename) * -------------------*/ /* setup file access template with parallel IO access. */ acc_tpl = H5Pcreate (H5P_FILE_ACCESS); - VRFY((acc_tpl != FAIL), "H5Pcreate access succeeded"); + VRFY((acc_tpl >= 0), "H5Pcreate access succeeded"); /* set Parallel access with communicator */ ret = H5Pset_mpi(acc_tpl, comm, info); - VRFY((ret != FAIL), "H5Pset_mpi succeeded"); + VRFY((ret >= 0), "H5Pset_mpi succeeded"); /* create the file collectively */ fid=H5Fcreate(filename,H5F_ACC_TRUNC,H5P_DEFAULT,acc_tpl); - VRFY((fid != FAIL), "H5Fcreate succeeded"); + VRFY((fid >= 0), "H5Fcreate succeeded"); /* Release file-access template */ ret=H5Pclose(acc_tpl); - VRFY((ret != FAIL), ""); + VRFY((ret >= 0), ""); /* -------------------------------------------------------------- @@ -834,23 +834,23 @@ extend_writeInd(char *filename) if (verbose) printf("chunks[]=%d,%d\n", chunk_dims[0], chunk_dims[1]); dataset_pl = H5Pcreate(H5P_DATASET_CREATE); - VRFY((dataset_pl != FAIL), "H5Pcreate succeeded"); + VRFY((dataset_pl >= 0), "H5Pcreate succeeded"); ret = H5Pset_chunk(dataset_pl, RANK, chunk_dims); - VRFY((ret != FAIL), "H5Pset_chunk succeeded"); + VRFY((ret >= 0), "H5Pset_chunk succeeded"); /* setup dimensionality object */ /* start out with no rows, extend it later. */ dims[0] = dims[1] = 0; sid = H5Screate_simple (RANK, dims, max_dims); - VRFY((sid != FAIL), "H5Screate_simple succeeded"); + VRFY((sid >= 0), "H5Screate_simple succeeded"); /* create an extendible dataset collectively */ dataset1 = H5Dcreate(fid, DATASETNAME1, H5T_NATIVE_INT, sid, dataset_pl); - VRFY((dataset1 != FAIL), "H5Dcreate succeeded"); + VRFY((dataset1 >= 0), "H5Dcreate succeeded"); /* create another extendible dataset collectively */ dataset2 = H5Dcreate(fid, DATASETNAME2, H5T_NATIVE_INT, sid, dataset_pl); - VRFY((dataset2 != FAIL), "H5Dcreate succeeded"); + VRFY((dataset2 >= 0), "H5Dcreate succeeded"); /* release resource */ H5Sclose(sid); @@ -873,24 +873,24 @@ extend_writeInd(char *filename) /* create a memory dataspace independently */ mem_dataspace = H5Screate_simple (RANK, count, NULL); - VRFY((mem_dataspace != FAIL), ""); + VRFY((mem_dataspace >= 0), ""); /* Extend its current dim sizes before writing */ dims[0] = DIM1; dims[1] = DIM2; ret = H5Dextend (dataset1, dims); - VRFY((ret != FAIL), "H5Dextend succeeded"); + VRFY((ret >= 0), "H5Dextend succeeded"); /* create a file dataspace independently */ file_dataspace = H5Dget_space (dataset1); - VRFY((file_dataspace != FAIL), "H5Dget_space succeeded"); + VRFY((file_dataspace >= 0), "H5Dget_space succeeded"); ret=H5Sselect_hyperslab(file_dataspace, H5S_SELECT_SET, start, stride, count, NULL); - VRFY((ret != FAIL), "H5Sset_hyperslab succeeded"); + VRFY((ret >= 0), "H5Sset_hyperslab succeeded"); /* write data independently */ ret = H5Dwrite(dataset1, H5T_NATIVE_INT, mem_dataspace, file_dataspace, H5P_DEFAULT, data_array1); - VRFY((ret != FAIL), "H5Dwrite succeeded"); + VRFY((ret >= 0), "H5Dwrite succeeded"); /* release resource */ H5Sclose(file_dataspace); @@ -913,7 +913,7 @@ extend_writeInd(char *filename) /* create a memory dataspace independently */ mem_dataspace = H5Screate_simple (RANK, count, NULL); - VRFY((mem_dataspace != FAIL), ""); + VRFY((mem_dataspace >= 0), ""); #ifndef DISABLE /* Try write to dataset2 beyond its current dim sizes. Should fail. */ @@ -923,14 +923,14 @@ extend_writeInd(char *filename) /* create a file dataspace independently */ file_dataspace = H5Dget_space (dataset2); - VRFY((file_dataspace != FAIL), "H5Dget_space succeeded"); + VRFY((file_dataspace >= 0), "H5Dget_space succeeded"); ret=H5Sselect_hyperslab(file_dataspace, H5S_SELECT_SET, start, stride, count, NULL); - VRFY((ret != FAIL), "H5Sset_hyperslab succeeded"); + VRFY((ret >= 0), "H5Sset_hyperslab succeeded"); /* write data independently. Should fail. */ ret = H5Dwrite(dataset2, H5T_NATIVE_INT, mem_dataspace, file_dataspace, H5P_DEFAULT, data_array1); - VRFY((ret == FAIL), "H5Dwrite failed as expected"); + VRFY((ret < 0), "H5Dwrite failed as expected"); /* restore auto error reporting */ H5Eset_auto(old_func, old_client_data); @@ -944,31 +944,31 @@ extend_writeInd(char *filename) dims[0] = DIM1; dims[1] = DIM2; ret = H5Dextend (dataset2, dims); - VRFY((ret != FAIL), "H5Dextend succeeded"); + VRFY((ret >= 0), "H5Dextend succeeded"); /* create a file dataspace independently */ file_dataspace = H5Dget_space (dataset2); - VRFY((file_dataspace != FAIL), "H5Dget_space succeeded"); + VRFY((file_dataspace >= 0), "H5Dget_space succeeded"); ret=H5Sselect_hyperslab(file_dataspace, H5S_SELECT_SET, start, stride, count, NULL); - VRFY((ret != FAIL), "H5Sset_hyperslab succeeded"); + VRFY((ret >= 0), "H5Sset_hyperslab succeeded"); /* write data independently */ ret = H5Dwrite(dataset2, H5T_NATIVE_INT, mem_dataspace, file_dataspace, H5P_DEFAULT, data_array1); - VRFY((ret != FAIL), "H5Dwrite succeeded"); + VRFY((ret >= 0), "H5Dwrite succeeded"); /* release resource */ ret=H5Sclose(file_dataspace); - VRFY((ret != FAIL), "H5Sclose succeeded"); + VRFY((ret >= 0), "H5Sclose succeeded"); ret=H5Sclose(mem_dataspace); - VRFY((ret != FAIL), "H5Sclose succeeded"); + VRFY((ret >= 0), "H5Sclose succeeded"); /* close dataset collectively */ ret=H5Dclose(dataset1); - VRFY((ret != FAIL), "H5Dclose1 succeeded"); + VRFY((ret >= 0), "H5Dclose1 succeeded"); ret=H5Dclose(dataset2); - VRFY((ret != FAIL), "H5Dclose2 succeeded"); + VRFY((ret >= 0), "H5Dclose2 succeeded"); /* close the file collectively */ H5Fclose(fid); @@ -1012,26 +1012,26 @@ extend_readInd(char *filename) * -------------------*/ /* setup file access template */ acc_tpl = H5Pcreate (H5P_FILE_ACCESS); - VRFY((acc_tpl != FAIL), ""); + VRFY((acc_tpl >= 0), ""); /* set Parallel access with communicator */ ret = H5Pset_mpi(acc_tpl, comm, info); - VRFY((ret != FAIL), ""); + VRFY((ret >= 0), ""); /* open the file collectively */ fid=H5Fopen(filename,H5F_ACC_RDONLY,acc_tpl); - VRFY((fid != FAIL), ""); + VRFY((fid >= 0), ""); /* Release file-access template */ ret=H5Pclose(acc_tpl); - VRFY((ret != FAIL), ""); + VRFY((ret >= 0), ""); /* open the dataset1 collectively */ dataset1 = H5Dopen(fid, DATASETNAME1); - VRFY((dataset1 != FAIL), ""); + VRFY((dataset1 >= 0), ""); /* open another dataset collectively */ dataset2 = H5Dopen(fid, DATASETNAME1); - VRFY((dataset2 != FAIL), ""); + VRFY((dataset2 >= 0), ""); /* Try extend dataset1 which is open RDONLY. Should fail. */ /* first turn off auto error reporting */ @@ -1039,12 +1039,12 @@ extend_readInd(char *filename) H5Eset_auto(NULL, NULL); file_dataspace = H5Dget_space (dataset1); - VRFY((file_dataspace != FAIL), "H5Dget_space succeeded"); + VRFY((file_dataspace >= 0), "H5Dget_space succeeded"); ret=H5Sget_simple_extent_dims(file_dataspace, dims, NULL); VRFY((ret > 0), "H5Sget_simple_extent_dims succeeded"); dims[0]++; ret=H5Dextend(dataset1, dims); - VRFY((ret == FAIL), "H5Dextend failed as expected"); + VRFY((ret < 0), "H5Dextend failed as expected"); /* restore auto error reporting */ H5Eset_auto(old_func, old_client_data); @@ -1057,13 +1057,13 @@ extend_readInd(char *filename) /* create a file dataspace independently */ file_dataspace = H5Dget_space (dataset1); - VRFY((file_dataspace != FAIL), ""); + VRFY((file_dataspace >= 0), ""); ret=H5Sselect_hyperslab(file_dataspace, H5S_SELECT_SET, start, stride, count, NULL); - VRFY((ret != FAIL), ""); + VRFY((ret >= 0), ""); /* create a memory dataspace independently */ mem_dataspace = H5Screate_simple (RANK, count, NULL); - VRFY((mem_dataspace != FAIL), ""); + VRFY((mem_dataspace >= 0), ""); /* fill dataset with test data */ dataset_fill(start, count, stride, &data_origin1[0][0]); @@ -1075,7 +1075,7 @@ extend_readInd(char *filename) /* read data independently */ ret = H5Dread(dataset1, H5T_NATIVE_INT, mem_dataspace, file_dataspace, H5P_DEFAULT, data_array1); - VRFY((ret != FAIL), "H5Dread succeeded"); + VRFY((ret >= 0), "H5Dread succeeded"); /* verify the read data with original expected data */ ret = dataset_vrfy(start, count, stride, &data_array1[0][0], &data_origin1[0][0]); @@ -1092,13 +1092,13 @@ extend_readInd(char *filename) /* create a file dataspace independently */ file_dataspace = H5Dget_space (dataset2); - VRFY((file_dataspace != FAIL), ""); + VRFY((file_dataspace >= 0), ""); ret=H5Sselect_hyperslab(file_dataspace, H5S_SELECT_SET, start, stride, count, NULL); - VRFY((ret != FAIL), ""); + VRFY((ret >= 0), ""); /* create a memory dataspace independently */ mem_dataspace = H5Screate_simple (RANK, count, NULL); - VRFY((mem_dataspace != FAIL), ""); + VRFY((mem_dataspace >= 0), ""); /* fill dataset with test data */ dataset_fill(start, count, stride, &data_origin1[0][0]); @@ -1110,7 +1110,7 @@ extend_readInd(char *filename) /* read data independently */ ret = H5Dread(dataset2, H5T_NATIVE_INT, mem_dataspace, file_dataspace, H5P_DEFAULT, data_array1); - VRFY((ret != FAIL), "H5Dread succeeded"); + VRFY((ret >= 0), "H5Dread succeeded"); /* verify the read data with original expected data */ ret = dataset_vrfy(start, count, stride, &data_array1[0][0], &data_origin1[0][0]); @@ -1122,9 +1122,9 @@ extend_readInd(char *filename) /* close dataset collectively */ ret=H5Dclose(dataset1); - VRFY((ret != FAIL), ""); + VRFY((ret >= 0), ""); ret=H5Dclose(dataset2); - VRFY((ret != FAIL), ""); + VRFY((ret >= 0), ""); /* close the file collectively */ diff --git a/testpar/t_file.c b/testpar/t_file.c index c615663..737e107 100644 --- a/testpar/t_file.c +++ b/testpar/t_file.c @@ -53,23 +53,23 @@ test_split_comm_access(char *filename[]) /* setup file access template */ acc_tpl = H5Pcreate (H5P_FILE_ACCESS); - VRFY((acc_tpl != FAIL), ""); + VRFY((acc_tpl >= 0), ""); /* set Parallel access with communicator */ ret = H5Pset_mpi(acc_tpl, comm, info); - VRFY((ret != FAIL), ""); + VRFY((ret >= 0), ""); /* create the file collectively */ fid=H5Fcreate(filename[color],H5F_ACC_TRUNC,H5P_DEFAULT,acc_tpl); - VRFY((fid != FAIL), "H5Fcreate succeeded"); + VRFY((fid >= 0), "H5Fcreate succeeded"); /* Release file-access template */ ret=H5Pclose(acc_tpl); - VRFY((ret != FAIL), ""); + VRFY((ret >= 0), ""); /* close the file */ ret=H5Fclose(fid); - VRFY((ret != FAIL), ""); + VRFY((ret >= 0), ""); /* detele the test file */ if (sub_mpi_rank == 0){ @@ -80,137 +80,3 @@ test_split_comm_access(char *filename[]) } - -/* - * MPIO independent overlapping writes. - * - * First n-1 processes open 1 file. - * Each of the n-1 process writes chunks of data to the file in round-robin - * fashion, in a interleaved but not overlapped fashion. Using increasing - * chunk sizes for the benefits of testing different write sizes and also - * reducing the numbers of writes. - * - * Last process (n-1) just waits. - * First n-1 processes finish writing and cloose the file. - * Last process opens the same file and verifies the data. - */ - -#define MPIO_TEST_WRITE_SIZE 1024*1024 /* 1 MB */ - -void -test_mpio_overlap_writes(char *filename[]) -{ - int mpi_size, mpi_rank; - MPI_Comm comm; - MPI_Info info = MPI_INFO_NULL; - int color, mrc; - MPI_File fh; - int newrank, newprocs; - hid_t fid; /* file IDs */ - hid_t acc_tpl; /* File access properties */ - herr_t ret; /* generic return value */ - int i; - char buf[4093]; /* use some prime number for size */ - int bufsize = sizeof(buf); - int stride; - MPI_Offset mpi_off; - MPI_Status mpi_stat; - - - if (verbose) - printf("MPIO independent overlapping writes test on file %s\n", - filename[0]); - - /* set up MPI parameters */ - MPI_Comm_size(MPI_COMM_WORLD,&mpi_size); - MPI_Comm_rank(MPI_COMM_WORLD,&mpi_rank); - - /* Need at least 2 processes */ - VRFY((mpi_size >= 2), "Has at least 2 processes"); - - /* splits processes 0 to n-2 into one comm. and the last one into another */ - color = ((mpi_rank < (mpi_size - 1)) ? 0 : 1); - mrc = MPI_Comm_split (MPI_COMM_WORLD, color, mpi_rank, &comm); - VRFY((mrc==MPI_SUCCESS), "Comm_split succeeded"); - - if (color==0){ - /* First n-1 processes (color==0) open a file and write it */ - mrc = MPI_File_open(comm, filename[0], MPI_MODE_CREATE|MPI_MODE_RDWR, - info, &fh); - VRFY((mrc==MPI_SUCCESS), ""); - - stride = 1; - mpi_off = mpi_rank*stride; - while (mpi_off < MPIO_TEST_WRITE_SIZE){ - /* make sure the write does not exceed the TEST_WRITE_SIZE */ - if (mpi_off+stride > MPIO_TEST_WRITE_SIZE) - stride = MPIO_TEST_WRITE_SIZE - mpi_off; - - /* set data to some trivial pattern for easy verification */ - for (i=0; i<stride; i++) - buf[i] = (mpi_off+i) & 0x7f; - mrc = MPI_File_write_at(fh, mpi_off, buf, stride, MPI_BYTE, - &mpi_stat); - VRFY((mrc==MPI_SUCCESS), ""); - - /* move the offset pointer to last byte written by all processes */ - mpi_off += (mpi_size - 1 - mpi_rank) * stride; - - /* Increase chunk size without exceeding buffer size. */ - /* Then move the starting offset for next write. */ - stride *= 2; - if (stride > bufsize) - stride = bufsize; - mpi_off += mpi_rank*stride; - } - - /* close file and free the communicator */ - mrc = MPI_File_close(&fh); - VRFY((mrc==MPI_SUCCESS), "MPI_FILE_CLOSE"); - mrc = MPI_Comm_free(&comm); - VRFY((mrc==MPI_SUCCESS), "MPI_Comm_free"); - - /* sync with the other waiting processes */ - mrc = MPI_Barrier(MPI_COMM_WORLD); - VRFY((mrc==MPI_SUCCESS), "Sync after writes"); - }else{ - /* last process waits till writes are done, - * then opens file to verify data. - */ - mrc = MPI_Barrier(MPI_COMM_WORLD); - VRFY((mrc==MPI_SUCCESS), "Sync after writes"); - - mrc = MPI_File_open(comm, filename[0], MPI_MODE_RDONLY, - info, &fh); - VRFY((mrc==MPI_SUCCESS), ""); - - stride = bufsize; - for (mpi_off=0; mpi_off < MPIO_TEST_WRITE_SIZE; mpi_off += bufsize){ - /* make sure it does not read beyond end of data */ - if (mpi_off+stride > MPIO_TEST_WRITE_SIZE) - stride = MPIO_TEST_WRITE_SIZE - mpi_off; - mrc = MPI_File_read_at(fh, mpi_off, buf, stride, MPI_BYTE, - &mpi_stat); - VRFY((mrc==MPI_SUCCESS), ""); - for (i=0; i<stride; i++){ - if (buf[i] != ((mpi_off+i) & 0x7f)) - printf("proc %d: found data error at [%d], expect %d, got %d\n", - mpi_rank, mpi_off+i, mpi_off & 0x7f, buf[0]); - } - } - - /* close file and free the communicator */ - mrc = MPI_File_close(&fh); - VRFY((mrc==MPI_SUCCESS), "MPI_FILE_CLOSE"); - mrc = MPI_Comm_free(&comm); - VRFY((mrc==MPI_SUCCESS), "MPI_Comm_free"); - } - - /* - * one more sync to ensure all processes have done reading - * before ending this test. - */ - mrc = MPI_Barrier(MPI_COMM_WORLD); - VRFY((mrc==MPI_SUCCESS), "Sync before leaving test"); -} - diff --git a/testpar/t_mpi.c b/testpar/t_mpi.c new file mode 100644 index 0000000..0d6d390 --- /dev/null +++ b/testpar/t_mpi.c @@ -0,0 +1,135 @@ +/* + * MPIO independent overlapping writes. + * + * First n-1 processes open 1 file. + * Each of the n-1 process writes chunks of data to the file in round-robin + * fashion, in a interleaved but not overlapped fashion. Using increasing + * chunk sizes for the benefits of testing different write sizes and also + * reducing the numbers of writes. + * + * Last process (n-1) just waits. + * First n-1 processes finish writing and cloose the file. + * Last process opens the same file and verifies the data. + */ + +#include <testphdf5.h> + +#define MPIO_TEST_WRITE_SIZE 1024*1024 /* 1 MB */ + +void +test_mpio_overlap_writes(char *filename[]) +{ + int mpi_size, mpi_rank; + MPI_Comm comm; + MPI_Info info = MPI_INFO_NULL; + int color, mrc; + MPI_File fh; + int newrank, newprocs; + hid_t fid; /* file IDs */ + hid_t acc_tpl; /* File access properties */ + herr_t ret; /* generic return value */ + int i; + char buf[4093]; /* use some prime number for size */ + int bufsize = sizeof(buf); + int stride; + MPI_Offset mpi_off; + MPI_Status mpi_stat; + + + if (verbose) + printf("MPIO independent overlapping writes test on file %s\n", + filename[0]); + + /* set up MPI parameters */ + MPI_Comm_size(MPI_COMM_WORLD,&mpi_size); + MPI_Comm_rank(MPI_COMM_WORLD,&mpi_rank); + + /* Need at least 2 processes */ + VRFY((mpi_size >= 2), "Has at least 2 processes"); + + /* splits processes 0 to n-2 into one comm. and the last one into another */ + color = ((mpi_rank < (mpi_size - 1)) ? 0 : 1); + mrc = MPI_Comm_split (MPI_COMM_WORLD, color, mpi_rank, &comm); + VRFY((mrc==MPI_SUCCESS), "Comm_split succeeded"); + + if (color==0){ + /* First n-1 processes (color==0) open a file and write it */ + mrc = MPI_File_open(comm, filename[0], MPI_MODE_CREATE|MPI_MODE_RDWR, + info, &fh); + VRFY((mrc==MPI_SUCCESS), ""); + + stride = 1; + mpi_off = mpi_rank*stride; + while (mpi_off < MPIO_TEST_WRITE_SIZE){ + /* make sure the write does not exceed the TEST_WRITE_SIZE */ + if (mpi_off+stride > MPIO_TEST_WRITE_SIZE) + stride = MPIO_TEST_WRITE_SIZE - mpi_off; + + /* set data to some trivial pattern for easy verification */ + for (i=0; i<stride; i++) + buf[i] = (mpi_off+i) & 0x7f; + mrc = MPI_File_write_at(fh, mpi_off, buf, stride, MPI_BYTE, + &mpi_stat); + VRFY((mrc==MPI_SUCCESS), ""); + + /* move the offset pointer to last byte written by all processes */ + mpi_off += (mpi_size - 1 - mpi_rank) * stride; + + /* Increase chunk size without exceeding buffer size. */ + /* Then move the starting offset for next write. */ + stride *= 2; + if (stride > bufsize) + stride = bufsize; + mpi_off += mpi_rank*stride; + } + + /* close file and free the communicator */ + mrc = MPI_File_close(&fh); + VRFY((mrc==MPI_SUCCESS), "MPI_FILE_CLOSE"); + mrc = MPI_Comm_free(&comm); + VRFY((mrc==MPI_SUCCESS), "MPI_Comm_free"); + + /* sync with the other waiting processes */ + mrc = MPI_Barrier(MPI_COMM_WORLD); + VRFY((mrc==MPI_SUCCESS), "Sync after writes"); + }else{ + /* last process waits till writes are done, + * then opens file to verify data. + */ + mrc = MPI_Barrier(MPI_COMM_WORLD); + VRFY((mrc==MPI_SUCCESS), "Sync after writes"); + + mrc = MPI_File_open(comm, filename[0], MPI_MODE_RDONLY, + info, &fh); + VRFY((mrc==MPI_SUCCESS), ""); + + stride = bufsize; + for (mpi_off=0; mpi_off < MPIO_TEST_WRITE_SIZE; mpi_off += bufsize){ + /* make sure it does not read beyond end of data */ + if (mpi_off+stride > MPIO_TEST_WRITE_SIZE) + stride = MPIO_TEST_WRITE_SIZE - mpi_off; + mrc = MPI_File_read_at(fh, mpi_off, buf, stride, MPI_BYTE, + &mpi_stat); + VRFY((mrc==MPI_SUCCESS), ""); + for (i=0; i<stride; i++){ + if (buf[i] != ((mpi_off+i) & 0x7f)) + printf("proc %d: found data error at [%d], expect %d, got %d\n", + mpi_rank, mpi_off+i, mpi_off & 0x7f, buf[0]); + } + } + + /* close file and free the communicator */ + mrc = MPI_File_close(&fh); + VRFY((mrc==MPI_SUCCESS), "MPI_FILE_CLOSE"); + mrc = MPI_Comm_free(&comm); + VRFY((mrc==MPI_SUCCESS), "MPI_Comm_free"); + } + + /* + * one more sync to ensure all processes have done reading + * before ending this test. + */ + mrc = MPI_Barrier(MPI_COMM_WORLD); + VRFY((mrc==MPI_SUCCESS), "Sync before leaving test"); +} + diff --git a/testpar/testphdf5.c b/testpar/testphdf5.c index b067dd5..dfa0ab8 100644 --- a/testpar/testphdf5.c +++ b/testpar/testphdf5.c @@ -197,14 +197,14 @@ main(int argc, char **argv) } if (dowrite){ - MPI_BANNER("testing dataset using split communicators..."); - test_split_comm_access(filenames); - -#ifdef MPIOTEST +#ifndef MPIOTEST MPI_BANNER("testing MPIO independent overlapping writes..."); test_mpio_overlap_writes(filenames); #endif + MPI_BANNER("testing dataset using split communicators..."); + test_split_comm_access(filenames); + MPI_BANNER("testing dataset independent write..."); dataset_writeInd(filenames[0]); |