summaryrefslogtreecommitdiffstats
path: root/src/H5D.c
diff options
context:
space:
mode:
authorRobb Matzke <matzke@llnl.gov>1998-09-30 18:50:49 (GMT)
committerRobb Matzke <matzke@llnl.gov>1998-09-30 18:50:49 (GMT)
commitbeab7f66e5dd260732fad34b9c26ccb0d8d580a5 (patch)
treed4513e30c4d6b722d466b295e6d009272e937d54 /src/H5D.c
parent8460a082a4e1fc9ea9be15cfb6bbdd866ebf9f4b (diff)
downloadhdf5-beab7f66e5dd260732fad34b9c26ccb0d8d580a5.zip
hdf5-beab7f66e5dd260732fad34b9c26ccb0d8d580a5.tar.gz
hdf5-beab7f66e5dd260732fad34b9c26ccb0d8d580a5.tar.bz2
[svn-r730] Changes since 19980928
---------------------- ./MANIFEST Changed freebsd2.2.1 to freebsd2.2.7 to match change in file name. Added a few missing files. Are all of these supposed to be distributed? ./tools/testfiles/h5dumptst.c + ./tools/testfiles/tall-1.ddl + ./tools/testfiles/tall-2.ddl + ./tools/testfiles/tall-3.ddl ./tools/testfiles/tall.ddl ./tools/testfiles/tall.h5 + ./tools/testfiles/tattr-1.ddl + ./tools/testfiles/tattr-2.ddl + ./tools/testfiles/tattr-3.ddl + ./tools/testfiles/tattr-4.ddl ./tools/testfiles/tattr.ddl ./tools/testfiles/tattr.h5 + ./tools/testfiles/tdset-1.ddl + ./tools/testfiles/tdset-2.ddl + ./tools/testfiles/tdset-3.ddl + ./tools/testfiles/tdset-4.ddl ./tools/testfiles/tdset.ddl ./tools/testfiles/tdset.h5 + ./tools/testfiles/tgroup-1.ddl + ./tools/testfiles/tgroup-2.ddl + ./tools/testfiles/tgroup-3.ddl ./tools/testfiles/tgroup.ddl ./tools/testfiles/tgroup.h5 + ./tools/testfiles/tslink-1.ddl + ./tools/testfiles/tslink-2.ddl ./tools/testfiles/tslink.ddl ./tools/testfiles/tslink.h5 ./src/H5B.c ./src/H5Bprivate.h ./src/H5D.c ./src/H5Dprivate.h ./src/H5Farray.c ./src/H5Fistore.c ./src/H5Fprivate.h ./src/H5Gstab.c ./src/H5P.c ./src/H5Ppublic.h ./src/H5Sall.c ./src/H5Shyper.c ./src/H5Spoint.c ./src/H5Sprivate.h ./test/istore.c Implemented split ratios as documented in previous e-mails. Frank, the new API functions are H5Pget_btree_ratios() and H5Pset_btree_ratios(). ./src/H5Sall.c ./src/H5Shyper.c ./src/H5Spoint.c ./src/H5Sprivate.h Added more type checking for the data transfer property list passed to these functions. ./src/H5D.c Added a dataset transfer property list as an argument to H5D_allocate() for the parallel version in order to pass split ratios down to H5F_istore_lock(). Eventually we won't need the split ratios for H5D_allocate() because we'll build a completely full B-tree from the leaves up, but it might be useful to have other transfer properties at that level anyway. I always caled H5D_allocate() with &H5D_dflt_xfer. ./MANIFEST ./test/Makefile.in ./test/overhead.c [NEW] Added an `overhead' test run by `make timings'.
Diffstat (limited to 'src/H5D.c')
-rw-r--r--src/H5D.c41
1 files changed, 25 insertions, 16 deletions
diff --git a/src/H5D.c b/src/H5D.c
index 02beee5..e4c9c2c 100644
--- a/src/H5D.c
+++ b/src/H5D.c
@@ -72,12 +72,19 @@ const H5D_xfer_t H5D_xfer_dflt = {
NULL, /* Type conversion buffer or NULL */
NULL, /* Background buffer or NULL */
H5T_BKG_NO, /* Type of background buffer needed */
+ {0.1, 0.5, 0.9}, /* B-tree node splitting ratios */
#ifndef HAVE_PARALLEL
- 1, /* Cache the hyperslab blocks by default */
-#else /* HAVE_PARALLEL */
- 0, /* Don't cache the hyperslab blocks by default (for parallel) */
+ 1, /* Cache the hyperslab blocks by default*/
+#else
+ 0, /*
+ * Don't cache the hyperslab blocks by
+ * default (for parallel)
+ */
#endif /* HAVE_PARALLEL */
- 0, /* Default to no upper limit on hyperslab block size to cache */
+ 0, /*
+ * Default to no upper limit on hyperslab
+ * block size to cache
+ */
#ifdef HAVE_PARALLEL
H5D_XFER_DFLT, /* Independent data transfer */
#endif
@@ -89,7 +96,7 @@ static hbool_t interface_initialize_g = FALSE;
static herr_t H5D_init_interface(void);
static void H5D_term_interface(void);
#ifdef HAVE_PARALLEL
-static herr_t H5D_allocate (H5D_t *dataset);
+static herr_t H5D_allocate (H5D_t *dataset, const H5D_xfer_t *xfer);
#endif
@@ -876,7 +883,8 @@ H5D_create(H5G_entry_t *loc, const char *name, const H5T_t *type,
* Also, only the slowest varying dimension of a simple data space
* can be extendible.
*/
- if ((ndims=H5S_get_simple_extent_dims(space, new_dset->layout.dim, max_dim))<0) {
+ if ((ndims=H5S_get_simple_extent_dims(space, new_dset->layout.dim,
+ max_dim))<0) {
HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, NULL,
"unable to initialize contiguous storage");
}
@@ -1011,7 +1019,7 @@ H5D_create(H5G_entry_t *loc, const char *name, const H5T_t *type,
*/
if (new_dset->ent.file->shared->access_parms->driver == H5F_LOW_MPIO &&
new_dset->layout.type == H5D_CHUNKED){
- if (H5D_allocate(new_dset)==FAIL){
+ if (H5D_allocate(new_dset, &H5D_xfer_dflt)<0) {
HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, NULL,
"fail in file space allocation for chunks");
}
@@ -1164,7 +1172,7 @@ H5D_open(H5G_entry_t *loc, const char *name)
if (dataset->ent.file->shared->access_parms->driver==H5F_LOW_MPIO &&
dataset->layout.type == H5D_CHUNKED &&
(dataset->ent.file->intent & H5F_ACC_RDWR)){
- if (H5D_allocate(dataset)==FAIL){
+ if (H5D_allocate(dataset, &H5D_xfer_dflt)<0) {
HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, NULL,
"fail in file space allocation dataset");
}
@@ -2052,7 +2060,7 @@ H5D_extend (H5D_t *dataset, const hsize_t *size)
*/
if (dataset->ent.file->shared->access_parms->driver==H5F_LOW_MPIO &&
dataset->layout.type==H5D_CHUNKED){
- if (H5D_allocate(dataset)==FAIL){
+ if (H5D_allocate(dataset, &H5D_xfer_dflt)<0) {
HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL,
"fail in file space allocation for chunks");
}
@@ -2141,10 +2149,10 @@ H5D_typeof (H5D_t *dset)
*-------------------------------------------------------------------------
*/
static herr_t
-H5D_allocate (H5D_t *dataset)
+H5D_allocate (H5D_t *dataset, const H5D_xfer_t *xfer)
{
- H5S_t *space = NULL;
- herr_t ret_value = FAIL;
+ H5S_t *space = NULL;
+ herr_t ret_value = FAIL;
hsize_t space_dim[H5O_LAYOUT_NDIMS];
intn space_ndims;
H5O_layout_t *layout;
@@ -2172,7 +2180,8 @@ H5D_allocate (H5D_t *dataset)
"unable to read data space info from dataset header");
}
/* get current dims of dataset */
- if ((space_ndims=H5S_get_simple_extent_dims(space, space_dim, NULL)) <= 0 ||
+ if ((space_ndims=H5S_get_simple_extent_dims(space, space_dim,
+ NULL)) <= 0 ||
space_ndims+1 != layout->ndims){
HRETURN_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL,
"unable to allocate chunk storage");
@@ -2181,9 +2190,9 @@ H5D_allocate (H5D_t *dataset)
space_dim[space_ndims] = layout->dim[space_ndims];
if (H5F_istore_allocate(dataset->ent.file,
- (layout), space_dim,
- &(dataset->create_parms->pline))==FAIL){
- HRETURN(FAIL);
+ (layout), space_dim, xfer->split_ratios,
+ &(dataset->create_parms->pline))<0) {
+ HRETURN(FAIL);
}
break;