From 01b8b7cc529ad727f8477a7129bc6a6aae926fc6 Mon Sep 17 00:00:00 2001 From: Robert Kim Yates Date: Fri, 28 Aug 1998 14:08:33 -0500 Subject: [svn-r628] MPI buffer and file type optimization is bypassed, unless the environment variable HDF5_MPI_OPT_TYPES is nonzero. --- src/H5D.c | 6 ++++-- src/H5S.c | 14 ++++++++++++++ src/H5Sprivate.h | 6 ++++++ 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/H5D.c b/src/H5D.c index d9d0b78..c5550d7 100644 --- a/src/H5D.c +++ b/src/H5D.c @@ -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*/ diff --git a/src/H5S.c b/src/H5S.c index 7ff39bb..a30f422 100644 --- a/src/H5S.c +++ b/src/H5S.c @@ -16,6 +16,7 @@ static char RcsId[] = "@(#)$Revision$"; /* $Id$ */ +#define _H5S_IN_H5S_C #include /* Generic Functions */ #include /* ID Functions */ #include /* 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 -- cgit v0.12