diff options
Diffstat (limited to 'fortran/src/H5Pff.F90')
-rw-r--r-- | fortran/src/H5Pff.F90 | 266 |
1 files changed, 249 insertions, 17 deletions
diff --git a/fortran/src/H5Pff.F90 b/fortran/src/H5Pff.F90 index afd17f3..90a74f7 100644 --- a/fortran/src/H5Pff.F90 +++ b/fortran/src/H5Pff.F90 @@ -49,6 +49,12 @@ MODULE H5P PRIVATE h5pget_integer, h5pget_char, h5pget_ptr PRIVATE h5pregister_integer, h5pregister_ptr PRIVATE h5pinsert_integer, h5pinsert_char, h5pinsert_ptr +#ifdef H5_HAVE_PARALLEL + PRIVATE h5pset_fapl_mpio_f90, h5pget_fapl_mpio_f90 +#ifdef H5_HAVE_MPI_F08 + PRIVATE h5pset_fapl_mpio_f08, h5pget_fapl_mpio_f08 +#endif +#endif #ifndef H5_DOXYGEN @@ -101,7 +107,6 @@ MODULE H5P MODULE PROCEDURE h5pinsert_ptr END INTERFACE - INTERFACE INTEGER(C_INT) FUNCTION H5Pset_fill_value(prp_id, type_id, fillvalue) & BIND(C, NAME='H5Pset_fill_value') @@ -182,6 +187,35 @@ MODULE H5P #endif #ifdef H5_HAVE_PARALLEL + + INTERFACE h5pset_fapl_mpio_f + MODULE PROCEDURE h5pset_fapl_mpio_f90 +#ifdef H5_HAVE_MPI_F08 + MODULE PROCEDURE h5pset_fapl_mpio_f08 +#endif + END INTERFACE + + INTERFACE h5pget_fapl_mpio_f + MODULE PROCEDURE h5pget_fapl_mpio_f90 +#ifdef H5_HAVE_MPI_F08 + MODULE PROCEDURE h5pget_fapl_mpio_f08 +#endif + END INTERFACE + + INTERFACE H5Pset_mpi_params_f + MODULE PROCEDURE H5Pset_mpi_params_f90 +#ifdef H5_HAVE_MPI_F08 + MODULE PROCEDURE H5Pset_mpi_params_f08 +#endif + END INTERFACE + + INTERFACE H5Pget_mpi_params_f + MODULE PROCEDURE H5Pget_mpi_params_f90 +#ifdef H5_HAVE_MPI_F08 + MODULE PROCEDURE H5Pget_mpi_params_f08 +#endif + END INTERFACE + #ifdef H5_HAVE_SUBFILING_VFD !> \addtogroup FH5P !> @{ @@ -5125,6 +5159,8 @@ SUBROUTINE h5pset_attr_phase_change_f(ocpl_id, max_compact, min_dense, hdferr) ! ********************************************************************* #ifdef H5_HAVE_PARALLEL + +#ifdef H5_DOXYGEN !> !! \ingroup FH5P !! @@ -5143,21 +5179,69 @@ SUBROUTINE h5pset_attr_phase_change_f(ocpl_id, max_compact, min_dense, hdferr) INTEGER, INTENT(IN) :: comm INTEGER, INTENT(IN) :: info INTEGER, INTENT(OUT) :: hdferr + END SUBROUTINE h5pset_fapl_mpio_f +!> +!! \ingroup FH5P +!! +!! \brief Stores MPI IO communicator information to the file access property list. +!! +!! \note Supports MPI Fortran module mpi_f08 +!! +!! \param prp_id File access property list identifier. +!! \param comm MPI-3 communicator. +!! \param info MPI-3 info object. +!! \param hdferr \fortran_error +!! +!! See C API: @ref H5Pset_fapl_mpio() +!! + SUBROUTINE h5pset_fapl_mpio_f(prp_id, comm, info, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id + TYPE(MPI_COMM), INTENT(IN) :: comm + TYPE(MPI_INFO), INTENT(IN) :: info + INTEGER, INTENT(OUT) :: hdferr + END SUBROUTINE h5pset_fapl_mpio_f + +#else + + SUBROUTINE h5pset_fapl_mpio_f90(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_fapl_mpio_c(prp_id, comm, info) & BIND(C,NAME='h5pset_fapl_mpio_c') IMPORT :: HID_T IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER , INTENT(IN) :: comm - INTEGER , INTENT(IN) :: info + INTEGER(HID_T) :: prp_id + INTEGER :: comm + INTEGER :: info END FUNCTION h5pset_fapl_mpio_c END INTERFACE hdferr = h5pset_fapl_mpio_c(prp_id, comm, info) - END SUBROUTINE h5pset_fapl_mpio_f + END SUBROUTINE h5pset_fapl_mpio_f90 +#ifdef H5_HAVE_MPI_F08 + SUBROUTINE h5pset_fapl_mpio_f08(prp_id, comm, info, hdferr) + USE mpi_f08 + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id + TYPE(MPI_COMM), INTENT(IN) :: comm + TYPE(MPI_INFO), INTENT(IN) :: info + INTEGER, INTENT(OUT) :: hdferr + + CALL h5pset_fapl_mpio_f90(prp_id, comm%mpi_val, info%mpi_val, hdferr) + + END SUBROUTINE h5pset_fapl_mpio_f08 +#endif + +#endif + +#ifdef H5_DOXYGEN !> !! \ingroup FH5P !! @@ -5168,9 +5252,44 @@ SUBROUTINE h5pset_attr_phase_change_f(ocpl_id, max_compact, min_dense, hdferr) !! \param info MPI-2 info object. !! \param hdferr \fortran_error !! +!! \attention It is the responsibility of the application to free the MPI objects. +!! !! See C API: @ref H5Pget_fapl_mpio() !! - SUBROUTINE h5pget_fapl_mpio_f(prp_id, comm, info, hdferr) +SUBROUTINE h5pget_fapl_mpio_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 +END SUBROUTINE h5pget_fapl_mpio_f +!> +!! \ingroup FH5P +!! +!! \brief Returns MPI communicator information. +!! +!! \note Supports MPI Fortran module mpi_f08 +!! +!! \param prp_id File access property list identifier. +!! \param comm MPI-3 communicator. +!! \param info MPI-3 info object. +!! \param hdferr \fortran_error +!! +!! \attention It is the responsibility of the application to free the MPI objects. +!! +!! See C API: @ref H5Pget_fapl_mpio() +!! +SUBROUTINE h5pget_fapl_mpio_f(prp_id, comm, info, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id + TYPE(MPI_COMM), INTENT(OUT) :: comm + TYPE(MPI_INFO), INTENT(OUT) :: info + INTEGER , INTENT(OUT) :: hdferr +END SUBROUTINE h5pget_fapl_mpio_f + +#else + + SUBROUTINE h5pget_fapl_mpio_f90(prp_id, comm, info, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id INTEGER, INTENT(OUT) :: comm @@ -5181,15 +5300,30 @@ SUBROUTINE h5pset_attr_phase_change_f(ocpl_id, max_compact, min_dense, hdferr) BIND(C,NAME='h5pget_fapl_mpio_c') IMPORT :: HID_T IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER , INTENT(OUT) :: comm - INTEGER , INTENT(OUT) :: info + INTEGER(HID_T) :: prp_id + INTEGER :: comm + INTEGER :: info END FUNCTION h5pget_fapl_mpio_c END INTERFACE hdferr = h5pget_fapl_mpio_c(prp_id, comm, info) - END SUBROUTINE h5pget_fapl_mpio_f + END SUBROUTINE h5pget_fapl_mpio_f90 + +#ifdef H5_HAVE_MPI_F08 + SUBROUTINE h5pget_fapl_mpio_f08(prp_id, comm, info, hdferr) + USE mpi_f08 + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id + TYPE(MPI_COMM), INTENT(OUT) :: comm + TYPE(MPI_INFO), INTENT(OUT) :: info + INTEGER, INTENT(OUT) :: hdferr + + CALL h5pget_fapl_mpio_f90(prp_id, comm%mpi_val, info%mpi_val, hdferr) + + END SUBROUTINE h5pget_fapl_mpio_f08 +#endif +#endif #ifdef H5_HAVE_SUBFILING_VFD !> @@ -5376,14 +5510,15 @@ SUBROUTINE h5pset_attr_phase_change_f(ocpl_id, max_compact, min_dense, hdferr) END SUBROUTINE h5pget_mpio_no_collective_cause_f +#ifdef H5_DOXYGEN !> !! \ingroup FH5P !! -!! \brief Set the MPI communicator and info. +!! \brief Set the MPI communicator and information. !! !! \param prp_id File access property list identifier. -!! \param comm The MPI communicator. -!! \param info The MPI info object. +!! \param comm MPI-2 communicator. +!! \param info MPI-2 info object. !! \param hdferr \fortran_error !! !! See C API: @ref H5Pset_mpi_params() @@ -5394,6 +5529,37 @@ SUBROUTINE h5pset_attr_phase_change_f(ocpl_id, max_compact, min_dense, hdferr) INTEGER , INTENT(IN) :: comm INTEGER , INTENT(IN) :: info INTEGER , INTENT(OUT) :: hdferr + END SUBROUTINE H5Pset_mpi_params_f +!> +!! \ingroup FH5P +!! +!! \brief Set the MPI communicator and information. +!! +!! \note Supports MPI Fortran module mpi_f08 +!! +!! \param prp_id File access property list identifier. +!! \param comm MPI-3 communicator. +!! \param info MPI-3 info object. +!! \param hdferr \fortran_error +!! +!! See C API: @ref H5Pset_mpi_params() +!! + SUBROUTINE H5Pset_mpi_params_f(prp_id, comm, info, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id + TYPE(MPI_COMM), INTENT(IN) :: comm + TYPE(MPI_INFO), INTENT(IN) :: info + INTEGER , INTENT(OUT) :: hdferr + END SUBROUTINE H5Pset_mpi_params_f + +#else + + SUBROUTINE H5Pset_mpi_params_f90(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) & @@ -5408,16 +5574,33 @@ SUBROUTINE h5pset_attr_phase_change_f(ocpl_id, max_compact, min_dense, hdferr) hdferr = H5Pset_mpi_params_c(prp_id, comm, info) - END SUBROUTINE H5Pset_mpi_params_f + END SUBROUTINE H5Pset_mpi_params_f90 + +#ifdef H5_HAVE_MPI_F08 + SUBROUTINE H5Pset_mpi_params_f08(prp_id, comm, info, hdferr) + USE mpi_f08 + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id + TYPE(MPI_COMM), INTENT(IN) :: comm + TYPE(MPI_INFO), INTENT(IN) :: info + INTEGER , INTENT(OUT) :: hdferr + + CALL H5Pset_mpi_params_f90(prp_id, comm%mpi_val, info%mpi_val, hdferr) + + END SUBROUTINE H5Pset_mpi_params_f08 +#endif + +#endif +#ifdef H5_DOXYGEN !> !! \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 comm MPI-2 communicator. +!! \param info MPI-2 info object. !! \param hdferr \fortran_error !! !! See C API: @ref H5Pget_mpi_params() @@ -5428,6 +5611,39 @@ SUBROUTINE h5pset_attr_phase_change_f(ocpl_id, max_compact, min_dense, hdferr) INTEGER , INTENT(OUT) :: comm INTEGER , INTENT(OUT) :: info INTEGER , INTENT(OUT) :: hdferr + END SUBROUTINE H5Pget_mpi_params_f +!> +!! \ingroup FH5P +!! +!! \brief Get the MPI communicator and information. +!! +!! \note Supports MPI Fortran module mpi_f08 +!! +!! \param prp_id File access property list identifier. +!! \param comm MPI-3 communicator. +!! \param info MPI-3 info object. +!! \param hdferr \fortran_error +!! +!! \attention It is the responsibility of the application to free the MPI objects. +!! +!! See C API: @ref H5Pget_mpi_params() +!! + SUBROUTINE H5Pget_mpi_params_f(prp_id, comm, info, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id + TYPE(MPI_COMM), INTENT(OUT) :: comm + TYPE(MPI_INFO), INTENT(OUT) :: info + INTEGER , INTENT(OUT) :: hdferr + END SUBROUTINE H5Pget_mpi_params_f + +#else + + SUBROUTINE H5Pget_mpi_params_f90(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) & @@ -5442,7 +5658,23 @@ SUBROUTINE h5pset_attr_phase_change_f(ocpl_id, max_compact, min_dense, hdferr) hdferr = H5Pget_mpi_params_c(prp_id, comm, info) - END SUBROUTINE H5Pget_mpi_params_f + END SUBROUTINE H5Pget_mpi_params_f90 + +#ifdef H5_HAVE_MPI_F08 + SUBROUTINE H5Pget_mpi_params_f08(prp_id, comm, info, hdferr) + USE mpi_f08 + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id + TYPE(MPI_COMM), INTENT(OUT) :: comm + TYPE(MPI_INFO), INTENT(OUT) :: info + INTEGER , INTENT(OUT) :: hdferr + + CALL H5Pget_mpi_params_f90(prp_id, comm%mpi_val, info%mpi_val, hdferr) + + END SUBROUTINE H5Pget_mpi_params_f08 +#endif + +#endif !> !! \ingroup FH5P |