summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDana Robinson <derobins@hdfgroup.org>2018-12-31 00:46:41 (GMT)
committerDana Robinson <derobins@hdfgroup.org>2018-12-31 00:46:41 (GMT)
commit0ef588986260da7bd72697c276f0f8937791f59f (patch)
tree81455c1f2bcd503b372797a7fc1fcd87526de9ab
parent43bd13837d0c2e50651cbded2fae90d9189d1b73 (diff)
downloadhdf5-0ef588986260da7bd72697c276f0f8937791f59f.zip
hdf5-0ef588986260da7bd72697c276f0f8937791f59f.tar.gz
hdf5-0ef588986260da7bd72697c276f0f8937791f59f.tar.bz2
Replaced all MPI-1 calls with MPI-2 equivalents (from develop).
-rw-r--r--release_docs/RELEASE.txt8
-rw-r--r--src/H5.c2
-rw-r--r--src/H5Smpio.c18
-rw-r--r--testpar/t_cache.c22
4 files changed, 35 insertions, 15 deletions
diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt
index 333f742..228ee43 100644
--- a/release_docs/RELEASE.txt
+++ b/release_docs/RELEASE.txt
@@ -147,7 +147,13 @@ New Features
Parallel Library:
-----------------
- -
+ - All MPI-1 API calls have been replaced with MPI-2 equivalents.
+
+ This was done to better support OpenMPI, as default builds no longer
+ include MPI-1 support (as of OpenMPI 4.0).
+
+ (DER - 2018/12/30, HDFFV-10566)
+
Fortran Library:
----------------
diff --git a/src/H5.c b/src/H5.c
index 1b13fea..5e342ff 100644
--- a/src/H5.c
+++ b/src/H5.c
@@ -138,7 +138,7 @@ H5_init_library(void)
if (mpi_initialized && !mpi_finalized) {
int key_val;
- if(MPI_SUCCESS != (mpi_code = MPI_Comm_create_keyval(MPI_NULL_COPY_FN,
+ if(MPI_SUCCESS != (mpi_code = MPI_Comm_create_keyval(MPI_COMM_NULL_COPY_FN,
(MPI_Comm_delete_attr_function *)H5_mpi_delete_cb,
&key_val, NULL)))
HMPI_GOTO_ERROR(FAIL, "MPI_Comm_create_keyval failed", mpi_code)
diff --git a/src/H5Smpio.c b/src/H5Smpio.c
index 2bd275a..935d279 100644
--- a/src/H5Smpio.c
+++ b/src/H5Smpio.c
@@ -879,7 +879,14 @@ H5S_mpio_hyper_type(const H5S_t *space, size_t elmt_size,
HMPI_GOTO_ERROR(FAIL, "MPI_Type_contiguous failed", mpi_code)
}
- MPI_Type_extent (inner_type, &inner_extent);
+ /* As of version 4.0, OpenMPI now turns off MPI-1 API calls by default,
+ * so we're using the MPI-2 version even though we don't need the lb
+ * value.
+ */
+ {
+ MPI_Aint unused_lb_arg;
+ MPI_Type_get_extent(inner_type, &unused_lb_arg, &inner_extent);
+ }
stride_in_bytes = inner_extent * (MPI_Aint)d[i].strid;
/* If the element count is larger than what a 32 bit integer can hold,
@@ -1500,7 +1507,14 @@ static herr_t H5S_mpio_create_large_type (hsize_t num_elements,
}
}
- MPI_Type_extent (old_type, &old_extent);
+ /* As of version 4.0, OpenMPI now turns off MPI-1 API calls by default,
+ * so we're using the MPI-2 version even though we don't need the lb
+ * value.
+ */
+ {
+ MPI_Aint unused_lb_arg;
+ MPI_Type_get_extent(old_type, &unused_lb_arg, &old_extent);
+ }
/* Set up the arguments for MPI_Type_struct constructor */
type[0] = outer_type;
diff --git a/testpar/t_cache.c b/testpar/t_cache.c
index c27fc23..84c9017 100644
--- a/testpar/t_cache.c
+++ b/testpar/t_cache.c
@@ -1217,20 +1217,20 @@ setup_derived_types(void)
struct mssg_t sample; /* used to compute displacements */
/* setup the displacements array */
- if ( ( MPI_SUCCESS != MPI_Address(&sample.req, &displs[0]) ) ||
- ( MPI_SUCCESS != MPI_Address(&sample.src, &displs[1]) ) ||
- ( MPI_SUCCESS != MPI_Address(&sample.dest, &displs[2]) ) ||
- ( MPI_SUCCESS != MPI_Address(&sample.mssg_num, &displs[3]) ) ||
- ( MPI_SUCCESS != MPI_Address(&sample.base_addr, &displs[4]) ) ||
- ( MPI_SUCCESS != MPI_Address(&sample.len, &displs[5]) ) ||
- ( MPI_SUCCESS != MPI_Address(&sample.ver, &displs[6]) ) ||
- ( MPI_SUCCESS != MPI_Address(&sample.count, &displs[7]) ) ||
- ( MPI_SUCCESS != MPI_Address(&sample.magic, &displs[8]) ) ) {
+ if ( ( MPI_SUCCESS != MPI_Get_address(&sample.req, &displs[0]) ) ||
+ ( MPI_SUCCESS != MPI_Get_address(&sample.src, &displs[1]) ) ||
+ ( MPI_SUCCESS != MPI_Get_address(&sample.dest, &displs[2]) ) ||
+ ( MPI_SUCCESS != MPI_Get_address(&sample.mssg_num, &displs[3]) ) ||
+ ( MPI_SUCCESS != MPI_Get_address(&sample.base_addr, &displs[4]) ) ||
+ ( MPI_SUCCESS != MPI_Get_address(&sample.len, &displs[5]) ) ||
+ ( MPI_SUCCESS != MPI_Get_address(&sample.ver, &displs[6]) ) ||
+ ( MPI_SUCCESS != MPI_Get_address(&sample.count, &displs[7]) ) ||
+ ( MPI_SUCCESS != MPI_Get_address(&sample.magic, &displs[8]) ) ) {
nerrors++;
success = FALSE;
if ( verbose ) {
- HDfprintf(stdout, "%d:%s: MPI_Address() call failed.\n",
+ HDfprintf(stdout, "%d:%s: MPI_Get_Address() call failed.\n",
world_mpi_rank, FUNC);
}
@@ -1245,7 +1245,7 @@ setup_derived_types(void)
if ( success ) {
- result = MPI_Type_struct(9, block_len, displs, mpi_types, &mpi_mssg_t);
+ result = MPI_Type_create_struct(9, block_len, displs, mpi_types, &mpi_mssg_t);
if ( result != MPI_SUCCESS ) {