Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/subfiling #1464

Merged
merged 27 commits into from
Mar 1, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
f92e85b
Initial checkin of merged sub-filing VFD.
Sep 16, 2021
f20acf4
Minor mods to src/H5FDsubfile_mpi.c to address errors reported by aut…
Sep 17, 2021
2b7938f
Merge remote-tracking branch 'origin/selection_io' into selection_io_…
Sep 19, 2021
56ef550
Code formatting run -- no test
Sep 19, 2021
9c05b22
Merge pull request #1028 from jrmainzer/selection_io_with_subfiling_vfd
jrmainzer Sep 20, 2021
57fcf0f
Merged my subfiling code fixes into the new selection_io_branch
rawarren Sep 23, 2021
5c2b9be
Forgot to add the FindMERCURY.cmake file. This will probably disappea…
rawarren Sep 23, 2021
a92965f
attempting to make a more reliable subfile file open which doesn't re…
rawarren Sep 24, 2021
efbefc7
added NULL option for H5FD_subfiling_config_t in H5Pset_fapl_subfilin…
brtnfld Sep 24, 2021
ed19793
Various fixes which allow the IOR benchmark to run correctly
Sep 28, 2021
d53e03b
Lots of updates including the packaging up of the mercury_util source…
Oct 2, 2021
9975eae
Fixes to merge conflicts
Oct 2, 2021
ffc2549
Interim checkin of selection_io_with_subfiling_vfd branch
Nov 17, 2021
65d6d25
Merge pull request #1207 from jrmainzer/selection_io_with_subfiling_vfd
jrmainzer Nov 17, 2021
68c00b3
Merge remote-tracking branch 'origin/selection_io' into selection_io_…
Nov 22, 2021
28d0a7b
Merge pull request #1217 from jrmainzer/selection_io_with_subfiling_vfd
jrmainzer Nov 23, 2021
2daa286
subfiling with selection IO (#1219)
brtnfld Nov 23, 2021
ad95338
Subfile name fixes (#1250)
brtnfld Dec 5, 2021
65b1670
Merge branch 'selection_io' into selection_io_with_subfiling_vfd (#1265)
brtnfld Dec 6, 2021
2bd9506
Added script to join subfiles into a single HDF5 file (#1350)
brtnfld Jan 11, 2022
eadfdc8
Modified H5FD__subfiling_query() to report that the sub-filing VFD s…
Feb 23, 2022
5e4b616
Merge branch 'selection_io_with_subfiling_vfd' of https://github.com/…
Feb 23, 2022
e7e16f8
Merge branch 'selection_io' into selection_io_with_subfiling_vfd
brtnfld Feb 28, 2022
b725773
Committing clang-format changes
github-actions[bot] Feb 28, 2022
0e70244
fixed H5MM_free
brtnfld Mar 1, 2022
3e61cb1
fixed merge artifacts and some spelling corrections
brtnfld Mar 1, 2022
884ce66
update skip words for spelling
brtnfld Mar 1, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/codespell.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@ jobs:
- uses: codespell-project/actions-codespell@master
with:
skip: ./bin/trace,./hl/tools/h5watch/h5watch.c,./tools/test/h5jam/tellub.c
ignore_words_list: isnt,inout,nd,parms,parm,ba,offsetP,ser,ois,had,fiter,fo,clude,refere,minnum,offsetp,creat,ans:,eiter,lastr,ans,isn't,ifset,sur,trun,dne,tthe,hda,filname,te,htmp,minnum
ignore_words_list: isnt,inout,nd,parms,parm,ba,offsetP,ser,ois,had,fiter,fo,clude,refere,minnum,offsetp,creat,ans:,eiter,lastr,ans,isn't,ifset,sur,trun,dne,tthe,hda,filname,te,htmp,minnum,ake,gord,numer
10 changes: 10 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -738,6 +738,16 @@ if (H5_HAVE_PARALLEL)
endif ()
endif ()

# see other find_package examples in /usr/share/cmake/Modules
option (HDF5_BUILD_SUBFILING "Build Parallel HDF5 Subfiling" OFF)
if (HDF5_BUILD_SUBFILING AND HDF5_ENABLE_PARALLEL)
message (STATUS "Setting up to use Mercury components")
include_directories(${HDF5_SRC_DIR}/mercury/include)
set (WITH_SUBFILING 1)
set (H5_HAVE_MERCURY_H 1)
set (CMAKE_REQUIRED_INCLUDES "${HDF5_SRC_DIR}/mercury/include")
endif()

#option (DEFAULT_API_VERSION "Enable v1.14 API (v16, v18, v110, v112, v114)" "v114")
set (DEFAULT_API_VERSION "v114" CACHE STRING "Enable v1.14 API (v16, v18, v110, v112, v114)")
set_property (CACHE DEFAULT_API_VERSION PROPERTY STRINGS v16 v18 v110 v112 v114)
Expand Down
12 changes: 12 additions & 0 deletions MANIFEST
Original file line number Diff line number Diff line change
Expand Up @@ -810,6 +810,9 @@
./src/H5FDhdfs.c
./src/H5FDhdfs.h
./src/H5FDint.c
./src/H5FDioc.c
./src/H5FDioc.h
./src/H5FDioc_threads.c
./src/H5FDlog.c
./src/H5FDlog.h
./src/H5FDmirror.c
Expand All @@ -836,6 +839,11 @@
./src/H5FDsplitter.c
./src/H5FDsplitter.h
./src/H5FDstdio.c
./src/H5FDsubfile_int.c
./src/H5FDsubfile_mpi.c
./src/H5FDsubfiling.c
./src/H5FDsubfiling.h
./src/H5FDsubfiling_priv.h
./src/H5FDstdio.h
./src/H5FDtest.c
./src/H5FDwindows.c
Expand Down Expand Up @@ -1540,6 +1548,7 @@
./testpar/t_pshutdown.c
./testpar/t_prestart.c
./testpar/t_span_tree.c
./testpar/t_subfiling_vfd.c
./testpar/t_vfd.c
./testpar/t_init_term.c
./testpar/t_2Gio.c
Expand Down Expand Up @@ -3008,6 +3017,9 @@
./utils/mirror_vfd/mirror_server_stop.c
./utils/mirror_vfd/mirror_writer.c

# Subfiling VFD utilities
./utils/subfiling_vfd/h5fuse.sh

# test utilities
./utils/test/Makefile.am
./utils/test/swmr_check_compat_vfd.c
Expand Down
2 changes: 2 additions & 0 deletions bin/trace
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ $Source = "";
"H5_index_t" => "Ii",
"H5I_iterate_func_t" => "II",
"H5_iter_order_t" => "Io",
"ioc_selection_t" => "IO",
"H5I_future_realize_func_t" => "IR",
"int" => "Is",
"int32_t" => "Is",
Expand Down Expand Up @@ -188,6 +189,7 @@ $Source = "";
"H5Z_filter_t" => "Zf",
"H5Z_filter_func_t" => "ZF",
"ssize_t" => "Zs",

# Types below must be defined here, as they appear in function arguments,
# but they are not yet supported in the H5_trace_args() routine yet. If
# they are used as an actual parameter type (and not just as a pointer to
Expand Down
2 changes: 1 addition & 1 deletion c++/src/H5FaccProp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ FileAccPropList::getDriver() const
// Function: FileAccPropList::setDriver
///\brief Set file driver for this property list.
///\param new_driver_id - IN: File driver
///\param new_driver_info - IN: Struct containing the driver-specific properites
///\param new_driver_info - IN: Struct containing the driver-specific properties
///\exception H5::PropListIException
///\par Description
/// For information, please refer to the H5Pset_driver API in
Expand Down
2 changes: 1 addition & 1 deletion config/sanitizer/LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
reproduction, and distribution of the Work otherwise compiles with
the conditions stated in this License.

5. Submission of Contributions. Unless You explicitly state otherwise,
Expand Down
91 changes: 91 additions & 0 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -1584,6 +1584,68 @@ case "X-$withval" in
esac


## ----------------------------------------------------------------------
## Is mercury(an external RPC Framework library) requested? It has a
## header file `mercury.h' and a library `-lmercury_util' and their
## install locations might be specified with the `--with-mercury'
## command-line switch. The value is an include path and/or a library path.
## If the library path is specified then it must be preceded by a comma.
##
AC_SUBST([HAVE_MERCURY])

## Default is not present
HAVE_MERCURY=no

AC_ARG_WITH([mercury],
[AS_HELP_STRING([--with-mercury=DIR],
[Use the mercury library [default=no]])],,
[withval=no])

case "X-$withval" in
X-yes)
HAVE_MERCURY="yes"
if test -z "$HAVE_MERCURY" -a -n "$HDF5_CONFIG_ABORT"; then
AC_MSG_ERROR([couldn't find mercury library])
fi
echo "HAVE_MERCURY flag = $HAVE_MERCURY"
;;
X-|X-no|X-none)
HAVE_MERCURY="no"
AC_MSG_CHECKING([for mercury library])
AC_MSG_RESULT([suppressed])
;;
*)
HAVE_MERCURY="yes"
case "$withval" in
*,*)
mercury_inc="`echo $withval |cut -f1 -d,`"
mercury_lib="`echo $withval |cut -f2 -d, -s`"
;;
*)
if test -n "$withval"; then
mercury_inc="$withval/include"
mercury_lib="$withval/lib"
fi
;;
esac

echo "checking include path: $mercury_inc"
saved_CPPFLAGS="$CPPFLAGS"
saved_AM_CPPFLAGS="$AM_CPPFLAGS"
saved_LDFLAGS="$LDFLAGS"
saved_AM_LDFLAGS="$AM_LDFLAGS"

if test -n "$mercury_inc"; then
CPPFLAGS="$CPPFLAGS -I$mercury_inc"
AM_CPPFLAGS="$AM_CPPFLAGS -I$mercury_inc"
fi

AC_CHECK_HEADERS([mercury.h],,[CPPFLAGS="$saved_CPPFLAGS"; AM_CPPFLAGS="$saved_AM_CPPFLAGS"] [unset HAVE_MERCURY])
;;
esac

AM_CONDITIONAL([HAVE_MERCURY_CONDITIONAL], [test "X$HAVE_MERCURY" = "Xyes"])

## ----------------------------------------------------------------------
## Make the external filters list available to *.in files
## At this point it's unset (no external filters by default) but it
Expand Down Expand Up @@ -3043,6 +3105,7 @@ if test -n "$PARALLEL"; then
fi

## ----------------------------------------------------------------------

## Build parallel tools if parallel tools, parallel, and build tools options
## are all enabled.
##
Expand Down Expand Up @@ -3200,6 +3263,34 @@ else
AC_MSG_RESULT([no])
fi

## ----------------------------------------------------------------------
## Check if Subfiling I/O driver is enabled by --enable-subfiling-vfd
##
AC_SUBST([SUBFILING_VFD])

## Default is no direct VFD
SUBFILING_VFD=no

AC_MSG_CHECKING([if the subfiling I/O virtual file driver (VFD) is enabled])

AC_ARG_ENABLE([subfiling-vfd],
[AS_HELP_STRING([--enable-subfiling-vfd],
[Build the subfiling I/O virtual file driver (VFD).
[default=no]])],
[SUBFILING_VFD=$enableval], [SUBFILING_VFD=no])

if test "X$SUBFILING_VFD" = "Xyes"; then
AC_MSG_RESULT([yes])
AC_DEFINE([HAVE_SUBFILING], [1],
[Define if the subfiling I/O virtual file driver (VFD) should be compiled])
else
AC_MSG_RESULT([no])
fi

## Subfiling VFD files are not built if not required.
AM_CONDITIONAL([SUBFILING_VFD_CONDITIONAL], [test "X$SUBFILING_VFD" = "Xyes"])


## ----------------------------------------------------------------------
## Check if Direct I/O driver is enabled by --enable-direct-vfd
##
Expand Down
4 changes: 2 additions & 2 deletions fortran/test/tH5P.F90
Original file line number Diff line number Diff line change
Expand Up @@ -541,7 +541,7 @@ SUBROUTINE test_chunk_cache(cleanup, total_error)
CALL H5Dclose_f(dsid, error)
CALL H5Oopen_f(fid, "dset", dsid, error, dapl1)

! Retrieve dapl from dataset, verfiy cache values are the same as on dapl1
! Retrieve dapl from dataset, verify cache values are the same as on dapl1
!
! Note we rely on the knowledge that H5Pget_chunk_cache retrieves these
! values directly from the dataset structure, and not from a copy of the
Expand All @@ -563,7 +563,7 @@ SUBROUTINE test_chunk_cache(cleanup, total_error)
CALL H5Oopen_f(fid, "dset", dsid, error)
CALL check("H5Oopen_f", error, total_error)

! Retrieve dapl from dataset, verfiy cache values are the same as on fapl_local
! Retrieve dapl from dataset, verify cache values are the same as on fapl_local

CALL H5Dget_access_plist_f(dsid, dapl2, error)
CALL check("H5Dget_access_plist_f", error, total_error)
Expand Down
2 changes: 1 addition & 1 deletion release_docs/HISTORY-1_0-1_8_0_rc3.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1245,7 +1245,7 @@ Known Problems
causes failures in several HDF5 library tests.
* For HPUX 11.23 many tools tests failed for 64-bit version when linked to the
shared libraries (tested for 1.8.0-beta2)
* For SNL, Red Storm: only paralle HDF5 is supported. The serial tests pass
* For SNL, Red Storm: only parallel HDF5 is supported. The serial tests pass
and the parallel tests also pass with lots of non-fatal error messages.
* For LLNL, uP: both serial and parallel pass. Zeus: serial passes but
parallel fails with a known proglem in MPI. ubgl: serial passes but
Expand Down
2 changes: 1 addition & 1 deletion release_docs/HISTORY-1_8_0-1_10_0.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1581,7 +1581,7 @@ Known Problems
causes failures in several HDF5 library tests.
* For HPUX 11.23 many tools tests failed for 64-bit version when linked to the
shared libraries (tested for 1.8.0-beta2)
* For SNL, Red Storm: only paralle HDF5 is supported. The serial tests pass
* For SNL, Red Storm: only parallel HDF5 is supported. The serial tests pass
and the parallel tests also pass with lots of non-fatal error messages.
* on SUN 5.10 C++ test fails in the "Testing Shared Datatypes with Attributes" test
* configuring with --enable-debug=all produces compiler errors on most
Expand Down
43 changes: 43 additions & 0 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,39 @@ set (H5FA_HDRS
)
IDE_GENERATED_PROPERTIES ("H5FA" "${H5FA_HDRS}" "${H5FA_SOURCES}" )

set (MERCURY_UTIL_SOURCES
${HDF5_SRC_DIR}/mercury/src/util/mercury_atomic_queue.c
${HDF5_SRC_DIR}/mercury/src/util/mercury_dlog.c
${HDF5_SRC_DIR}/mercury/src/util/mercury_event.c
${HDF5_SRC_DIR}/mercury/src/util/mercury_hash_table.c
${HDF5_SRC_DIR}/mercury/src/util/mercury_log.c
${HDF5_SRC_DIR}/mercury/src/util/mercury_mem.c
${HDF5_SRC_DIR}/mercury/src/util/mercury_mem_pool.c
${HDF5_SRC_DIR}/mercury/src/util/mercury_poll.c
${HDF5_SRC_DIR}/ mercury/src/util/mercury_request.c
${HDF5_SRC_DIR}/mercury/src/util/mercury_thread.c
${HDF5_SRC_DIR}/ mercury/src/util/mercury_thread_condition.c
${HDF5_SRC_DIR}/mercury/src/util/mercury_thread_pool.c
${HDF5_SRC_DIR}/ mercury/src/util/mercury_thread_mutex.c
${HDF5_SRC_DIR}/mercury/src/util/mercury_thread_rwlock.c
${HDF5_SRC_DIR}/ mercury/src/util/mercury_thread_spin.c
${HDF5_SRC_DIR}/mercury/src/util/mercury_util.c
)

set (H5FD_SUBFILING_SOURCES
${HDF5_SRC_DIR}/H5FDioc.c
${HDF5_SRC_DIR}/H5FDioc_threads.c
${HDF5_SRC_DIR}/H5FDsubfiling.c
${HDF5_SRC_DIR}/H5FDsubfile_int.c
${HDF5_SRC_DIR}/H5FDsubfile_mpi.c
${MERCURY_UTIL_SOURCES}
)

set (H5FD_SUBFILING_HDRS
${HDF5_SRC_DIR}/H5FDioc.h
${HDF5_SRC_DIR}/H5FDsubfiling.h
${HDF5_SRC_DIR}/H5FDsubfile_int.h
)

set (H5FD_SOURCES
${HDF5_SRC_DIR}/H5FD.c
Expand Down Expand Up @@ -764,6 +797,12 @@ set (H5_MODULE_HEADERS
${HDF5_SRC_DIR}/H5Zmodule.h
)

set (subfile_SOURCES )
if (WITH_SUBFILING)
message (STATUS "Appending to common_SRCS ${H5FD_SUBFILING_SOURCES}")
list(APPEND subfile_SOURCES ${H5FD_SUBFILING_SOURCES})
endif(WITH_SUBFILING)

set (common_SRCS
${H5_SOURCES}
${H5A_SOURCES}
Expand Down Expand Up @@ -810,8 +849,11 @@ set (common_SRCS
${H5VM_SOURCES}
${H5WB_SOURCES}
${H5Z_SOURCES}
${subfile_SOURCES}
)



set (H5_PUBLIC_HEADERS
${H5_HDRS}
${H5A_HDRS}
Expand Down Expand Up @@ -848,6 +890,7 @@ set (H5_PUBLIC_HEADERS
${H5TS_HDRS}
${H5VL_HDRS}
${H5Z_HDRS}
${subfile_HDRS}
)

set (H5_PRIVATE_HEADERS
Expand Down
2 changes: 1 addition & 1 deletion src/H5B2internal.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
* Dec 01 2016
* Quincey Koziol
*
* Purpose: Routines for managing v2 B-tree internal ndoes.
* Purpose: Routines for managing v2 B-tree internal nodes.
*
*-------------------------------------------------------------------------
*/
Expand Down
2 changes: 1 addition & 1 deletion src/H5B2leaf.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
* Dec 01 2016
* Quincey Koziol
*
* Purpose: Routines for managing v2 B-tree leaf ndoes.
* Purpose: Routines for managing v2 B-tree leaf nodes.
*
*-------------------------------------------------------------------------
*/
Expand Down
2 changes: 1 addition & 1 deletion src/H5ES.c
Original file line number Diff line number Diff line change
Expand Up @@ -269,7 +269,7 @@ H5ESget_requests(hid_t es_id, H5_iter_order_t order, hid_t *connector_ids, void
herr_t ret_value = SUCCEED; /* Return value */

FUNC_ENTER_API(FAIL)
H5TRACE5("e", "iIo*i**xx", es_id, order, connector_ids, requests, count);
H5TRACE6("e", "iIo*i**xzx", es_id, order, connector_ids, requests, array_len, count);

/* Check arguments */
if (NULL == (es = H5I_object_verify(es_id, H5I_EVENTSET)))
Expand Down
Loading