Skip to content

Commit

Permalink
Avoid calling H5FD_subfiling_init from h5open_f. (#2149)
Browse files Browse the repository at this point in the history
* Only call H5FD_SUBFILING if subfiling conditions are met

* clang format
  • Loading branch information
brtnfld authored Oct 7, 2022
1 parent e80079f commit 306db40
Showing 1 changed file with 23 additions and 1 deletion.
24 changes: 23 additions & 1 deletion fortran/src/H5_f.c
Original file line number Diff line number Diff line change
Expand Up @@ -561,7 +561,29 @@ 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;

/* Calling H5FD_subfiling_init here requires the
subfiling requirements to be met. Only set the
subfiling if it meets the below conditions */

h5fd_hid_flags[7] = (hid_t_f)H5I_INVALID_HID;

#ifdef H5_HAVE_PARALLEL
int mpi_initialized = 0;
int provided = 0;
int mpi_code;

if (MPI_SUCCESS == (mpi_code = MPI_Initialized(&mpi_initialized))) {
if (mpi_initialized) {
/* If MPI is initialized, validate that it was initialized with MPI_THREAD_MULTIPLE */
if (MPI_SUCCESS == (mpi_code = MPI_Query_thread(&provided))) {
if (provided == MPI_THREAD_MULTIPLE) {
h5fd_hid_flags[7] = (hid_t_f)H5FD_SUBFILING;
}
}
}
}
#endif
#ifdef H5_HAVE_SUBFILING_VFD
h5fd_hid_flags[8] = (hid_t_f)H5FD_SUBFILING_DEFAULT_STRIPE_SIZE;
#else
Expand Down

0 comments on commit 306db40

Please sign in to comment.