Skip to content

Commit 970e25c

Browse files
Update AIORI HDF5 for better compatibility with VOL connectors (#441)
* AIORI HDF5: Add support for chunking through --hdf5.chunkSize=x option Fix IOR to work with native and non-native VOL connectors Add support for HDF5_Access with H5Fis_accessible if available Clean up HDF5 backend and move MPI_Init call Add support for H5Fdelete * AIORI HDF5: H5Dget_space performance optimization Retrieve HDF5 dataset's file dataspace upon dataset setup rather than dataset data transfer * AIORI HDF5: Use POSIX statfs/mkdir/rmdir/stat for native VOL connector * Add HDF5 documentation * Restore original MPI_Init behavior in ior_main Co-authored-by: Jerome Soumagne <[email protected]>
1 parent 06fc08e commit 970e25c

File tree

5 files changed

+332
-34
lines changed

5 files changed

+332
-34
lines changed

README_HDF5

+77
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
Building
2+
--------
3+
4+
If the HDF5 library is installed in a standard location on the
5+
system, the following should suffice for building IOR with HDF5
6+
support:
7+
8+
./bootstrap
9+
./configure [other options] --with-hdf5
10+
11+
If the HDF5 library is installed in a non-standard location, one
12+
may need to point IOR to their installed HDF5 using the CFLAGS
13+
and LDFLAGS environment variables. For example,
14+
15+
./bootstrap
16+
./configure [other options] --with-hdf5 CFLAGS="-I /path/to/installed/hdf5/include" LDFLAGS="-L /path/to/installed/hdf5/lib"
17+
18+
19+
Running
20+
-------
21+
22+
ior -a HDF5 [ior options] [hdf5 options]
23+
24+
25+
HDF5-specific options
26+
---------------------
27+
28+
--hdf5.collectiveMetadata[=1] (default: off/0)
29+
30+
Instructs the HDF5 I/O interface to enable collective reading of metadata by way of
31+
the H5Pset_all_coll_metadata_ops (http://portal.hdfgroup.org/display/HDF5/H5P_SET_ALL_COLL_METADATA_OPS)
32+
API routine. Refer to https://portal.hdfgroup.org/pages/viewpage.action?pageId=50076863
33+
for more information about collective metadata I/O in HDF5 and why one may wish to
34+
enable this feature.
35+
36+
37+
--hdf5.showHints[=1] (default: off/0)
38+
39+
Instructs the HDF5 I/O interface to display the MPI hints that were passed to HDF5.
40+
41+
42+
--hdf5.individualDataSets (not currently functional)
43+
44+
Instructs the HDF5 I/O interface to assign a single dataset per task, rather than all
45+
tasks performing I/O on a single shared dataset.
46+
47+
48+
--hdf5.noFill[=1] (default: 0)
49+
50+
Instructs the HDF5 I/O interface to avoid pre-filling HDF5 datasets with fill value data
51+
by setting dataset fill times to H5D_FILL_TIME_NEVER. Refer to
52+
http://portal.hdfgroup.org/display/HDF5/H5P_SET_FILL_TIME for more information on HDF5
53+
fill times.
54+
55+
56+
--hdf5.hintsFileName=STRING
57+
58+
Specifies the full name of a file containing key-value strings for MPI hints to be passed
59+
to HDF5 via H5Pset_fapl_mpio. Refer to the IOR FAQ (https://ior.readthedocs.io/en/latest/userDoc/faq.html)
60+
for information on the format of these strings.
61+
62+
63+
--hdf5.setAlignment=A
64+
65+
Specifies the alignment 'A' in bytes (e.g.: 8, 4k, 2m, 1g) of objects in HDF5 files.
66+
Refer to http://portal.hdfgroup.org/display/HDF5/H5P_SET_ALIGNMENT for more information
67+
about HDF5 file object alignment.
68+
69+
70+
--hdf5.chunkSize=S
71+
72+
Specifies the size 'S' (in terms of dataset elements) of data chunks within HDF5 datasets.
73+
Note that achieving good I/O performance for chunked HDF5 datasets can involve fine-tuning
74+
of the relationship between the HDF5 data chunk size and the block and transfer sizes
75+
used for IOR, among other factors. Refer to http://portal.hdfgroup.org/display/HDF5/Chunking+in+HDF5
76+
for more information about data chunking in HDF5.
77+

configure.ac

+3
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,9 @@ AM_COND_IF([USE_HDF5_AIORI],[
201201
AC_DEFINE([USE_HDF5_AIORI], [], [Build HDF5 backend AIORI])
202202
AC_SEARCH_LIBS([H5Pset_all_coll_metadata_ops], [hdf5])
203203
AC_CHECK_FUNCS([H5Pset_all_coll_metadata_ops])
204+
AC_CHECK_FUNCS([H5Pget_vol_id])
205+
AC_CHECK_FUNCS([H5Fis_accessible])
206+
AC_CHECK_FUNCS([H5Fdelete])
204207
])
205208

206209

doc/sphinx/userDoc/options.rst

+5-3
Original file line numberDiff line numberDiff line change
@@ -266,13 +266,15 @@ MPIIO-ONLY
266266
HDF5-ONLY
267267
^^^^^^^^^
268268

269-
* ``individualDataSets`` - within a single file, each task will access its own
269+
* ``hdf5.individualDataSets`` - within a single file, each task will access its own
270270
dataset. Default IOR creates a dataset the size of ``numTasks * blockSize``
271271
to be accessed by all tasks (default: 0)
272272

273-
* ``noFill`` - do not pre-fill data in HDF5 file creation (default: 0)
273+
* ``hdf5.noFill`` - do not pre-fill data in HDF5 file creation (default: 0)
274274

275-
* ``setAlignment`` - set the HDF5 alignment in bytes (e.g.: 8, 4k, 2m, 1g) (default: 1)
275+
* ``hdf5.setAlignment`` - set the HDF5 alignment in bytes (e.g.: 8, 4k, 2m, 1g) (default: 1)
276+
277+
* ``hdf5.chunkSize`` - set the HDF5 chunk size (in terms of dataset elements) (default: no chunking)
276278

277279
* ``hdf5.collectiveMetadata`` - enable HDF5 collective metadata (available since HDF5-1.10.0)
278280

0 commit comments

Comments
 (0)