summaryrefslogtreecommitdiffstats
path: root/src/H5Smpio.c
diff options
context:
space:
mode:
authorJordan Henderson <jhenderson@hdfgroup.org>2018-07-26 17:50:26 (GMT)
committerJordan Henderson <jhenderson@hdfgroup.org>2018-07-26 17:50:26 (GMT)
commite1e10743cf342509b5e89b50fc43fb1d52a9c8d2 (patch)
tree4801126aeea3b4ac5960dfa41169a5fe0fe4e6c3 /src/H5Smpio.c
parent5550fb330a00ef75b6ab6daa6d8dae8bcf832185 (diff)
downloadhdf5-e1e10743cf342509b5e89b50fc43fb1d52a9c8d2.zip
hdf5-e1e10743cf342509b5e89b50fc43fb1d52a9c8d2.tar.gz
hdf5-e1e10743cf342509b5e89b50fc43fb1d52a9c8d2.tar.bz2
Add configure check for MPI_Mprobe and MPI_Imrecv functions
Add line to libhdf5settings file for status of Parallel writes to filtered datasets status Surround Parallel Compression code in MPI_VERSION >= 3 checks Add disabled message for Parallel Compression built w/ MPI-2 Modify Parallel Compression tests to only run the parallel filtered read tests when parallel filtered writes are disabled Update big I/O code to handle being built with MPI-2 Add checks to CMakeLists.txt for MPI_Mprobe and MPI_Imrecv
Diffstat (limited to 'src/H5Smpio.c')
-rw-r--r--src/H5Smpio.c35
1 files changed, 32 insertions, 3 deletions
diff --git a/src/H5Smpio.c b/src/H5Smpio.c
index db81ffc..2bd275a 100644
--- a/src/H5Smpio.c
+++ b/src/H5Smpio.c
@@ -271,29 +271,58 @@ H5S_mpio_create_point_datatype (size_t elmt_size, hsize_t num_points,
if(NULL == (inner_disps = (MPI_Aint *)H5MM_malloc(sizeof(MPI_Aint) * (size_t)total_types)))
HGOTO_ERROR(H5E_DATASPACE, H5E_CANTALLOC, FAIL, "can't allocate array of blocks")
+#if MPI_VERSION < 3
+ /* Allocate block sizes for MPI datatype call */
+ if(NULL == (blocks = (int *)H5MM_malloc(sizeof(int) * bigio_count)))
+ HGOTO_ERROR(H5E_DATASPACE, H5E_CANTALLOC, FAIL, "can't allocate array of blocks")
+
+ for(u = 0; u < bigio_count; u++)
+ blocks[u] = 1;
+#endif
+
for(i=0 ; i<num_big_types ; i++) {
+#if MPI_VERSION >= 3
if(MPI_SUCCESS != (mpi_code = MPI_Type_create_hindexed_block(bigio_count,
1,
&disp[i*bigio_count],
elmt_type,
&inner_types[i]))) {
- HMPI_GOTO_ERROR(FAIL, "MPI_Type_create_hindexed_block failed", mpi_code);
+ HMPI_GOTO_ERROR(FAIL, "MPI_Type_create_hindexed_block failed", mpi_code);
}
+#else
+ if(MPI_SUCCESS != (mpi_code = MPI_Type_create_hindexed((int)bigio_count,
+ blocks,
+ &disp[i*bigio_count],
+ elmt_type,
+ &inner_types[i]))) {
+ HMPI_GOTO_ERROR(FAIL, "MPI_Type_create_hindexed failed", mpi_code)
+ }
+#endif
inner_blocks[i] = 1;
inner_disps[i] = 0;
}
if(remaining_points) {
+#if MPI_VERSION >= 3
if(MPI_SUCCESS != (mpi_code = MPI_Type_create_hindexed_block(remaining_points,
1,
&disp[num_big_types*bigio_count],
elmt_type,
&inner_types[num_big_types]))) {
HMPI_GOTO_ERROR(FAIL, "MPI_Type_create_hindexed_block failed", mpi_code);
- }
+ }
+#else
+ if(MPI_SUCCESS != (mpi_code = MPI_Type_create_hindexed((int)remaining_points,
+ blocks,
+ &disp[num_big_types*bigio_count],
+ elmt_type,
+ &inner_types[num_big_types]))) {
+ HMPI_GOTO_ERROR(FAIL, "MPI_Type_create_hindexed failed", mpi_code)
+ }
+#endif
inner_blocks[num_big_types] = 1;
inner_disps[num_big_types] = 0;
- }
+ }
if(MPI_SUCCESS != (mpi_code = MPI_Type_create_struct(total_types,
inner_blocks,