diff options
author | Scot Breitenfeld <brtnfld@hdfgroup.org> | 2022-10-06 16:08:56 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-06 16:08:56 (GMT) |
commit | e80079fd21ffe6978ac69e7632e069cc44874675 (patch) | |
tree | b1f75384a0df8385cb8ad5e13b233554c20bdfa1 /fortran/src | |
parent | a322eb6147f243e1d45934ddfc1cfa6f69a0ddec (diff) | |
download | hdf5-e80079fd21ffe6978ac69e7632e069cc44874675.zip hdf5-e80079fd21ffe6978ac69e7632e069cc44874675.tar.gz hdf5-e80079fd21ffe6978ac69e7632e069cc44874675.tar.bz2 |
Subfiling Fortran wrapper work. (#2143)
* added C ref. for Fortran constants
* added C ref. for Fortran constants
* move constant paramters to H5* module listing
* added back comment
* Fortran subfiling and ioc FD with tests. H5Pset/get_mpi_params wrappers with tests, misc.. parallel test clean-up.
* misc. fixes
* fixed CMake testpar issues, formatted, misc. updates
* updated tests
Diffstat (limited to 'fortran/src')
-rw-r--r-- | fortran/src/H5Pf.c | 81 | ||||
-rw-r--r-- | fortran/src/H5Pff.F90 | 243 | ||||
-rw-r--r-- | fortran/src/H5_f.c | 31 | ||||
-rw-r--r-- | fortran/src/H5_ff.F90 | 32 | ||||
-rw-r--r-- | fortran/src/H5config_f.inc.cmake | 8 | ||||
-rw-r--r-- | fortran/src/H5config_f.inc.in | 3 | ||||
-rw-r--r-- | fortran/src/H5f90global.F90 | 19 | ||||
-rw-r--r-- | fortran/src/H5f90proto.h | 2 | ||||
-rw-r--r-- | fortran/src/hdf5_fortrandll.def.in | 6 |
9 files changed, 414 insertions, 11 deletions
diff --git a/fortran/src/H5Pf.c b/fortran/src/H5Pf.c index 876457f..58f8f24 100644 --- a/fortran/src/H5Pf.c +++ b/fortran/src/H5Pf.c @@ -5473,6 +5473,87 @@ h5pget_fapl_mpio_c(hid_t_f *prp_id, int_f *comm, int_f *info) ret_value = 0; return ret_value; } + +/****if* H5Pf/h5pset_mpi_params_c + * NAME + * h5pset_mpi_params_c + * PURPOSE + * Set the MPI communicator and info. + * INPUTS + * prp_id - property list identifier + * comm - MPI communicator + * info - MPI info object + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M.S. Breitenfeld + * October 2022 + * + * SOURCE + */ +int_f +h5pset_mpi_params_c(hid_t_f *prp_id, int_f *comm, int_f *info) +/******/ +{ + int ret_value = -1; + hid_t c_prp_id; + herr_t ret; + MPI_Comm c_comm; + MPI_Info c_info; + c_comm = MPI_Comm_f2c(*comm); + c_info = MPI_Info_f2c(*info); + + /* + * Call H5Pset_mpi_params. + */ + c_prp_id = *prp_id; + ret = H5Pset_mpi_params(c_prp_id, c_comm, c_info); + if (ret < 0) + return ret_value; + ret_value = 0; + return ret_value; +} + +/****if* H5Pf/h5pget_mpi_params_c + * NAME + * h5pget_mpi_params_c + * PURPOSE + * Get the MPI communicator and info. + * INPUTS + * prp_id - property list identifier + * comm - MPI communicator + * info - MPI info object + * RETURNS + * 0 on success, -1 on failure + * AUTHOR + * M.S. Breitenfeld + * October 2022 + * + * SOURCE + */ +int_f +h5pget_mpi_params_c(hid_t_f *prp_id, int_f *comm, int_f *info) +/******/ +{ + int ret_value = -1; + hid_t c_prp_id; + herr_t ret; + MPI_Comm c_comm; + MPI_Info c_info; + + /* + * Call H5Pget_mpi_params function. + */ + c_prp_id = *prp_id; + ret = H5Pget_mpi_params(c_prp_id, &c_comm, &c_info); + if (ret < 0) + return ret_value; + *comm = (int_f)MPI_Comm_c2f(c_comm); + *info = (int_f)MPI_Info_c2f(c_info); + ret_value = 0; + return ret_value; +} + /****if* H5Pf/h5pset_dxpl_mpio_c * NAME * h5pset_dxpl_mpio_c diff --git a/fortran/src/H5Pff.F90 b/fortran/src/H5Pff.F90 index 40c0a92..4de2a9d 100644 --- a/fortran/src/H5Pff.F90 +++ b/fortran/src/H5Pff.F90 @@ -182,6 +182,37 @@ MODULE H5P #endif +#ifdef H5_HAVE_PARALLEL +#ifdef H5_HAVE_SUBFILING_VFD +!> \addtogroup FH5P +!> @{ + + !> @brief H5FD_subfiling_params_t derived type used in the subfiling VFD. + TYPE, BIND(C) :: H5FD_subfiling_params_t + INTEGER(ENUM_T) :: ioc_selection !< Method to select I/O concentrators + INTEGER(C_INT64_T) :: stripe_size !< Size (in bytes) of data stripes in subfiles + INTEGER(C_INT32_T) :: stripe_count !< Target number of subfiles to use + END TYPE H5FD_subfiling_params_t + + !> @brief H5FD_subfiling_config_t derived type used in the subfiling VFD. + TYPE, BIND(C) :: H5FD_subfiling_config_t + INTEGER(C_INT32_T) :: magic !< Set to H5FD_SUBFILING_FAPL_MAGIC_F + INTEGER(C_INT32_T) :: version !< Set to H5FD_CURR_SUBFILING_FAPL_VERSION_F + INTEGER(HID_T) :: ioc_fapl_id !< The FAPL setup with the stacked VFD to use for I/O concentrators + LOGICAL(C_BOOL) :: require_ioc !< Whether to use the IOC VFD (currently must always be TRUE) + TYPE(H5FD_subfiling_params_t) :: shared_cfg !< Subfiling/IOC parameters (stripe size, stripe count, etc.) + END TYPE H5FD_subfiling_config_t + + !> @brief H5FD_ioc_config_t derived type used in the IOC VFD (SUBFILING). + TYPE, BIND(C) :: H5FD_ioc_config_t + INTEGER(C_INT32_T) :: magic !< Must be set to H5FD_IOC_FAPL_MAGIC_F + INTEGER(C_INT32_T) :: version !< Must be set to H5FD_IOC_CURR_FAPL_VERSION_F + INTEGER(C_INT32_T) :: thread_pool_size !< Number of I/O concentrator worker threads to use + END TYPE H5FD_ioc_config_t +!> @} +#endif +#endif + CONTAINS !> @@ -5042,6 +5073,218 @@ SUBROUTINE h5pset_attr_phase_change_f(ocpl_id, max_compact, min_dense, hdferr) END SUBROUTINE h5pget_fapl_mpio_f +#ifdef H5_HAVE_SUBFILING_VFD +!> +!! \ingroup FH5P +!! +!! \brief Modifies the specified File Access Property List to use the #H5FD_SUBFILING driver. +!! +!! \param prp_id File access property list identifier. +!! \param hdferr \fortran_error +!! \param vfd_config #H5FD_SUBFILING driver configuration derived type. +!! +!! See C API: @ref herr_t H5Pset_fapl_subfiling(hid_t fapl_id, const H5FD_subfiling_config_t *vfd_config); +!! + SUBROUTINE h5pset_fapl_subfiling_f(prp_id, hdferr, vfd_config) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(OUT) :: hdferr + TYPE(H5FD_subfiling_config_t), OPTIONAL, TARGET :: vfd_config + TYPE(C_PTR) :: f_ptr + + INTERFACE + INTEGER FUNCTION H5Pset_fapl_subfiling(prp_id, vfd_config) & + BIND(C,NAME='H5Pset_fapl_subfiling') + IMPORT :: HID_T, C_PTR + IMPLICIT NONE + INTEGER(HID_T), VALUE :: prp_id + TYPE(C_PTR) , VALUE :: vfd_config + END FUNCTION h5pset_fapl_subfiling + END INTERFACE + + IF(PRESENT(vfd_config))THEN + f_ptr = C_LOC(vfd_config) + ELSE + f_ptr = C_NULL_PTR + ENDIF + + hdferr = h5pset_fapl_subfiling(prp_id, f_ptr) + + END SUBROUTINE h5pset_fapl_subfiling_f + +!> +!! \ingroup FH5P +!! +!! \brief Queries a File Access Property List for #H5FD_SUBFILING file driver properties. +!! +!! \param prp_id File access property list identifier. +!! \param vfd_config #H5FD_SUBFILING driver configuration derived type. +!! \param hdferr \fortran_error +!! +!! See C API: @ref herr_t H5Pget_fapl_subfiling(hid_t fapl_id, H5FD_subfiling_config_t *config_out); +!! + SUBROUTINE h5pget_fapl_subfiling_f(prp_id, vfd_config, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id + TYPE(H5FD_subfiling_config_t), TARGET :: vfd_config + INTEGER, INTENT(OUT) :: hdferr + TYPE(C_PTR) :: f_ptr + + INTERFACE + INTEGER FUNCTION H5Pget_fapl_subfiling(prp_id, vfd_config) & + BIND(C,NAME='H5Pget_fapl_subfiling') + IMPORT :: HID_T, C_PTR + IMPLICIT NONE + INTEGER(HID_T), VALUE :: prp_id + TYPE(C_PTR) , VALUE :: vfd_config + END FUNCTION H5Pget_fapl_subfiling + END INTERFACE + + f_ptr = C_LOC(vfd_config) + hdferr = h5pget_fapl_subfiling(prp_id, f_ptr) + + END SUBROUTINE h5pget_fapl_subfiling_f + +!> +!! \ingroup FH5P +!! +!! \brief Modifies the specified File Access Property List to use the #H5FD_IOC driver. +!! +!! \param prp_id File access property list identifier. +!! \param hdferr \fortran_error +!! \param vfd_config #H5FD_IOC driver configuration derived type. +!! +!! See C API: @ref herr_t H5Pset_fapl_ioc(hid_t fapl_id, const H5FD_ioc_config_t *vfd_config); +!! + SUBROUTINE h5pset_fapl_ioc_f(prp_id, hdferr, vfd_config) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id + TYPE(H5FD_ioc_config_t), OPTIONAL, TARGET :: vfd_config + INTEGER, INTENT(OUT) :: hdferr + TYPE(C_PTR) :: f_ptr + + INTERFACE + INTEGER FUNCTION H5Pset_fapl_ioc(prp_id, vfd_config) & + BIND(C,NAME='H5Pset_fapl_ioc') + IMPORT :: HID_T, C_PTR + IMPLICIT NONE + INTEGER(HID_T), VALUE :: prp_id + TYPE(C_PTR) , VALUE :: vfd_config + END FUNCTION h5pset_fapl_ioc + END INTERFACE + + IF(PRESENT(vfd_config))THEN + f_ptr = C_LOC(vfd_config) + ELSE + f_ptr = C_NULL_PTR + ENDIF + + hdferr = h5pset_fapl_ioc(prp_id, f_ptr) + + END SUBROUTINE h5pset_fapl_ioc_f + +!> +!! \ingroup FH5P +!! +!! \brief Queries a File Access Property List for #H5FD_IOC file driver properties. +!! +!! \param prp_id File access property list identifier. +!! \param vfd_config #H5FD_IOC driver configuration derived type. +!! \param hdferr \fortran_error +!! +!! See C API: @ref herr_t H5Pget_fapl_ioc(hid_t fapl_id, H5FD_ioc_config_t *config_out); +!! + SUBROUTINE h5pget_fapl_ioc_f(prp_id, vfd_config, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id + TYPE(H5FD_ioc_config_t), TARGET :: vfd_config + INTEGER, INTENT(OUT) :: hdferr + TYPE(C_PTR) :: f_ptr + + INTERFACE + INTEGER FUNCTION H5Pget_fapl_ioc(prp_id, vfd_config) & + BIND(C,NAME='H5Pget_fapl_ioc') + IMPORT :: HID_T, C_PTR + IMPLICIT NONE + INTEGER(HID_T), VALUE :: prp_id + TYPE(C_PTR) , VALUE :: vfd_config + END FUNCTION H5Pget_fapl_ioc + END INTERFACE + + f_ptr = C_LOC(vfd_config) + hdferr = h5pget_fapl_ioc(prp_id, f_ptr) + + END SUBROUTINE h5pget_fapl_ioc_f +#endif + +!> +!! \ingroup FH5P +!! +!! \brief Set the MPI communicator and info. +!! +!! \param prp_id File access property list identifier. +!! \param comm The MPI communicator. +!! \param info The MPI info object. +!! \param hdferr \fortran_error +!! +!! See C API: @ref herr_t H5Pset_mpi_params(hid_t plist_id, MPI_Comm comm, MPI_Info info); +!! + SUBROUTINE H5Pset_mpi_params_f(prp_id, comm, info, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER , INTENT(IN) :: comm + INTEGER , INTENT(IN) :: info + INTEGER , INTENT(OUT) :: hdferr + + INTERFACE + INTEGER FUNCTION h5pset_mpi_params_c(prp_id, comm, info) & + BIND(C,NAME='h5pset_mpi_params_c') + IMPORT :: HID_T + IMPLICIT NONE + INTEGER(HID_T) :: prp_id + INTEGER :: comm + INTEGER :: info + END FUNCTION H5pset_mpi_params_c + END INTERFACE + + hdferr = H5Pset_mpi_params_c(prp_id, comm, info) + + END SUBROUTINE H5Pset_mpi_params_f + +!> +!! \ingroup FH5P +!! +!! \brief Get the MPI communicator and info. +!! +!! \param prp_id File access property list identifier. +!! \param comm The MPI communicator. +!! \param info The MPI info object. +!! \param hdferr \fortran_error +!! +!! See C API: @ref herr_t H5Pget_mpi_params(hid_t fapl_id, MPI_Comm *comm, MPI_Info *info); +!! + SUBROUTINE H5Pget_mpi_params_f(prp_id, comm, info, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER , INTENT(OUT) :: comm + INTEGER , INTENT(OUT) :: info + INTEGER , INTENT(OUT) :: hdferr + + INTERFACE + INTEGER FUNCTION h5pget_mpi_params_c(prp_id, comm, info) & + BIND(C,NAME='h5pget_mpi_params_c') + IMPORT :: HID_T + IMPLICIT NONE + INTEGER(HID_T) :: prp_id + INTEGER :: comm + INTEGER :: info + END FUNCTION H5pget_mpi_params_c + END INTERFACE + + hdferr = H5Pget_mpi_params_c(prp_id, comm, info) + + END SUBROUTINE H5Pget_mpi_params_f + !> !! \ingroup FH5P !! diff --git a/fortran/src/H5_f.c b/fortran/src/H5_f.c index 468debe..385241d 100644 --- a/fortran/src/H5_f.c +++ b/fortran/src/H5_f.c @@ -525,6 +525,31 @@ h5init_flags_c(int_f *h5d_flags, size_t_f *h5d_size_flags, int_f *h5e_flags, hid h5fd_flags[8] = (int_f)H5FD_MEM_LHEAP; h5fd_flags[9] = (int_f)H5FD_MEM_OHDR; h5fd_flags[10] = (int_f)H5FD_MEM_NTYPES; +#ifdef H5_HAVE_SUBFILING_VFD + h5fd_flags[11] = (int_f)H5FD_SUBFILING_CURR_FAPL_VERSION; + h5fd_flags[12] = (int_f)H5FD_SUBFILING_FAPL_MAGIC; + h5fd_flags[13] = (int_f)H5FD_SUBFILING_DEFAULT_STRIPE_COUNT; + h5fd_flags[14] = (int_f)H5FD_IOC_FAPL_MAGIC; + h5fd_flags[15] = (int_f)H5FD_IOC_CURR_FAPL_VERSION; + h5fd_flags[16] = (int_f)H5FD_IOC_DEFAULT_THREAD_POOL_SIZE; + h5fd_flags[17] = (int_f)SELECT_IOC_ONE_PER_NODE; + h5fd_flags[18] = (int_f)SELECT_IOC_EVERY_NTH_RANK; + h5fd_flags[19] = (int_f)SELECT_IOC_WITH_CONFIG; + h5fd_flags[20] = (int_f)SELECT_IOC_TOTAL; + h5fd_flags[21] = (int_f)ioc_selection_options; +#else + h5fd_flags[11] = 0; + h5fd_flags[12] = 0; + h5fd_flags[13] = 0; + h5fd_flags[14] = 0; + h5fd_flags[15] = 0; + h5fd_flags[16] = 0; + h5fd_flags[17] = 0; + h5fd_flags[18] = 0; + h5fd_flags[19] = 0; + h5fd_flags[20] = 0; + h5fd_flags[21] = 0; +#endif /* * H5FD flags of type hid_t @@ -536,6 +561,12 @@ h5init_flags_c(int_f *h5d_flags, size_t_f *h5d_size_flags, int_f *h5e_flags, hid h5fd_hid_flags[4] = (hid_t_f)H5FD_MULTI; h5fd_hid_flags[5] = (hid_t_f)H5FD_SEC2; h5fd_hid_flags[6] = (hid_t_f)H5FD_STDIO; + h5fd_hid_flags[7] = (hid_t_f)H5FD_SUBFILING; +#ifdef H5_HAVE_SUBFILING_VFD + h5fd_hid_flags[8] = (hid_t_f)H5FD_SUBFILING_DEFAULT_STRIPE_SIZE; +#else + h5fd_hid_flags[8] = 0; +#endif /* * H5G flags diff --git a/fortran/src/H5_ff.F90 b/fortran/src/H5_ff.F90 index 1dc90c2..8c7acfe 100644 --- a/fortran/src/H5_ff.F90 +++ b/fortran/src/H5_ff.F90 @@ -92,12 +92,12 @@ MODULE H5LIB ! ! H5FD flags declaration ! - INTEGER, PARAMETER :: H5FD_FLAGS_LEN = 11 + INTEGER, PARAMETER :: H5FD_FLAGS_LEN = 22 INTEGER, DIMENSION(1:H5FD_FLAGS_LEN) :: H5FD_flags ! ! H5FD file drivers flags declaration ! - INTEGER, PARAMETER :: H5FD_HID_FLAGS_LEN = 7 + INTEGER, PARAMETER :: H5FD_HID_FLAGS_LEN = 9 INTEGER(HID_T), DIMENSION(1:H5FD_HID_FLAGS_LEN) :: H5FD_hid_flags ! ! H5I flags declaration @@ -436,16 +436,30 @@ CONTAINS H5FD_MEM_LHEAP_F = H5FD_flags(9) H5FD_MEM_OHDR_F = H5FD_flags(10) H5FD_MEM_NTYPES_F = H5FD_flags(11) + H5FD_SUBFILING_CURR_FAPL_VERSION_F = H5FD_flags(12) + H5FD_SUBFILING_FAPL_MAGIC_F = H5FD_flags(13) + H5FD_SUBFILING_DEFAULT_STRIPE_COUNT_F = H5FD_flags(14) + H5FD_IOC_FAPL_MAGIC_F = H5FD_flags(15) + H5FD_IOC_CURR_FAPL_VERSION_F = H5FD_flags(16) + H5FD_IOC_DEFAULT_THREAD_POOL_SIZE_F = H5FD_flags(17) + SELECT_IOC_ONE_PER_NODE_F = H5FD_flags(18) + SELECT_IOC_EVERY_NTH_RANK_F = H5FD_flags(19) + SELECT_IOC_WITH_CONFIG_F = H5FD_flags(20) + SELECT_IOC_TOTAL_F = H5FD_flags(21) + IOC_SELECTION_OPTIONS_F = H5FD_flags(22) + ! ! H5FD file driver flags ! - H5FD_CORE_F = H5FD_hid_flags(1) - H5FD_FAMILY_F = H5FD_hid_flags(2) - H5FD_LOG_F = H5FD_hid_flags(3) - H5FD_MPIO_F = H5FD_hid_flags(4) - H5FD_MULTI_F = H5FD_hid_flags(5) - H5FD_SEC2_F = H5FD_hid_flags(6) - H5FD_STDIO_F = H5FD_hid_flags(7) + H5FD_CORE_F = H5FD_hid_flags(1) + H5FD_FAMILY_F = H5FD_hid_flags(2) + H5FD_LOG_F = H5FD_hid_flags(3) + H5FD_MPIO_F = H5FD_hid_flags(4) + H5FD_MULTI_F = H5FD_hid_flags(5) + H5FD_SEC2_F = H5FD_hid_flags(6) + H5FD_STDIO_F = H5FD_hid_flags(7) + H5FD_SUBFILING_F = H5FD_hid_flags(8) + H5FD_SUBFILING_DEFAULT_STRIPE_SIZE_F = H5FD_hid_flags(9) ! ! H5I flags declaration ! diff --git a/fortran/src/H5config_f.inc.cmake b/fortran/src/H5config_f.inc.cmake index 565d6eb..46dfb69 100644 --- a/fortran/src/H5config_f.inc.cmake +++ b/fortran/src/H5config_f.inc.cmake @@ -11,12 +11,18 @@ ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! fortran/src/H5config_f.inc. Generated from fortran/src/H5config_f.inc.in by configure -! Define if we have parallel support +! Define if there is parallel support #cmakedefine01 H5_HAVE_PARALLEL #if H5_HAVE_PARALLEL == 0 #undef H5_HAVE_PARALLEL #endif +! Define if there is subfiling support +#cmakedefine01 H5_HAVE_SUBFILING_VFD +#if H5_HAVE_SUBFILING_VFD == 0 +#undef H5_HAVE_SUBFILING_VFD +#endif + ! Define if the intrinsic function STORAGE_SIZE exists #define H5_FORTRAN_HAVE_STORAGE_SIZE @H5_FORTRAN_HAVE_STORAGE_SIZE@ diff --git a/fortran/src/H5config_f.inc.in b/fortran/src/H5config_f.inc.in index 685b4d2..0ce33ec 100644 --- a/fortran/src/H5config_f.inc.in +++ b/fortran/src/H5config_f.inc.in @@ -17,6 +17,9 @@ ! Define if we have parallel support #undef HAVE_PARALLEL +! Define if we have subfiling support +#undef HAVE_SUBFILING_VFD + ! Define if the intrinsic function STORAGE_SIZE exists #undef FORTRAN_HAVE_STORAGE_SIZE diff --git a/fortran/src/H5f90global.F90 b/fortran/src/H5f90global.F90 index 12e40bf..6ad3366 100644 --- a/fortran/src/H5f90global.F90 +++ b/fortran/src/H5f90global.F90 @@ -425,7 +425,8 @@ MODULE H5GLOBAL !DEC$ATTRIBUTES DLLEXPORT :: H5FD_SEC2_F !DEC$ATTRIBUTES DLLEXPORT :: H5FD_STDIO_F !DEC$endif - +!> \addtogroup FH5P +!> @{ INTEGER :: H5FD_MPIO_INDEPENDENT_F !< H5FD_MPIO_INDEPENDENT INTEGER :: H5FD_MPIO_COLLECTIVE_F !< H5FD_MPIO_COLLECTIVE INTEGER :: H5FD_MEM_NOLIST_F !< H5FD_MEM_NOLIST @@ -437,6 +438,18 @@ MODULE H5GLOBAL INTEGER :: H5FD_MEM_LHEAP_F !< H5FD_MEM_LHEAP INTEGER :: H5FD_MEM_OHDR_F !< H5FD_MEM_OHDR INTEGER :: H5FD_MEM_NTYPES_F !< H5FD_MEM_NTYPES + INTEGER :: H5FD_SUBFILING_CURR_FAPL_VERSION_F !< H5FD_SUBFILING_CURR_FAPL_VERSION + INTEGER :: H5FD_SUBFILING_FAPL_MAGIC_F !< H5FD_SUBFILING_FAPL_MAGIC + INTEGER :: H5FD_SUBFILING_DEFAULT_STRIPE_COUNT_F !< H5FD_SUBFILING_DEFAULT_STRIPE_COUNT + INTEGER :: H5FD_IOC_CURR_FAPL_VERSION_F !< H5FD_IOC_CURR_FAPL_VERSION + INTEGER :: H5FD_IOC_FAPL_MAGIC_F !< H5FD_IOC_FAPL_MAGIC + INTEGER :: H5FD_IOC_DEFAULT_THREAD_POOL_SIZE_F !< H5FD_IOC_DEFAULT_THREAD_POOL_SIZE + INTEGER :: SELECT_IOC_ONE_PER_NODE_F !< Default, SELECT_IOC_ONE_PER_NODE + INTEGER :: SELECT_IOC_EVERY_NTH_RANK_F !< Starting at rank 0, select-next += N, SELECT_IOC_EVERY_NTH_RANK + INTEGER :: SELECT_IOC_WITH_CONFIG_F !< NOT IMPLEMENTED: Read-from-file, SELECT_IOC_WITH_CONFIG + INTEGER :: SELECT_IOC_TOTAL_F !< Starting at rank 0, mpi_size / total, SELECT_IOC_TOTAL + INTEGER :: IOC_SELECTION_OPTIONS_F !< Sentinel value, IOC_SELECTION_OPTIONS + INTEGER(HID_T) :: H5FD_CORE_F !< H5FD_CORE INTEGER(HID_T) :: H5FD_FAMILY_F !< H5FD_FAMILY INTEGER(HID_T) :: H5FD_LOG_F !< H5FD_LOG @@ -444,6 +457,10 @@ MODULE H5GLOBAL INTEGER(HID_T) :: H5FD_MULTI_F !< H5FD_MULTI INTEGER(HID_T) :: H5FD_SEC2_F !< H5FD_SEC2 INTEGER(HID_T) :: H5FD_STDIO_F !< H5FD_STDIO + INTEGER(HID_T) :: H5FD_SUBFILING_F !< H5FD_SUBFILING + INTEGER(HID_T) :: H5FD_SUBFILING_DEFAULT_STRIPE_SIZE_F !< H5FD_SUBFILING_DEFAULT_STRIPE_SIZE + +!> @} ! ! H5I flags declaration ! diff --git a/fortran/src/H5f90proto.h b/fortran/src/H5f90proto.h index 0b348b7..3cfba71 100644 --- a/fortran/src/H5f90proto.h +++ b/fortran/src/H5f90proto.h @@ -534,6 +534,8 @@ H5_FCDLL int_f h5pget_chunk_cache_c(hid_t_f *dapl_id, size_t_f *rdcc_nslots, siz H5_FCDLL int_f h5pget_mpio_actual_io_mode_c(hid_t_f *dxpl_id, int_f *actual_io_mode); H5_FCDLL int_f h5pget_fapl_mpio_c(hid_t_f *prp_id, int_f *comm, int_f *info); H5_FCDLL int_f h5pset_fapl_mpio_c(hid_t_f *prp_id, int_f *comm, int_f *info); +H5_FCDLL int_f h5pget_mpi_params_c(hid_t_f *prp_id, int_f *comm, int_f *info); +H5_FCDLL int_f h5pset_mpi_params_c(hid_t_f *prp_id, int_f *comm, int_f *info); H5_FCDLL int_f h5pget_dxpl_mpio_c(hid_t_f *prp_id, int_f *data_xfer_mode); H5_FCDLL int_f h5pset_dxpl_mpio_c(hid_t_f *prp_id, int_f *data_xfer_mode); #endif diff --git a/fortran/src/hdf5_fortrandll.def.in b/fortran/src/hdf5_fortrandll.def.in index 4207239..f61f74b 100644 --- a/fortran/src/hdf5_fortrandll.def.in +++ b/fortran/src/hdf5_fortrandll.def.in @@ -344,6 +344,12 @@ H5P_mp_H5PGET_FILE_LOCKING_F ; Parallel @H5_NOPAREXP@H5P_mp_H5PSET_FAPL_MPIO_F @H5_NOPAREXP@H5P_mp_H5PGET_FAPL_MPIO_F +@H5_NOPAREXP@H5P_mp_H5PSET_FAPL_SUBFILING_F +@H5_NOPAREXP@H5P_mp_H5PGET_FAPL_SUBFILING_F +@H5_NOPAREXP@H5P_mp_H5PSET_FAPL_IOC_F +@H5_NOPAREXP@H5P_mp_H5PGET_FAPL_IOC_F +@H5_NOPAREXP@H5P_mp_H5PSET_MPI_PARAMS_F +@H5_NOPAREXP@H5P_mp_H5PGET_MPI_PARAMS_F @H5_NOPAREXP@H5P_mp_H5PSET_DXPL_MPIO_F @H5_NOPAREXP@H5P_mp_H5PGET_DXPL_MPIO_F @H5_NOPAREXP@H5P_mp_H5PGET_MPIO_ACTUAL_IO_MODE_F |