diff options
-rw-r--r-- | src/H5D.c | 6 | ||||
-rw-r--r-- | src/H5S.c | 14 | ||||
-rw-r--r-- | src/H5Sprivate.h | 6 |
3 files changed, 24 insertions, 2 deletions
@@ -1378,7 +1378,8 @@ H5D_read(H5D_t *dataset, const H5T_t *mem_type, const H5S_t *mem_space, * mem-and-file-dataspace-xfer functions * (the latter in case the arguments to sconv_funcs * turn out to be inappropriate for MPI-IO). */ - if (dataset->ent.file->shared->access_parms->driver == H5F_LOW_MPIO) { + if (H5_mpi_opt_types_g && + H5F_LOW_MPIO==dataset->ent.file->shared->access_parms->driver) { sconv->read = H5S_mpio_spaces_read; } #endif /*HAVE_PARALLEL*/ @@ -1730,7 +1731,8 @@ H5D_write(H5D_t *dataset, const H5T_t *mem_type, const H5S_t *mem_space, * mem-and-file-dataspace-xfer functions * (the latter in case the arguments to sconv_funcs * turn out to be inappropriate for MPI-IO). */ - if (dataset->ent.file->shared->access_parms->driver == H5F_LOW_MPIO) { + if (H5_mpi_opt_types_g && + H5F_LOW_MPIO==dataset->ent.file->shared->access_parms->driver) { sconv->write = H5S_mpio_spaces_write; } #endif /*HAVE_PARALLEL*/ @@ -16,6 +16,7 @@ static char RcsId[] = "@(#)$Revision$"; /* $Id$ */ +#define _H5S_IN_H5S_C #include <H5private.h> /* Generic Functions */ #include <H5Iprivate.h> /* ID Functions */ #include <H5Eprivate.h> /* Error handling */ @@ -39,6 +40,11 @@ static H5S_conv_t **H5S_conv_g = NULL; static size_t H5S_aconv_g = 0; /*entries allocated*/ static size_t H5S_nconv_g = 0; /*entries used*/ +#ifdef HAVE_PARALLEL +/* Global var whose value comes from environment variable */ +hbool_t H5_mpi_opt_types_g = FALSE; +#endif + /*-------------------------------------------------------------------------- NAME @@ -72,6 +78,14 @@ H5S_init_interface(void) "unable to register one or more conversion functions"); } + { + /* Allow MPI buf-and-file-type optimizations? */ + const char *s = getenv ("HDF5_MPI_OPT_TYPES"); + if (s && isdigit(*s)) { + H5_mpi_opt_types_g = (int)HDstrtol (s, NULL, 0); + } + } + FUNC_LEAVE(ret_value); } diff --git a/src/H5Sprivate.h b/src/H5Sprivate.h index 24dd4f6..fba178a 100644 --- a/src/H5Sprivate.h +++ b/src/H5Sprivate.h @@ -344,6 +344,12 @@ hbool_t H5S_hyper_select_valid (const H5S_t *space); const struct H5O_efl_t *efl, size_t elmt_size, const H5S_t *file_space, const H5S_t *mem_space, const H5D_transfer_t xfer_mode, const void *buf); + +#ifndef _H5S_IN_H5S_C + /* Global var whose value comes from environment variable */ + extern hbool_t H5_mpi_opt_types_g; +#endif /* _H5S_IN_H5S_C */ + #endif #endif |