diff options
author | Dana Robinson <derobins@hdfgroup.org> | 2018-04-30 14:52:07 (GMT) |
---|---|---|
committer | Dana Robinson <derobins@hdfgroup.org> | 2018-04-30 14:52:07 (GMT) |
commit | 09b1106e39edc1d2fa7c92c9c8de57d8c01e4e71 (patch) | |
tree | 9b65ffe80986b70b82006f00a3e6a5d847841806 | |
parent | fa829e322ed44a67e2b3f2d6adf1306ad794859b (diff) | |
download | hdf5-09b1106e39edc1d2fa7c92c9c8de57d8c01e4e71.zip hdf5-09b1106e39edc1d2fa7c92c9c8de57d8c01e4e71.tar.gz hdf5-09b1106e39edc1d2fa7c92c9c8de57d8c01e4e71.tar.bz2 |
First stage of moving H5DOread/write_chunk() to src/ and making
them H5D calls.
* Moved H5DOread/write_chunk() to H5Dio.c and renamed to H5D*.
* Moved the hl/test/test_dset_opt test to test/ and renamed to
direct_chunk.
* Moved the hl/test/dectris_hl_perf test to tools/test/perform
and renamed to direct_write_perf.
* Updated autotools and CMake files.
-rw-r--r-- | hl/src/H5DO.c | 227 | ||||
-rw-r--r-- | hl/src/H5DOpublic.h | 9 | ||||
-rw-r--r-- | hl/test/CMakeLists.txt | 1 | ||||
-rw-r--r-- | hl/test/CMakeTests.cmake | 2 | ||||
-rw-r--r-- | hl/test/Makefile.am | 5 | ||||
-rw-r--r-- | src/H5Dio.c | 155 | ||||
-rw-r--r-- | src/H5Dpublic.h | 4 | ||||
-rw-r--r-- | test/CMakeLists.txt | 1 | ||||
-rw-r--r-- | test/CMakeTests.cmake | 1 | ||||
-rw-r--r-- | test/Makefile.am | 13 | ||||
-rw-r--r-- | test/direct_chunk.c (renamed from hl/test/test_dset_opt.c) | 160 | ||||
-rw-r--r-- | tools/test/perform/direct_write_perf.c (renamed from hl/test/dectris_hl_perf.c) | 19 |
12 files changed, 291 insertions, 306 deletions
diff --git a/hl/src/H5DO.c b/hl/src/H5DO.c index 99cf2f7..20d5a4a 100644 --- a/hl/src/H5DO.c +++ b/hl/src/H5DO.c @@ -22,163 +22,20 @@ /* public LT prototypes */ #include "H5DOpublic.h" - /*------------------------------------------------------------------------- - * Function: H5DOwrite_chunk - * - * Purpose: Writes an entire chunk to the file directly. - * - * Return: Non-negative on success/Negative on failure - * - * Programmer: Raymond Lu - * 30 July 2012 + * Function: H5DOappend() * - *------------------------------------------------------------------------- - */ -herr_t -H5DOwrite_chunk(hid_t dset_id, hid_t dxpl_id, uint32_t filters, const hsize_t *offset, - size_t data_size, const void *buf) -{ - hbool_t created_dxpl = FALSE; /* Whether we created a DXPL */ - hbool_t do_direct_write = TRUE; /* Flag for direct writes */ - uint32_t data_size_32; /* Chunk data size (limited to 32-bits currently) */ - herr_t ret_value = FAIL; /* Return value */ - - /* Check arguments */ - if(dset_id < 0) - goto done; - if(!buf) - goto done; - if(!offset) - goto done; - if(!data_size) - goto done; - data_size_32 = (uint32_t)data_size; - if(data_size != (size_t)data_size_32) - goto done; - - /* If the user passed in a default DXPL, create one to pass to H5Dwrite() */ - if(H5P_DEFAULT == dxpl_id) { - if((dxpl_id = H5Pcreate(H5P_DATASET_XFER)) < 0) - goto done; - created_dxpl = TRUE; - } /* end if */ - - /* Set direct write parameters */ - if(H5Pset(dxpl_id, H5D_XFER_DIRECT_CHUNK_WRITE_FLAG_NAME, &do_direct_write) < 0) - goto done; - if(H5Pset(dxpl_id, H5D_XFER_DIRECT_CHUNK_WRITE_FILTERS_NAME, &filters) < 0) - goto done; - if(H5Pset(dxpl_id, H5D_XFER_DIRECT_CHUNK_WRITE_OFFSET_NAME, &offset) < 0) - goto done; - if(H5Pset(dxpl_id, H5D_XFER_DIRECT_CHUNK_WRITE_DATASIZE_NAME, &data_size_32) < 0) - goto done; - - /* Write chunk */ - if(H5Dwrite(dset_id, 0, H5S_ALL, H5S_ALL, dxpl_id, buf) < 0) - goto done; - - /* Indicate success */ - ret_value = SUCCEED; - -done: - if(created_dxpl) { - if(H5Pclose(dxpl_id) < 0) - ret_value = FAIL; - } /* end if */ - else { - /* Reset the direct write flag on user DXPL */ - do_direct_write = FALSE; - if(H5Pset(dxpl_id, H5D_XFER_DIRECT_CHUNK_WRITE_FLAG_NAME, &do_direct_write) < 0) - ret_value = FAIL; - } - - return ret_value; -} /* end H5DOwrite_chunk() */ - - -/*------------------------------------------------------------------------- - * Function: H5DOread_chunk + * Purpose: To append elements to a dataset. * - * Purpose: Reads an entire chunk from the file directly. + * axis: the dataset dimension (zero-based) for the append + * extension: the # of elements to append for the axis-th dimension + * memtype: the datatype + * buf: buffer with data for the append * * Return: Non-negative on success/Negative on failure * - * Programmer: Matthew Strong (GE Healthcare) - * 14 February 2016 - * - *--------------------------------------------------------------------------- - */ -herr_t -H5DOread_chunk(hid_t dset_id, hid_t dxpl_id, const hsize_t *offset, uint32_t *filters, - void *buf) -{ - hbool_t created_dxpl = FALSE; /* Whether we created a DXPL */ - hbool_t do_direct_read = TRUE; /* Flag for direct writes */ - herr_t ret_value = FAIL; /* Return value */ - - /* Check arguments */ - if(dset_id < 0) - goto done; - if(!buf) - goto done; - if(!offset) - goto done; - if(!filters) - goto done; - - /* If the user passed in a default DXPL, create one to pass to H5Dwrite() */ - if(H5P_DEFAULT == dxpl_id) { - if((dxpl_id = H5Pcreate(H5P_DATASET_XFER)) < 0) - goto done; - created_dxpl = TRUE; - } /* end if */ - - /* Set direct write parameters */ - if(H5Pset(dxpl_id, H5D_XFER_DIRECT_CHUNK_READ_FLAG_NAME, &do_direct_read) < 0) - goto done; - if(H5Pset(dxpl_id, H5D_XFER_DIRECT_CHUNK_READ_OFFSET_NAME, &offset) < 0) - goto done; - - /* Read chunk */ - if(H5Dread(dset_id, 0, H5S_ALL, H5S_ALL, dxpl_id, buf) < 0) - goto done; - /* Get the filter mask */ - if(H5Pget(dxpl_id, H5D_XFER_DIRECT_CHUNK_READ_FILTERS_NAME, filters) < 0) - goto done; - - /* Indicate success */ - ret_value = SUCCEED; - -done: - if(created_dxpl) { - if(H5Pclose(dxpl_id) < 0) - ret_value = FAIL; - } /* end if */ - else { - /* Reset the direct read flag on user DXPL */ - do_direct_read = FALSE; - if(H5Pset(dxpl_id, H5D_XFER_DIRECT_CHUNK_READ_FLAG_NAME, &do_direct_read) < 0) - ret_value = FAIL; - } - - return ret_value; -} /* end H5DOread_chunk() */ - - -/*------------------------------------------------------------------------- - * Function: H5DOappend() - * - * Purpose: To append elements to a dataset. - * axis: the dataset dimension (zero-based) for the append - * extension: the # of elements to append for the axis-th dimension - * memtype: the datatype - * buf: buffer with data for the append - * - * Return: Non-negative on success/Negative on failure - * - * Programmer: Vailin Choi; Jan 2014 + * Programmer: Vailin Choi; Jan 2014 * * Note: * This routine is copied from the fast forward feature branch: features/hdf5_ff @@ -227,7 +84,7 @@ H5DOappend(hid_t dset_id, hid_t dxpl_id, unsigned axis, size_t extension, /* check arguments */ if(H5I_DATASET != H5Iget_type(dset_id)) - goto done; + goto done; /* If the user passed in a default DXPL, create one to pass to H5Dwrite() */ if(H5P_DEFAULT == dxpl_id) { @@ -236,35 +93,35 @@ H5DOappend(hid_t dset_id, hid_t dxpl_id, unsigned axis, size_t extension, created_dxpl = TRUE; } /* end if */ else if(TRUE != H5Pisa_class(dxpl_id, H5P_DATASET_XFER)) - goto done; + goto done; /* Get the dataspace of the dataset */ if(FAIL == (space_id = H5Dget_space(dset_id))) - goto done; + goto done; /* Get the rank of this dataspace */ if((sndims = H5Sget_simple_extent_ndims(space_id)) < 0) - goto done; + goto done; ndims = (unsigned)sndims; /* Verify correct axis */ if(axis >= ndims) - goto done; + goto done; /* Get the dimensions sizes of the dataspace */ if(H5Sget_simple_extent_dims(space_id, size, NULL) < 0) - goto done; + goto done; /* Adjust the dimension size of the requested dimension, but first record the old dimension size */ old_size = size[axis]; size[axis] += extension; if(size[axis] < old_size) - goto done; + goto done; /* Set the extent of the dataset to the new dimension */ if(H5Dset_extent(dset_id, size) < 0) - goto done; + goto done; /* Get the new dataspace of the dataset */ if(FAIL == (new_space_id = H5Dget_space(dset_id))) @@ -282,51 +139,51 @@ H5DOappend(hid_t dset_id, hid_t dxpl_id, unsigned axis, size_t extension, } /* end if */ } /* end for */ if(FAIL == H5Sselect_hyperslab(new_space_id, H5S_SELECT_SET, start, stride, count, block)) - goto done; + goto done; /* The # of elemnts in the new extended dataspace */ if((snelmts = H5Sget_select_npoints(new_space_id)) < 0) - goto done; + goto done; nelmts = (hsize_t)snelmts; /* create a memory space */ if(FAIL == (mem_space_id = H5Screate_simple(1, &nelmts, NULL))) - goto done; + goto done; /* Write the data */ if(H5Dwrite(dset_id, memtype, mem_space_id, new_space_id, dxpl_id, buf) < 0) - goto done; + goto done; /* Obtain the dataset's access property list */ if((dapl = H5Dget_access_plist(dset_id)) < 0) - goto done; + goto done; /* Allocate the boundary array */ boundary = (hsize_t *)HDmalloc(ndims * sizeof(hsize_t)); /* Retrieve the append flush property */ if(H5Pget_append_flush(dapl, ndims, boundary, &append_cb, &udata) < 0) - goto done; + goto done; /* No boundary for this axis */ if(boundary[axis] != 0) { - /* Determine whether a boundary is hit or not */ - for(k = start[axis]; k < size[axis]; k++) - if(!((k + 1) % boundary[axis])) { - hit = TRUE; - break; - } - - if(hit) { /* Hit the boundary */ - /* Invoke callback if there is one */ - if(append_cb && append_cb(dset_id, size, udata) < 0) - goto done; - - /* Do a dataset flush */ - if(H5Dflush(dset_id) < 0) - goto done; - } /* end if */ + /* Determine whether a boundary is hit or not */ + for(k = start[axis]; k < size[axis]; k++) + if(!((k + 1) % boundary[axis])) { + hit = TRUE; + break; + } + + if(hit) { /* Hit the boundary */ + /* Invoke callback if there is one */ + if(append_cb && append_cb(dset_id, size, udata) < 0) + goto done; + + /* Do a dataset flush */ + if(H5Dflush(dset_id) < 0) + goto done; + } /* end if */ } /* end if */ /* Indicate success */ @@ -341,22 +198,22 @@ done: /* Close old dataspace */ if(space_id != FAIL && H5Sclose(space_id) < 0) - ret_value = FAIL; + ret_value = FAIL; /* Close new dataspace */ if(new_space_id != FAIL && H5Sclose(new_space_id) < 0) - ret_value = FAIL; + ret_value = FAIL; /* Close memory dataspace */ if(mem_space_id != FAIL && H5Sclose(mem_space_id) < 0) - ret_value = FAIL; + ret_value = FAIL; /* Close the dataset access property list */ if(dapl != FAIL && H5Pclose(dapl) < 0) - ret_value = FAIL; + ret_value = FAIL; if(boundary) - HDfree(boundary); + HDfree(boundary); return ret_value; } /* H5DOappend() */ diff --git a/hl/src/H5DOpublic.h b/hl/src/H5DOpublic.h index d5c8de4..7f83a7f 100644 --- a/hl/src/H5DOpublic.h +++ b/hl/src/H5DOpublic.h @@ -25,15 +25,6 @@ extern "C" { *------------------------------------------------------------------------- */ -H5_HLDLL herr_t H5DOwrite_chunk(hid_t dset_id, hid_t dxpl_id, uint32_t filters, - const hsize_t *offset, size_t data_size, const void *buf); - -H5_HLDLL herr_t H5DOread_chunk(hid_t dset_id, /*in*/ - hid_t dxpl_id, /*in*/ - const hsize_t *offset, /*in*/ - uint32_t *filters, /*out*/ - void *buf); /*out*/ - H5_HLDLL herr_t H5DOappend(hid_t dset_id, hid_t dxpl_id, unsigned axis, size_t extension, hid_t memtype, const void *buf); diff --git a/hl/test/CMakeLists.txt b/hl/test/CMakeLists.txt index 6b3c764..8a059a2 100644 --- a/hl/test/CMakeLists.txt +++ b/hl/test/CMakeLists.txt @@ -47,7 +47,6 @@ HL_ADD_EXE (test_image) HL_ADD_EXE (test_file_image) HL_ADD_EXE (test_table) HL_ADD_EXE (test_ds) -HL_ADD_EXE (test_dset_opt) HL_ADD_EXE (test_ld) HL_ADD_EXE (test_dset_append) diff --git a/hl/test/CMakeTests.cmake b/hl/test/CMakeTests.cmake index e5eb58e..6f57a8c 100644 --- a/hl/test/CMakeTests.cmake +++ b/hl/test/CMakeTests.cmake @@ -90,7 +90,6 @@ add_test ( test_ds8.h5 test_ds9.h5 test_ds10.h5 - test_dectris.h5 test_image1.h5 test_image2.h5 test_image3.h5 @@ -115,7 +114,6 @@ HL_add_test (test_file_image) HL_add_test (test_table) HL_add_test (test_ds) HL_add_test (test_packet) -HL_add_test (test_dset_opt) HL_add_test (test_ld) HL_add_test (test_dset_append) diff --git a/hl/test/Makefile.am b/hl/test/Makefile.am index e16550f..35e680c 100644 --- a/hl/test/Makefile.am +++ b/hl/test/Makefile.am @@ -26,7 +26,7 @@ LDADD=$(LIBH5_HL) $(LIBH5TEST) $(LIBHDF5) # Test programs. These are our main targets. They should be listed in the # order to be executed, generally most specific tests to least specific tests. -TEST_PROG=test_lite test_image test_file_image test_table test_ds test_packet test_dset_opt \ +TEST_PROG=test_lite test_image test_file_image test_table test_ds test_packet \ test_ld test_dset_append check_PROGRAMS=$(TEST_PROG) @@ -45,8 +45,7 @@ endif CHECK_CLEANFILES+=combine_tables[1-2].h5 test_ds[1-9].h5 test_ds10.h5 \ test_image[1-3].h5 file_img[1-2].h5 test_lite[1-4].h5 test_table.h5 \ test_packet_table.h5 test_packet_compress.h5 test_detach.h5 \ - test_packet_table_vlen.h5 testfl_packet_table_vlen.h5 \ - test_dectris.h5 test_append.h5 + test_packet_table_vlen.h5 testfl_packet_table_vlen.h5 test_append.h5 # Sources for test_packet executable test_packet_SOURCES=test_packet.c test_packet_vlen.c diff --git a/src/H5Dio.c b/src/H5Dio.c index cd6b627..70a0bfe 100644 --- a/src/H5Dio.c +++ b/src/H5Dio.c @@ -125,12 +125,13 @@ H5Dread(hid_t dset_id, hid_t mem_type_id, hid_t mem_space_id, /* check arguments */ if(NULL == (dset = (H5D_t *)H5I_object_verify(dset_id, H5I_DATASET))) - HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a dataset") + HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "dset_id is not a dataset ID") if(NULL == dset->oloc.file) - HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a dataset") - - if(mem_space_id < 0 || file_space_id < 0) - HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a data space") + HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "dataset is not associated with a file") + if(mem_space_id < 0) + HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid mem_space_id") + if(file_space_id < 0) + HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid file_space_id") if(H5S_ALL != mem_space_id) { if(NULL == (mem_space = (const H5S_t *)H5I_object_verify(mem_space_id, H5I_DATASPACE))) @@ -215,6 +216,76 @@ done: /*------------------------------------------------------------------------- + * Function: H5Dread_chunk + * + * Purpose: Reads an entire chunk from the file directly. + * + * Return: Non-negative on success/Negative on failure + * + * Programmer: Matthew Strong (GE Healthcare) + * 14 February 2016 + * + *--------------------------------------------------------------------------- + */ +herr_t +H5Dread_chunk(hid_t dset_id, hid_t dxpl_id, const hsize_t *offset, uint32_t *filters, + void *buf) +{ + hbool_t created_dxpl = FALSE; /* Whether we created a DXPL */ + hbool_t do_direct_read = TRUE; /* Flag for direct writes */ + herr_t ret_value = SUCCEED; /* Return value */ + + FUNC_ENTER_API(FAIL) + H5TRACE5("e", "ii*h*Iu*x", dset_id, dxpl_id, offset, filters, buf); + + /* Check arguments */ + if(dset_id < 0) + HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid dataset ID") + if(!buf) + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "buf cannot be NULL") + if(!offset) + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "offset cannot be NULL") + if(!filters) + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "filters cannot be NULL") + + /* If the user passed in a default DXPL, create one to pass to H5Dwrite() */ + if(H5P_DEFAULT == dxpl_id) { + if((dxpl_id = H5Pcreate(H5P_DATASET_XFER)) < 0) + HGOTO_ERROR(H5E_PLIST, H5E_CANTCREATE, FAIL, "cannot create dxpl") + created_dxpl = TRUE; + } /* end if */ + + /* Set direct write parameters */ + if(H5Pset(dxpl_id, H5D_XFER_DIRECT_CHUNK_READ_FLAG_NAME, &do_direct_read) < 0) + HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "cannot set direct read property") + if(H5Pset(dxpl_id, H5D_XFER_DIRECT_CHUNK_READ_OFFSET_NAME, &offset) < 0) + HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "cannot set offset property") + + /* Read chunk */ + if(H5Dread(dset_id, 0, H5S_ALL, H5S_ALL, dxpl_id, buf) < 0) + HGOTO_ERROR(H5E_DATASET, H5E_READERROR, FAIL, "cannot read from dataset") + + /* Get the filter mask */ + if(H5Pget(dxpl_id, H5D_XFER_DIRECT_CHUNK_READ_FILTERS_NAME, filters) < 0) + HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "cannot get filter mask property") + +done: + if(created_dxpl) { + if(H5Pclose(dxpl_id) < 0) + HDONE_ERROR(H5E_PLIST, H5E_CANTRELEASE, FAIL, "unable to close dxpl") + } /* end if */ + else { + /* Reset the direct read flag on user DXPL */ + do_direct_read = FALSE; + if(H5Pset(dxpl_id, H5D_XFER_DIRECT_CHUNK_READ_FLAG_NAME, &do_direct_read) < 0) + HDONE_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "cannot reset direct write property") + } + + FUNC_LEAVE_API(ret_value) +} /* end H5Dread_chunk() */ + + +/*------------------------------------------------------------------------- * Function: H5Dwrite * * Purpose: Writes (part of) a DSET from application memory BUF to the @@ -311,6 +382,80 @@ done: /*------------------------------------------------------------------------- + * Function: H5Dwrite_chunk + * + * Purpose: Writes an entire chunk to the file directly. + * + * Return: Non-negative on success/Negative on failure + * + * Programmer: Raymond Lu + * 30 July 2012 + * + *------------------------------------------------------------------------- + */ +herr_t +H5Dwrite_chunk(hid_t dset_id, hid_t dxpl_id, uint32_t filters, const hsize_t *offset, + size_t data_size, const void *buf) +{ + hbool_t created_dxpl = FALSE; /* Whether we created a DXPL */ + hbool_t do_direct_write = TRUE; /* Flag for direct writes */ + uint32_t data_size_32; /* Chunk data size (limited to 32-bits currently) */ + herr_t ret_value = SUCCEED; /* Return value */ + + FUNC_ENTER_API(FAIL) + H5TRACE6("e", "iiIu*hz*x", dset_id, dxpl_id, filters, offset, data_size, buf); + + /* Check arguments */ + if(dset_id < 0) + HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid dataset ID") + if(!buf) + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "buf cannot be NULL") + if(!offset) + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "offset cannot be NULL") + if(!data_size) + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "data_size cannot be NULL") + data_size_32 = (uint32_t)data_size; + if(data_size != (size_t)data_size_32) + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "invalid data_size") + + /* If the user passed in a default DXPL, create one to pass to H5Dwrite() */ + if(H5P_DEFAULT == dxpl_id) { + if((dxpl_id = H5Pcreate(H5P_DATASET_XFER)) < 0) + HGOTO_ERROR(H5E_PLIST, H5E_CANTCREATE, FAIL, "cannot create dxpl") + created_dxpl = TRUE; + } /* end if */ + + /* Set direct write parameters */ + if(H5Pset(dxpl_id, H5D_XFER_DIRECT_CHUNK_WRITE_FLAG_NAME, &do_direct_write) < 0) + HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "cannot set direct read property") + if(H5Pset(dxpl_id, H5D_XFER_DIRECT_CHUNK_WRITE_FILTERS_NAME, &filters) < 0) + HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "cannot set filters property") + if(H5Pset(dxpl_id, H5D_XFER_DIRECT_CHUNK_WRITE_OFFSET_NAME, &offset) < 0) + HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "cannot set offset property") + if(H5Pset(dxpl_id, H5D_XFER_DIRECT_CHUNK_WRITE_DATASIZE_NAME, &data_size_32) < 0) + HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "cannot set data size property") + + /* Write chunk */ + if(H5Dwrite(dset_id, 0, H5S_ALL, H5S_ALL, dxpl_id, buf) < 0) + HGOTO_ERROR(H5E_DATASET, H5E_WRITEERROR, FAIL, "cannot write to dataset") + +done: + if(created_dxpl) { + if(H5Pclose(dxpl_id) < 0) + HDONE_ERROR(H5E_PLIST, H5E_CANTRELEASE, FAIL, "unable to close dxpl") + } /* end if */ + else { + /* Reset the direct write flag on user DXPL */ + do_direct_write = FALSE; + if(H5Pset(dxpl_id, H5D_XFER_DIRECT_CHUNK_WRITE_FLAG_NAME, &do_direct_write) < 0) + HDONE_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "cannot reset direct write property") + } + + FUNC_LEAVE_API(ret_value) +} /* end H5Dwrite_chunk() */ + + +/*------------------------------------------------------------------------- * Function: H5D__pre_write * * Purpose: Preparation for writing data. diff --git a/src/H5Dpublic.h b/src/H5Dpublic.h index 790674a..be80cef 100644 --- a/src/H5Dpublic.h +++ b/src/H5Dpublic.h @@ -157,6 +157,10 @@ H5_DLL herr_t H5Dread(hid_t dset_id, hid_t mem_type_id, hid_t mem_space_id, hid_t file_space_id, hid_t plist_id, void *buf/*out*/); H5_DLL herr_t H5Dwrite(hid_t dset_id, hid_t mem_type_id, hid_t mem_space_id, hid_t file_space_id, hid_t plist_id, const void *buf); +H5_DLL herr_t H5Dwrite_chunk(hid_t dset_id, hid_t dxpl_id, uint32_t filters, + const hsize_t *offset, size_t data_size, const void *buf); +H5_DLL herr_t H5Dread_chunk(hid_t dset_id, hid_t dxpl_id, + const hsize_t *offset, uint32_t *filters, void *buf); H5_DLL herr_t H5Diterate(void *buf, hid_t type_id, hid_t space_id, H5D_operator_t op, void *operator_data); H5_DLL herr_t H5Dvlen_reclaim(hid_t type_id, hid_t space_id, hid_t plist_id, void *buf); diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index ec560f2..0d93211 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -214,6 +214,7 @@ set (H5_TESTS cmpd_dset filter_fail extend + direct_chunk external efc objcopy diff --git a/test/CMakeTests.cmake b/test/CMakeTests.cmake index 04cc41f..6f914ba 100644 --- a/test/CMakeTests.cmake +++ b/test/CMakeTests.cmake @@ -532,6 +532,7 @@ set (test_CLEANFILES vds_swmr.h5 vds_swmr_src_*.h5 tmp/vds_src_2.h5 + direct_chunk.h5 ) # Remove any output file left over from previous test run diff --git a/test/Makefile.am b/test/Makefile.am index ab81f50..8f671ac 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -55,11 +55,12 @@ TEST_PROG= testhdf5 \ cache cache_api cache_image cache_tagging lheap ohdr stab gheap \ evict_on_close farray earray btree2 fheap \ pool accum hyperslab istore bittests dt_arith page_buffer \ - dtypes dsets cmpd_dset filter_fail extend external efc objcopy links unlink \ - twriteorder big mtime fillval mount flush1 flush2 app_ref enum \ - set_extent ttsafe enc_dec_plist enc_dec_plist_cross_platform\ - getname vfd ntypes dangle dtransform reserved cross_read \ - freespace mf vds file_image unregister cache_logging cork swmr + dtypes dsets cmpd_dset filter_fail extend direct_chunk external efc \ + objcopy links unlink twriteorder big mtime fillval mount \ + flush1 flush2 app_ref enum set_extent ttsafe enc_dec_plist \ + enc_dec_plist_cross_platform getname vfd ntypes dangle dtransform \ + reserved cross_read freespace mf vds file_image unregister \ + cache_logging cork swmr # List programs to be built when testing here. # error_test and err_compat are built at the same time as the other tests, but executed by testerror.sh. @@ -190,7 +191,7 @@ CHECK_CLEANFILES+=accum.h5 cmpd_dset.h5 compact_dataset.h5 dataset.h5 dset_offse flushrefresh_VERIFICATION_DONE atomic_data accum_swmr_big.h5 ohdr_swmr.h5 \ test_swmr*.h5 cache_logging.h5 cache_logging.out vds_swmr.h5 vds_swmr_src_*.h5 \ swmr[0-2].h5 swmr_writer.out swmr_writer.log.* swmr_reader.out.* swmr_reader.log.* \ - tbogus.h5.copy cache_image_test.h5 + tbogus.h5.copy cache_image_test.h5 direct_chunk.h5 # Sources for testhdf5 executable testhdf5_SOURCES=testhdf5.c tarray.c tattr.c tchecksum.c tconfig.c tfile.c \ diff --git a/hl/test/test_dset_opt.c b/test/direct_chunk.c index ef4cf13..2ef38ea 100644 --- a/hl/test/test_dset_opt.c +++ b/test/direct_chunk.c @@ -11,11 +11,7 @@ * help@hdfgroup.org. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -#include <stdlib.h> -#include <string.h> -#include "h5hltest.h" -#include "H5DOpublic.h" -#include <math.h> +#include "h5test.h" #if defined(H5_HAVE_ZLIB_H) && !defined(H5_ZLIB_HEADER) # define H5_ZLIB_HEADER "zlib.h" @@ -24,7 +20,7 @@ # include H5_ZLIB_HEADER /* "zlib.h" */ #endif -#define FILE_NAME "test_dectris.h5" +#define FILE_NAME "direct_chunk.h5" /* Datasets for Direct Write tests */ #define DATASETNAME1 "direct_write" @@ -100,7 +96,7 @@ const H5Z_class2_t H5Z_BOGUS2[1] = {{ /*------------------------------------------------------------------------- * Function: test_direct_chunk_write * - * Purpose: Test the basic functionality of H5DOwrite_chunk + * Purpose: Test the basic functionality of H5Dwrite_chunk * * Return: Success: 0 * Failure: 1 @@ -143,7 +139,7 @@ test_direct_chunk_write (hid_t file) hsize_t count[2]; /* Block count */ hsize_t block[2]; /* Block sizes */ - TESTING("basic functionality of H5DOwrite_chunk"); + TESTING("basic functionality of H5Dwrite_chunk"); /* * Create the data space with unlimited dimensions. @@ -184,7 +180,7 @@ test_direct_chunk_write (hid_t file) /* * Write the data for the dataset. It should stay in the chunk cache. - * It will be evicted from the cache by the H5DOwrite_chunk calls. + * It will be evicted from the cache by the H5Dwrite_chunk calls. */ if((status = H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, dxpl, data)) < 0) @@ -218,7 +214,7 @@ test_direct_chunk_write (hid_t file) * dataset, using the direct writing function. */ for(i=0; i<NX/CHUNK_NX; i++) { for(j=0; j<NY/CHUNK_NY; j++) { - status = H5DOwrite_chunk(dataset, dxpl, filter_mask, offset, z_dst_nbytes, outbuf); + status = H5Dwrite_chunk(dataset, dxpl, filter_mask, offset, z_dst_nbytes, outbuf); offset[1] += CHUNK_NY; } offset[0] += CHUNK_NX; @@ -292,7 +288,7 @@ test_direct_chunk_write (hid_t file) offset[0] = offset[1] = 0; for(i=0; i<NX/CHUNK_NX; i++) { for(j=0; j<NY/CHUNK_NY; j++) { - status = H5DOwrite_chunk(dataset, dxpl, filter_mask, offset, z_dst_nbytes, outbuf); + status = H5Dwrite_chunk(dataset, dxpl, filter_mask, offset, z_dst_nbytes, outbuf); offset[1] += CHUNK_NY; } offset[0] += CHUNK_NX; @@ -389,7 +385,7 @@ test_direct_chunk_overwrite_data(hid_t fid) int16_t n; int16_t read_buf[OVERWRITE_CHUNK_NY][OVERWRITE_CHUNK_2NX]; - TESTING("overwriting existing data with H5DOwrite_chunk"); + TESTING("overwriting existing data with H5Dwrite_chunk"); /* Create the dataset's data space */ if ((sid = H5Screate_simple(OVERWRITE_NDIMS, dset_dims, dset_max_dims)) < 0) @@ -417,17 +413,17 @@ test_direct_chunk_overwrite_data(hid_t fid) } /* Write chunk data using the direct write function. */ - if (H5DOwrite_chunk(did, H5P_DEFAULT, filter_mask, offset, buf_size, data_buf) < 0) + if (H5Dwrite_chunk(did, H5P_DEFAULT, filter_mask, offset, buf_size, data_buf) < 0) FAIL_STACK_ERROR /* Write second chunk. */ offset[2] = OVERWRITE_CHUNK_NX; - if (H5DOwrite_chunk(did, H5P_DEFAULT, filter_mask, offset, buf_size, data_buf) < 0) + if (H5Dwrite_chunk(did, H5P_DEFAULT, filter_mask, offset, buf_size, data_buf) < 0) FAIL_STACK_ERROR /* Overwrite first chunk. */ offset[2] = 0; - if (H5DOwrite_chunk(did, H5P_DEFAULT, filter_mask, offset, buf_size, overwrite_buf) < 0) + if (H5Dwrite_chunk(did, H5P_DEFAULT, filter_mask, offset, buf_size, overwrite_buf) < 0) FAIL_STACK_ERROR /* Read the data back out */ @@ -504,7 +500,7 @@ test_skip_compress_write1(hid_t file) hsize_t count[2]; /* Block count */ hsize_t block[2]; /* Block sizes */ - TESTING("skipping compression filter for H5DOwrite_chunk/H5DOread_chunk"); + TESTING("skipping compression filter for H5Dwrite_chunk/H5Dread_chunk"); /* * Create the data space with unlimited dimensions. @@ -551,7 +547,7 @@ test_skip_compress_write1(hid_t file) filter_mask = 0x00000001; - if((status = H5DOwrite_chunk(dataset, dxpl, filter_mask, offset, buf_size, direct_buf)) < 0) + if((status = H5Dwrite_chunk(dataset, dxpl, filter_mask, offset, buf_size, direct_buf)) < 0) goto error; if(H5Fflush(dataset, H5F_SCOPE_LOCAL) < 0) @@ -597,7 +593,7 @@ test_skip_compress_write1(hid_t file) /* Read the raw chunk back */ HDmemset(&read_direct_buf, 0, sizeof(read_direct_buf)); - if((status = H5DOread_chunk(dataset, H5P_DEFAULT, offset, &read_filter_mask, read_direct_buf)) < 0) + if((status = H5Dread_chunk(dataset, H5P_DEFAULT, offset, &read_filter_mask, read_direct_buf)) < 0) goto error; if(read_filter_mask != filter_mask) goto error; @@ -822,7 +818,7 @@ test_skip_compress_write2(hid_t file) /* compression filter is the middle one to be skipped */ filter_mask = 0x00000002; - if((status = H5DOwrite_chunk(dataset, dxpl, filter_mask, offset, buf_size, direct_buf)) < 0) + if((status = H5Dwrite_chunk(dataset, dxpl, filter_mask, offset, buf_size, direct_buf)) < 0) goto error; if(H5Fflush(dataset, H5F_SCOPE_LOCAL) < 0) @@ -868,7 +864,7 @@ test_skip_compress_write2(hid_t file) /* Read the raw chunk back */ HDmemset(&read_direct_buf, 0, sizeof(read_direct_buf)); - if((status = H5DOread_chunk(dataset, H5P_DEFAULT, offset, &read_filter_mask, read_direct_buf)) < 0) + if((status = H5Dread_chunk(dataset, H5P_DEFAULT, offset, &read_filter_mask, read_direct_buf)) < 0) goto error; if(read_filter_mask != filter_mask) goto error; @@ -948,7 +944,7 @@ test_data_conv(hid_t file) unsigned filter_mask = 0; src_type_t direct_buf[CHUNK_NX][CHUNK_NY]; dst_type_t check_chunk[CHUNK_NX][CHUNK_NY]; - src_type_t read_chunk[CHUNK_NX][CHUNK_NY]; /* For H5DOread_chunk */ + src_type_t read_chunk[CHUNK_NX][CHUNK_NY]; /* For H5Dread_chunk */ hsize_t offset[2] = {0, 0}; size_t buf_size = CHUNK_NX*CHUNK_NY*sizeof(src_type_t); @@ -958,7 +954,7 @@ test_data_conv(hid_t file) hsize_t count[2]; /* Block count */ hsize_t block[2]; /* Block sizes */ - TESTING("data conversion for H5DOwrite_chunk/H5DOread_chunk"); + TESTING("data conversion for H5Dwrite_chunk/H5Dread_chunk"); /* * Create the data space with unlimited dimensions. @@ -1031,7 +1027,7 @@ test_data_conv(hid_t file) offset[0] = CHUNK_NX; offset[1] = CHUNK_NY; - if((status = H5DOwrite_chunk(dataset, dxpl, filter_mask, offset, buf_size, direct_buf)) < 0) + if((status = H5Dwrite_chunk(dataset, dxpl, filter_mask, offset, buf_size, direct_buf)) < 0) goto error; if(H5Fflush(dataset, H5F_SCOPE_LOCAL) < 0) @@ -1043,8 +1039,8 @@ test_data_conv(hid_t file) if((dataset = H5Dopen2(file, DATASETNAME4, H5P_DEFAULT)) < 0) goto error; - /* Use H5DOread_chunk() to read the uncompressed data */ - if((status = H5DOread_chunk(dataset, dxpl, offset, &filter_mask, read_chunk)) < 0) + /* Use H5Dread_chunk() to read the uncompressed data */ + if((status = H5Dread_chunk(dataset, dxpl, offset, &filter_mask, read_chunk)) < 0) goto error; /* Check that the values read are the same as the values written */ @@ -1141,7 +1137,7 @@ error: /*------------------------------------------------------------------------- * Function: test_invalid_parameters * - * Purpose: Test invalid parameters for H5DOwrite_chunk and H5DOread_chunk + * Purpose: Test invalid parameters for H5Dwrite_chunk and H5Dread_chunk * * Return: Success: 0 * Failure: 1 @@ -1170,7 +1166,7 @@ test_invalid_parameters(hid_t file) hsize_t chunk_nbytes; /* Chunk size */ - TESTING("invalid parameters for H5DOwrite_chunk/H5DOread_chunk"); + TESTING("invalid parameters for H5Dwrite_chunk/H5Dread_chunk"); /* * Create the data space with unlimited dimensions. @@ -1188,7 +1184,7 @@ test_invalid_parameters(hid_t file) goto error; /* - * Create a new contiguous dataset to verify H5DOwrite_chunk/H5DOread_chunk doesn't work + * Create a new contiguous dataset to verify H5Dwrite_chunk/H5Dread_chunk doesn't work */ if((dataset = H5Dcreate2(file, DATASETNAME5, H5T_NATIVE_INT, dataspace, H5P_DEFAULT, cparms, H5P_DEFAULT)) < 0) @@ -1208,7 +1204,7 @@ test_invalid_parameters(hid_t file) offset[1] = CHUNK_NY; H5E_BEGIN_TRY { - if((status = H5DOwrite_chunk(dataset, dxpl, filter_mask, offset, buf_size, direct_buf)) != FAIL) + if((status = H5Dwrite_chunk(dataset, dxpl, filter_mask, offset, buf_size, direct_buf)) != FAIL) goto error; } H5E_END_TRY; @@ -1218,9 +1214,9 @@ test_invalid_parameters(hid_t file) goto error; } H5E_END_TRY; - /* Try to H5DOread_chunk from the contiguous dataset. It should fail */ + /* Try to H5Dread_chunk from the contiguous dataset. It should fail */ H5E_BEGIN_TRY { - if((status = H5DOread_chunk(dataset, dxpl, offset, &filter_mask, direct_buf)) != FAIL) + if((status = H5Dread_chunk(dataset, dxpl, offset, &filter_mask, direct_buf)) != FAIL) goto error; } H5E_END_TRY; @@ -1243,83 +1239,83 @@ test_invalid_parameters(hid_t file) cparms, H5P_DEFAULT)) < 0) goto error; - /* Check invalid dataset ID for H5DOwrite_chunk and H5DOread_chunk */ + /* Check invalid dataset ID for H5Dwrite_chunk and H5Dread_chunk */ H5E_BEGIN_TRY { - if((status = H5DOwrite_chunk((hid_t)-1, dxpl, filter_mask, offset, buf_size, direct_buf)) != FAIL) + if((status = H5Dwrite_chunk((hid_t)-1, dxpl, filter_mask, offset, buf_size, direct_buf)) != FAIL) goto error; } H5E_END_TRY; H5E_BEGIN_TRY { - if((status = H5DOread_chunk((hid_t)-1, dxpl, offset, &filter_mask, direct_buf)) != FAIL) + if((status = H5Dread_chunk((hid_t)-1, dxpl, offset, &filter_mask, direct_buf)) != FAIL) goto error; } H5E_END_TRY; - /* Check invalid DXPL ID for H5DOwrite_chunk and H5DOread_chunk */ + /* Check invalid DXPL ID for H5Dwrite_chunk and H5Dread_chunk */ H5E_BEGIN_TRY { - if((status = H5DOwrite_chunk(dataset, (hid_t)-1, filter_mask, offset, buf_size, direct_buf)) != FAIL) + if((status = H5Dwrite_chunk(dataset, (hid_t)-1, filter_mask, offset, buf_size, direct_buf)) != FAIL) goto error; } H5E_END_TRY; H5E_BEGIN_TRY { - if((status = H5DOread_chunk(dataset, (hid_t)-1, offset, &filter_mask, direct_buf)) != FAIL) + if((status = H5Dread_chunk(dataset, (hid_t)-1, offset, &filter_mask, direct_buf)) != FAIL) goto error; } H5E_END_TRY; - /* Check invalid OFFSET for H5DOwrite_chunk and H5DOread_chunk */ + /* Check invalid OFFSET for H5Dwrite_chunk and H5Dread_chunk */ H5E_BEGIN_TRY { - if((status = H5DOwrite_chunk(dataset, dxpl, filter_mask, NULL, buf_size, direct_buf)) != FAIL) + if((status = H5Dwrite_chunk(dataset, dxpl, filter_mask, NULL, buf_size, direct_buf)) != FAIL) goto error; } H5E_END_TRY; H5E_BEGIN_TRY { - if((status = H5DOread_chunk(dataset, dxpl, NULL, &filter_mask, direct_buf)) != FAIL) + if((status = H5Dread_chunk(dataset, dxpl, NULL, &filter_mask, direct_buf)) != FAIL) goto error; } H5E_END_TRY; - /* Check when OFFSET is out of dataset range for H5DOwrite_chunk and H5DOread_chunk */ + /* Check when OFFSET is out of dataset range for H5Dwrite_chunk and H5Dread_chunk */ offset[0] = NX + 1; offset[1] = NY; H5E_BEGIN_TRY { - if((status = H5DOwrite_chunk(dataset, dxpl, filter_mask, offset, buf_size, direct_buf)) != FAIL) + if((status = H5Dwrite_chunk(dataset, dxpl, filter_mask, offset, buf_size, direct_buf)) != FAIL) goto error; } H5E_END_TRY; H5E_BEGIN_TRY { - if((status = H5DOread_chunk(dataset, dxpl, offset, &filter_mask, direct_buf)) != FAIL) + if((status = H5Dread_chunk(dataset, dxpl, offset, &filter_mask, direct_buf)) != FAIL) goto error; } H5E_END_TRY; - /* Check when OFFSET is not on chunk boundary for H5DOwrite_chunk and H5DOread_chunk */ + /* Check when OFFSET is not on chunk boundary for H5Dwrite_chunk and H5Dread_chunk */ offset[0] = CHUNK_NX; offset[1] = CHUNK_NY + 1; H5E_BEGIN_TRY { - if((status = H5DOwrite_chunk(dataset, dxpl, filter_mask, offset, buf_size, direct_buf)) != FAIL) + if((status = H5Dwrite_chunk(dataset, dxpl, filter_mask, offset, buf_size, direct_buf)) != FAIL) goto error; } H5E_END_TRY; H5E_BEGIN_TRY { - if((status = H5DOread_chunk(dataset, dxpl, offset, &filter_mask, direct_buf)) != FAIL) + if((status = H5Dread_chunk(dataset, dxpl, offset, &filter_mask, direct_buf)) != FAIL) goto error; } H5E_END_TRY; - /* Check invalid buffer size for H5DOwrite_chunk only */ + /* Check invalid buffer size for H5Dwrite_chunk only */ offset[0] = CHUNK_NX; offset[1] = CHUNK_NY; buf_size = 0; H5E_BEGIN_TRY { - if((status = H5DOwrite_chunk(dataset, dxpl, filter_mask, offset, buf_size, direct_buf)) != FAIL) + if((status = H5Dwrite_chunk(dataset, dxpl, filter_mask, offset, buf_size, direct_buf)) != FAIL) goto error; } H5E_END_TRY; - /* Check invalid data buffer for H5DOwrite_chunk and H5DOread_chunk */ + /* Check invalid data buffer for H5Dwrite_chunk and H5Dread_chunk */ buf_size = CHUNK_NX*CHUNK_NY*sizeof(int); H5E_BEGIN_TRY { - if((status = H5DOwrite_chunk(dataset, dxpl, filter_mask, offset, buf_size, NULL)) != FAIL) + if((status = H5Dwrite_chunk(dataset, dxpl, filter_mask, offset, buf_size, NULL)) != FAIL) goto error; } H5E_END_TRY; H5E_BEGIN_TRY { - if((status = H5DOread_chunk(dataset, dxpl, offset, &filter_mask, NULL)) != FAIL) + if((status = H5Dread_chunk(dataset, dxpl, offset, &filter_mask, NULL)) != FAIL) goto error; } H5E_END_TRY; @@ -1353,7 +1349,7 @@ error: /*------------------------------------------------------------------------- * Function: test_direct_chunk_read_no_cache * - * Purpose: Test the basic functionality of H5DOread_chunk with the + * Purpose: Test the basic functionality of H5Dread_chunk with the * chunk cache diabled. * * Return: Success: 0 @@ -1379,10 +1375,10 @@ test_direct_chunk_read_no_cache (hid_t file) int data[NX][NY]; int i, j, k, l, n; /* local index variables */ - unsigned filter_mask = 0; /* filter mask returned from H5DOread_chunk */ - int direct_buf[CHUNK_NX][CHUNK_NY]; /* chunk read with H5DOread and manually decompressed */ + unsigned filter_mask = 0; /* filter mask returned from H5Dread_chunk */ + int direct_buf[CHUNK_NX][CHUNK_NY]; /* chunk read with H5Dread and manually decompressed */ int check_chunk[CHUNK_NX][CHUNK_NY]; /* chunk read with H5Dread */ - hsize_t offset[2]; /* chunk offset used for H5DOread_chunk */ + hsize_t offset[2]; /* chunk offset used for H5Dread_chunk */ size_t buf_size = CHUNK_NX*CHUNK_NY*sizeof(int); Bytef *z_src = NULL; /* source buffer */ @@ -1397,7 +1393,7 @@ test_direct_chunk_read_no_cache (hid_t file) hsize_t count[2]; /* Block count */ hsize_t block[2]; /* Block sizes */ - TESTING("basic functionality of H5DOread_chunk (chunk cache disabled)"); + TESTING("basic functionality of H5Dread_chunk (chunk cache disabled)"); /* Create the data space with unlimited dimensions. */ if((dataspace = H5Screate_simple(RANK, dims, maxdims)) < 0) @@ -1442,7 +1438,7 @@ test_direct_chunk_read_no_cache (hid_t file) outbuf = HDmalloc(z_src_nbytes); z_src = (Bytef *)outbuf; - /* For each chunk in the dataset, compare the result of H5Dread and H5DOread_chunk. */ + /* For each chunk in the dataset, compare the result of H5Dread and H5Dread_chunk. */ for(i=0; i<NX/CHUNK_NX; i++) { for(j=0; j<NY/CHUNK_NY; j++) { /* Select hyperslab for one chunk in the file */ @@ -1461,7 +1457,7 @@ test_direct_chunk_read_no_cache (hid_t file) offset[0] = (hsize_t)i * CHUNK_NX; offset[1] = (hsize_t)j * CHUNK_NY; /* Read the compressed chunk back using the direct read function. */ - if((status = H5DOread_chunk(dataset, dxpl, offset, &filter_mask, outbuf)) < 0) + if((status = H5Dread_chunk(dataset, dxpl, offset, &filter_mask, outbuf)) < 0) goto error; /* Check filter mask return value */ @@ -1547,10 +1543,10 @@ test_direct_chunk_read_cache (hid_t file, hbool_t flush) int data[NX][NY]; int i, j, k, l, n; /* local index variables */ - unsigned filter_mask = 0; /* filter mask returned from H5DOread_chunk */ - int direct_buf[CHUNK_NX][CHUNK_NY]; /* chunk read with H5DOread and manually decompressed */ + unsigned filter_mask = 0; /* filter mask returned from H5Dread_chunk */ + int direct_buf[CHUNK_NX][CHUNK_NY]; /* chunk read with H5Dread and manually decompressed */ int check_chunk[CHUNK_NX][CHUNK_NY]; /* chunk read with H5Dread */ - hsize_t offset[2]; /* chunk offset used for H5DOread_chunk */ + hsize_t offset[2]; /* chunk offset used for H5Dread_chunk */ size_t buf_size = CHUNK_NX*CHUNK_NY*sizeof(int); Bytef *z_src = NULL; /* source buffer */ @@ -1567,9 +1563,9 @@ test_direct_chunk_read_cache (hid_t file, hbool_t flush) hsize_t block[2]; /* Block sizes */ if(flush) { - TESTING("basic functionality of H5DOread_chunk (flush chunk cache)"); + TESTING("basic functionality of H5Dread_chunk (flush chunk cache)"); } else { - TESTING("basic functionality of H5DOread_chunk (does not flush chunk cache)"); + TESTING("basic functionality of H5Dread_chunk (does not flush chunk cache)"); } /* Create the data space with unlimited dimensions. */ @@ -1615,7 +1611,7 @@ test_direct_chunk_read_cache (hid_t file, hbool_t flush) outbuf = HDmalloc(z_src_nbytes); z_src = (Bytef *)outbuf; - /* For each chunk in the dataset, compare the result of H5Dread and H5DOread_chunk. */ + /* For each chunk in the dataset, compare the result of H5Dread and H5Dread_chunk. */ for(i=0; i<NX/CHUNK_NX; i++) { for(j=0; j<NY/CHUNK_NY; j++) { /* Select hyperslab for one chunk in the file */ @@ -1641,7 +1637,7 @@ test_direct_chunk_read_cache (hid_t file, hbool_t flush) goto error; /* Read the compressed chunk back using the direct read function. */ - if((status = H5DOread_chunk(dataset, dxpl, offset, &filter_mask, outbuf)) < 0) + if((status = H5Dread_chunk(dataset, dxpl, offset, &filter_mask, outbuf)) < 0) goto error; /* Check filter mask return value */ @@ -1713,7 +1709,7 @@ error: /*------------------------------------------------------------------------- * Function: test_read_unfiltered_dset * - * Purpose: Test the basic functionality of H5DOread_chunk on a dataset + * Purpose: Test the basic functionality of H5Dread_chunk on a dataset * without no filters applied. * * Return: Success: 0 @@ -1749,7 +1745,7 @@ test_read_unfiltered_dset(hid_t file) hsize_t count[2]; /* Block count */ hsize_t block[2]; /* Block sizes */ - TESTING("basic functionality of H5DOread_chunk on unfiltered datasets"); + TESTING("basic functionality of H5Dread_chunk on unfiltered datasets"); /* Create the data space with unlimited dimensions. */ if((dataspace = H5Screate_simple(RANK, dims, maxdims)) < 0) @@ -1778,7 +1774,7 @@ test_read_unfiltered_dset(hid_t file) /* Write the data for the dataset. * It should stay in the chunk cache and will be evicted/flushed by - * the H5DOread_chunk function call. */ + * the H5Dread_chunk function call. */ if((status = H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, dxpl, data)) < 0) goto error; @@ -1786,7 +1782,7 @@ test_read_unfiltered_dset(hid_t file) if(H5Fflush(dataset, H5F_SCOPE_LOCAL) < 0) goto error; - /* For each chunk in the dataset, compare the result of H5Dread and H5DOread_chunk. */ + /* For each chunk in the dataset, compare the result of H5Dread and H5Dread_chunk. */ for(i=0; i<NX/CHUNK_NX; i++) { for(j=0; j<NY/CHUNK_NY; j++) { /* Select hyperslab for one chunk in the file */ @@ -1814,7 +1810,7 @@ test_read_unfiltered_dset(hid_t file) /* Read the raw chunk back */ HDmemset(&direct_buf, 0, sizeof(direct_buf)); filter_mask = UINT_MAX; - if((status = H5DOread_chunk(dataset, dxpl, offset, &filter_mask, direct_buf)) < 0) + if((status = H5Dread_chunk(dataset, dxpl, offset, &filter_mask, direct_buf)) < 0) goto error; /* Check filter mask return value */ @@ -1861,7 +1857,7 @@ error: /*------------------------------------------------------------------------- * Function: test_read_unallocated_chunk * - * Purpose: Tests the H5DOread_chunk and H5Dget_chunk_storage_size with valid + * Purpose: Tests the H5Dread_chunk and H5Dget_chunk_storage_size with valid * offets to chunks that have not been written to the dataset and are * not allocated in the chunk storage on disk. * @@ -1887,11 +1883,11 @@ test_read_unallocated_chunk (hid_t file) herr_t status; /* status from H5 function calls */ hsize_t i, j; /* local index variables */ - unsigned filter_mask = 0; /* filter mask returned from H5DOread_chunk */ - int direct_buf[CHUNK_NX][CHUNK_NY]; /* chunk read with H5DOread and manually decompressed */ - hsize_t offset[2]; /* chunk offset used for H5DOread_chunk */ + unsigned filter_mask = 0; /* filter mask returned from H5Dread_chunk */ + int direct_buf[CHUNK_NX][CHUNK_NY]; /* chunk read with H5Dread and manually decompressed */ + hsize_t offset[2]; /* chunk offset used for H5Dread_chunk */ - TESTING("H5DOread_chunk with unallocated chunks"); + TESTING("H5Dread_chunk with unallocated chunks"); /* Create the data space with unlimited dimensions. */ if((dataspace = H5Screate_simple(RANK, dims, maxdims)) < 0) @@ -1917,11 +1913,11 @@ test_read_unallocated_chunk (hid_t file) HDmemset(&chunk_dims, 0, sizeof(chunk_dims)); offset[0] = 0; offset[1] = 0; - if(H5DOwrite_chunk(dataset, dxpl, filter_mask, offset, chunk_nbytes, &chunk_dims) < 0) + if(H5Dwrite_chunk(dataset, dxpl, filter_mask, offset, chunk_nbytes, &chunk_dims) < 0) goto error; /* Attempt to read each chunk in the dataset. Chunks are not allocated, - * therefore we expect the result of H5DOread_chunk to fail. Chunk idx starts + * therefore we expect the result of H5Dread_chunk to fail. Chunk idx starts * at 1, since one chunk was written to init the chunk storage. */ for(i=1; i<NX/CHUNK_NX; i++) { for(j=0; j<NY/CHUNK_NY; j++) { @@ -1931,7 +1927,7 @@ test_read_unallocated_chunk (hid_t file) /* Read a non-existant chunk using the direct read function. */ H5E_BEGIN_TRY { - status = H5DOread_chunk(dataset, dxpl, offset, &filter_mask, &direct_buf); + status = H5Dread_chunk(dataset, dxpl, offset, &filter_mask, &direct_buf); } H5E_END_TRY; /* Check that the chunk read call does not succeed. */ @@ -2013,7 +2009,7 @@ test_single_chunk_latest(void) int rdata[DIM0][DIM1]; /* Read buffer */ int i, j; /* Local index variable */ - TESTING("H5DOwrite_chunk with single chunk and latest format"); + TESTING("H5Dwrite_chunk with single chunk and latest format"); /* Initialize data */ for (i=0; i<DIM0; i++) { @@ -2044,7 +2040,7 @@ test_single_chunk_latest(void) goto error; /* Write the data directly to the dataset */ - if(H5DOwrite_chunk(did, H5P_DEFAULT, 0, offset, CHUNK0*CHUNK1*4, (void *)wdata) < 0) + if(H5Dwrite_chunk(did, H5P_DEFAULT, 0, offset, CHUNK0*CHUNK1*4, (void *)wdata) < 0) goto error; /* @@ -2112,8 +2108,8 @@ error: /*------------------------------------------------------------------------- * Function: Main function * - * Purpose: Test direct chunk write function H5DOwrite_chunk and - * chunk direct read function H5DOread_chunk + * Purpose: Test direct chunk write function H5Dwrite_chunk and + * chunk direct read function H5Dread_chunk * * Return: Success: 0 * Failure: 1 diff --git a/hl/test/dectris_hl_perf.c b/tools/test/perform/direct_write_perf.c index 13cfac8..f13cd24 100644 --- a/hl/test/dectris_hl_perf.c +++ b/tools/test/perform/direct_write_perf.c @@ -12,11 +12,11 @@ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* - * This test is for the DECTRIS project to the H5DOwrite_chunk function + * This tests the performance of the H5Dwrite_chunk() function. * */ -#include "hdf5_hl.h" +#include "hdf5.h" #ifdef H5_HAVE_FILTER_DEFLATE #include <zlib.h> @@ -51,7 +51,7 @@ #endif const char *FILENAME[] = { - "dectris_perf", + "direct_write", "unix.raw", NULL }; @@ -285,7 +285,7 @@ test_direct_write_uncompressed_data(hid_t fapl_id) struct timeval timeval_start; - TESTING("H5DOwrite_chunk for uncompressed data"); + TESTING("H5Dwrite_chunk for uncompressed data"); if((dxpl = H5Pcreate(H5P_DATASET_XFER)) < 0) TEST_ERROR; @@ -304,7 +304,7 @@ test_direct_write_uncompressed_data(hid_t fapl_id) /* Write the compressed chunk data repeatedly to cover all the chunks in the * dataset, using the direct writing function. */ for(i=0; i<NX; i++) { - status = H5DOwrite_chunk(dataset, dxpl, filter_mask, offset, CHUNK_NY*CHUNK_NZ*sizeof(unsigned int), direct_buf[i]); + status = H5Dwrite_chunk(dataset, dxpl, filter_mask, offset, CHUNK_NY*CHUNK_NZ*sizeof(unsigned int), direct_buf[i]); (offset[0])++; } @@ -369,7 +369,7 @@ test_direct_write_compressed_data(hid_t fapl_id) /* Write the compressed chunk data repeatedly to cover all the chunks in the * dataset, using the direct writing function. */ for(i=0; i<NX; i++) { - status = H5DOwrite_chunk(dataset, dxpl, filter_mask, offset, data_size[i], outbuf[i]); + status = H5Dwrite_chunk(dataset, dxpl, filter_mask, offset, data_size[i], outbuf[i]); (offset[0])++; } @@ -637,12 +637,6 @@ main (void) hid_t fapl = H5P_DEFAULT; int i; - /* Testing setup */ -/* h5_reset(); - fapl = h5_fileaccess(); - - h5_fixname(FILENAME[0], fapl, filename, sizeof filename);*/ - sprintf(filename, "%s.h5", FILENAME[0]); create_file(fapl); @@ -657,7 +651,6 @@ main (void) free(direct_buf[i]); } -/* h5_cleanup(FILENAME, fapl);*/ return 0; } |