summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2014-03-24 17:41:18 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2014-03-24 17:41:18 (GMT)
commit25147d5567fa4a2e03c4adeb750d5a7928fe22a9 (patch)
tree408de91ad7153277449aca0885323c75f4c18803
parentf5a2f3d611c7df739264850ccecaf7b8158fb9d9 (diff)
downloadhdf5-25147d5567fa4a2e03c4adeb750d5a7928fe22a9.zip
hdf5-25147d5567fa4a2e03c4adeb750d5a7928fe22a9.tar.gz
hdf5-25147d5567fa4a2e03c4adeb750d5a7928fe22a9.tar.bz2
[svn-r24878] Description:
Bring r24864 from trunk to 1.8 branch: Remove all traces of MPI-POSIX VFD and GPFS detection/code. Remove remaining traces of stream VFD. Remove testpar/t_posix_compliant test (it's not actually verifying anything). Clean up H5D__mpio_opt_possible() further. Moved environment variable that disables MPI collective operations into MPI-IO VFD (instead of it being in src/H5S.c). A few other small code cleanups. Tested on: Mac OSX/64 10.9.2 (amazon) w/parallel & serial (daily tested on trunk)
-rw-r--r--MANIFEST3
-rw-r--r--Makefile.in1
-rwxr-xr-xbin/checkposix5
-rw-r--r--c++/Makefile.in1
-rw-r--r--c++/examples/Makefile.in1
-rw-r--r--c++/src/H5FaccProp.h8
-rw-r--r--c++/src/Makefile.in1
-rw-r--r--c++/test/Makefile.in1
-rw-r--r--config/cmake/ConfigureChecks.cmake29
-rw-r--r--config/cmake/H5pubconf.h.in6
-rw-r--r--config/cmake/HDF5Tests.c11
-rw-r--r--config/cmake/libhdf5.settings.cmake.in1
-rwxr-xr-xconfigure81
-rw-r--r--configure.ac34
-rw-r--r--examples/Makefile.in1
-rw-r--r--fortran/Makefile.in1
-rw-r--r--fortran/examples/Makefile.in1
-rw-r--r--fortran/src/H5FDmpiof.c81
-rw-r--r--fortran/src/H5FDmpioff.f9071
-rw-r--r--fortran/src/H5f90proto.h4
-rw-r--r--fortran/src/Makefile.in1
-rw-r--r--fortran/src/hdf5_fortrandll.def.in2
-rw-r--r--fortran/test/Makefile.in1
-rw-r--r--fortran/testpar/Makefile.in1
-rw-r--r--hl/Makefile.in1
-rw-r--r--hl/c++/Makefile.in1
-rw-r--r--hl/c++/examples/Makefile.in1
-rw-r--r--hl/c++/src/Makefile.in1
-rw-r--r--hl/c++/test/Makefile.in1
-rw-r--r--hl/examples/Makefile.in1
-rw-r--r--hl/fortran/Makefile.in1
-rw-r--r--hl/fortran/examples/Makefile.in1
-rw-r--r--hl/fortran/src/Makefile.in1
-rw-r--r--hl/fortran/test/Makefile.in1
-rw-r--r--hl/src/Makefile.in1
-rw-r--r--hl/test/Makefile.in1
-rw-r--r--hl/tools/Makefile.in1
-rw-r--r--hl/tools/gif2h5/Makefile.in1
-rw-r--r--perform/Makefile.in1
-rw-r--r--perform/benchpar.c20
-rw-r--r--perform/perf_meta.c59
-rw-r--r--perform/pio_engine.c800
-rw-r--r--perform/pio_perf.c44
-rw-r--r--perform/pio_perf.h1
-rw-r--r--perform/sio_engine.c461
-rw-r--r--perform/sio_perf.c15
-rw-r--r--perform/sio_perf.h1
-rw-r--r--release_docs/INSTALL_CMake.txt1
-rw-r--r--src/CMakeLists.txt2
-rw-r--r--src/H5Dmpio.c49
-rw-r--r--src/H5FD.c1
-rw-r--r--src/H5FDmpi.h1
-rw-r--r--src/H5FDmpio.c51
-rw-r--r--src/H5FDmpio.h8
-rw-r--r--src/H5FDmpiposix.c1486
-rw-r--r--src/H5FDmpiposix.h52
-rw-r--r--src/H5FDprivate.h5
-rw-r--r--src/H5Ppublic.h7
-rw-r--r--src/H5S.c13
-rw-r--r--src/H5Sprivate.h4
-rw-r--r--src/H5config.h.in6
-rw-r--r--src/H5trace.c77
-rw-r--r--src/Makefile.am7
-rw-r--r--src/Makefile.in23
-rw-r--r--src/hdf5.lnt1
-rw-r--r--src/libhdf5.settings.in1
-rw-r--r--test/Makefile.in1
-rw-r--r--test/h5test.c6
-rw-r--r--test/links.c5
-rw-r--r--testpar/CMakeTests.cmake4
-rw-r--r--testpar/Makefile.am7
-rw-r--r--testpar/Makefile.in39
-rw-r--r--testpar/t_coll_chunk.c5
-rw-r--r--testpar/t_dset.c123
-rw-r--r--testpar/t_file.c3
-rw-r--r--testpar/t_mdset.c34
-rw-r--r--testpar/t_ph5basic.c114
-rw-r--r--testpar/t_posix_compliant.c927
-rw-r--r--testpar/t_shapesame.c23
-rw-r--r--testpar/t_span_tree.c14
-rw-r--r--testpar/testph5.sh.in77
-rw-r--r--testpar/testphdf5.c22
-rw-r--r--testpar/testphdf5.h16
-rw-r--r--tools/Makefile.in1
-rw-r--r--tools/h5copy/Makefile.in1
-rw-r--r--tools/h5diff/Makefile.in1
-rw-r--r--tools/h5dump/Makefile.in1
-rw-r--r--tools/h5dump/h5dump_ddl.c20
-rw-r--r--tools/h5import/Makefile.in1
-rw-r--r--tools/h5jam/Makefile.in1
-rw-r--r--tools/h5ls/Makefile.in1
-rw-r--r--tools/h5repack/Makefile.in1
-rw-r--r--tools/h5stat/Makefile.in1
-rw-r--r--tools/lib/Makefile.in1
-rw-r--r--tools/lib/h5tools.c64
-rw-r--r--tools/misc/Makefile.in1
-rw-r--r--vms/src/h5pubconf.h6
-rw-r--r--vms/src/make.com2
98 files changed, 419 insertions, 4662 deletions
diff --git a/MANIFEST b/MANIFEST
index d3f7270..c9fc493 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -586,8 +586,6 @@
./src/H5FDmpi.h
./src/H5FDmpio.c
./src/H5FDmpio.h
-./src/H5FDmpiposix.c
-./src/H5FDmpiposix.h
./src/H5FDmulti.c
./src/H5FDmulti.h
./src/H5FDpkg.h
@@ -1014,7 +1012,6 @@
./testpar/t_chunk_alloc.c
./testpar/t_coll_chunk.c
./testpar/t_filter_read.c
-./testpar/t_posix_compliant.c
./testpar/t_shapesame.c
./testpar/t_span_tree.c
./testpar/testpar.h
diff --git a/Makefile.in b/Makefile.in
index 6ad9a19..3ae8b19 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -248,7 +248,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
diff --git a/bin/checkposix b/bin/checkposix
index e3617e5..69d43b4 100755
--- a/bin/checkposix
+++ b/bin/checkposix
@@ -83,7 +83,7 @@ if(<>) {
next if $name =~ /^(ABS|ADDR_OVERFLOW|ALL_MEMBERS|BOUND|CONSTR|DETECT_[I|F|M]|DOWN)$/;
next if $name =~ /^(MIN3?|MAX3?|NELMTS|POWER_OF_TWO|REGION_OVERFLOW)$/;
next if $name =~ /^(UNIQUE_MEMBERS)$/;
- next if $name =~ /^(IS_H5FD_MPIO|IS_H5FD_MPIPOSIX)$/;
+ next if $name =~ /^(IS_H5FD_MPIO)$/;
next if $name =~ /^addr_defined$/;
# These functions/macros are exempt.
@@ -93,9 +93,6 @@ if(<>) {
next if $name =~ /^(_get_osfhandle|GetFileInformationByHandle|SetFilePointer|GetLastError|SetEndOfFile)$/;
next if $name =~ /^(FindNextFile|FindClose|_tzset|Wgettimeofday|GetSystemTimeAsFileTime|Wgetlogin|GetUserName)$/;
- # These are GPFS function calls. Ignore them.
- next if $name =~ /^gpfs_fcntl$/;
-
# These are MPI function calls. Ignore them.
next if $name =~ /^(MPI_|MPE_)/;
diff --git a/c++/Makefile.in b/c++/Makefile.in
index 492970b..80bffc2 100644
--- a/c++/Makefile.in
+++ b/c++/Makefile.in
@@ -213,7 +213,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
diff --git a/c++/examples/Makefile.in b/c++/examples/Makefile.in
index f91d307..51c3fd8 100644
--- a/c++/examples/Makefile.in
+++ b/c++/examples/Makefile.in
@@ -180,7 +180,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
diff --git a/c++/src/H5FaccProp.h b/c++/src/H5FaccProp.h
index 4688440..30de830 100644
--- a/c++/src/H5FaccProp.h
+++ b/c++/src/H5FaccProp.h
@@ -70,14 +70,6 @@ class H5_DLLCPP FileAccPropList : public PropList {
void setSplit( FileAccPropList& meta_plist, FileAccPropList& raw_plist,
const H5std_string& meta_ext, const H5std_string& raw_ext ) const;
-#ifdef H5_HAVE_STREAM // for Stream Virtual File Driver
- // Modifies this file access property list to use the Stream driver.
- void setStream(H5FD_stream_fapl_t &fapl) const;
-
- // Retrieves the streaming I/O driver settings
- H5FD_stream_fapl_t getStream() const;
-#endif
-
// Sets the maximum size of the data sieve buffer.
void setSieveBufSize(size_t bufsize) const;
diff --git a/c++/src/Makefile.in b/c++/src/Makefile.in
index c43ff33..4eda4b3 100644
--- a/c++/src/Makefile.in
+++ b/c++/src/Makefile.in
@@ -255,7 +255,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
diff --git a/c++/test/Makefile.in b/c++/test/Makefile.in
index 3c4c645..06c3657 100644
--- a/c++/test/Makefile.in
+++ b/c++/test/Makefile.in
@@ -216,7 +216,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
diff --git a/config/cmake/ConfigureChecks.cmake b/config/cmake/ConfigureChecks.cmake
index 70570e0..ede3c6e 100644
--- a/config/cmake/ConfigureChecks.cmake
+++ b/config/cmake/ConfigureChecks.cmake
@@ -144,13 +144,6 @@ IF (WIN32)
ENDIF (NOT UNIX AND NOT CYGWIN AND NOT MINGW)
ENDIF (WIN32)
-#IF (WIN32)
-# SET (DEFAULT_STREAM_VFD OFF)
-#ELSE (WIN32)
-# SET (DEFAULT_STREAM_VFD ON)
-#ENDIF (WIN32)
-#OPTION (HDF5_STREAM_VFD "Compile Stream Virtual File Driver support" ${DEFAULT_STREAM_VFD})
-
# TODO --------------------------------------------------------------------------
# Should the Default Virtual File Driver be compiled?
# This is hard-coded now but option should added to match configure
@@ -817,16 +810,6 @@ IF (NOT WINDOWS)
ENDIF (NOT WINDOWS)
#-----------------------------------------------------------------------------
-# Check for the Stream VFD driver
-#-----------------------------------------------------------------------------
-IF (HDF5_STREAM_VFD)
- CHECK_INCLUDE_FILE_CONCAT ("netdb.h" H5_HAVE_NETDB_H)
- CHECK_INCLUDE_FILE_CONCAT ("netinet/tcp.h" H5_HAVE_NETINET_TCP_H)
- CHECK_INCLUDE_FILE_CONCAT ("sys/filio.h" H5_HAVE_SYS_FILIO_H)
- SET (H5_HAVE_STREAM 1)
-ENDIF (HDF5_STREAM_VFD)
-
-#-----------------------------------------------------------------------------
# Check if InitOnceExecuteOnce is available
#-----------------------------------------------------------------------------
IF (WINDOWS)
@@ -892,18 +875,6 @@ IF (WINDOWS)
ENDIF (WINDOWS)
#-----------------------------------------------------------------------------
-# Option to see if GPFS is available on this filesystem --enable-gpfs
-#-----------------------------------------------------------------------------
-OPTION (HDF5_ENABLE_GPFS "Enable GPFS hints for the MPI/POSIX file driver" OFF)
-IF (HDF5_ENABLE_GPFS)
- CHECK_INCLUDE_FILE_CONCAT ("gpfs.h" HAVE_GPFS)
- IF (HAVE_GPFS)
- HDF5_FUNCTION_TEST (HAVE_GPFS)
- ENDIF (HAVE_GPFS)
-ENDIF (HDF5_ENABLE_GPFS)
-MARK_AS_ADVANCED (HDF5_ENABLE_GPFS)
-
-#-----------------------------------------------------------------------------
# Determine how 'inline' is used
#-----------------------------------------------------------------------------
SET (HDF5_EXTRA_TEST_DEFINITIONS INLINE_TEST_INLINE)
diff --git a/config/cmake/H5pubconf.h.in b/config/cmake/H5pubconf.h.in
index dc2aabc..9f5206d 100644
--- a/config/cmake/H5pubconf.h.in
+++ b/config/cmake/H5pubconf.h.in
@@ -213,12 +213,6 @@
/* Define to 1 if you have the `get_fpc_csr' function. */
#cmakedefine H5_HAVE_GET_FPC_CSR @H5_HAVE_GET_FPC_CSR@
-/* Define if we have GPFS support */
-#cmakedefine H5_HAVE_GPFS @H5_HAVE_GPFS@
-
-/* Define to 1 if you have the <gpfs.h> header file. */
-#cmakedefine H5_HAVE_GPFS_H @H5_HAVE_GPFS_H@
-
/* Define if library will contain instrumentation to detect correct
optimization operation */
#cmakedefine H5_HAVE_INSTRUMENTED_LIBRARY @H5_HAVE_INSTRUMENTED_LIBRARY@
diff --git a/config/cmake/HDF5Tests.c b/config/cmake/HDF5Tests.c
index 21206e0..355c06f 100644
--- a/config/cmake/HDF5Tests.c
+++ b/config/cmake/HDF5Tests.c
@@ -437,17 +437,6 @@ main ()
#endif
-#ifdef HAVE_GPFS
-
-#include <gpfs.h>
-int main ()
-{
- int fd = 0;
- gpfs_fcntl(fd, (void *)0);
-}
-
-#endif /* HAVE_GPFS */
-
#ifdef HAVE_IOEO
#include <windows.h>
diff --git a/config/cmake/libhdf5.settings.cmake.in b/config/cmake/libhdf5.settings.cmake.in
index 3970a9f..418a6cf 100644
--- a/config/cmake/libhdf5.settings.cmake.in
+++ b/config/cmake/libhdf5.settings.cmake.in
@@ -63,7 +63,6 @@ Features:
Clear file buffers before write: @HDF5_Enable_Clear_File_Buffers@
Using memory checker: @HDF5_ENABLE_USING_MEMCHECKER@
Function Stack Tracing: @HDF5_ENABLE_CODESTACK@
- GPFS: @HDF5_ENABLE_GPFS@
Strict File Format Checks: @HDF5_STRICT_FORMAT_CHECKS@
Optimization Instrumentation: @HDF5_Enable_Instrument@
Large File Support (LFS): @HDF5_ENABLE_LARGE_FILE@
diff --git a/configure b/configure
index 512be08..70ea4fa 100755
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
#! /bin/sh
-# From configure.ac Id: configure.ac 24771 2014-03-09 22:09:06Z hdftest .
+# From configure.ac Id: configure.ac 24871 2014-03-23 22:09:33Z hdftest .
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for HDF5 1.8.13-snap6.
#
@@ -788,7 +788,6 @@ HAVE_DMALLOC
CODESTACK
INSTRUMENT
LARGEFILE
-GPFS
HDF5_HL
CXX
HDF_CXX
@@ -914,7 +913,6 @@ with_zlib
with_szlib
with_pthread
enable_threadsafe
-enable_gpfs
enable_debug
enable_codestack
enable_metadata_trace_file
@@ -1600,8 +1598,6 @@ Optional Features:
This option is deprecated in favor of
--disable-largefile.
--enable-threadsafe Enable thread safe capability
- --enable-gpfs Enable GPFS hints for the MPI/POSIX file driver.
- [default=no]
--enable-debug=all Turn on debugging in all packages. One may also
specify a comma-separated list of package names
without the leading H5 or the word no. The default
@@ -3978,7 +3974,6 @@ $as_echo "done" >&6; }
## HDF_CXX: whether C++ is enabled. Default no.
## CXX: C++ compiler.
## HDF5_HL: whether high-level library is enabled. Default is yes.
-## GPFS: whether gpfs is enabled. Default no.
## LARGEFILE: whether largefile support is enabled. Default yes.
## INSTRUMENT: whether INSTRUMENT is enabled. No default set here.
## CODESTACK: whether CODESTACK is enabled. Default no.
@@ -4000,7 +3995,6 @@ $as_echo "done" >&6; }
HDF_CXX=no
HDF_CXX=no
HDF5_HL=yes
- GPFS=no
LARGEFILE=yes
CODESTACK=no
@@ -27726,74 +27720,6 @@ $as_echo "no" >&6; }
fi
## ----------------------------------------------------------------------
-## Checking to see if GPFS is available on this filesystem
-##
-# Check whether --enable-gpfs was given.
-if test "${enable_gpfs+set}" = set; then :
- enableval=$enable_gpfs;
-else
- enableval=no
-fi
-
-
-case "X-$enableval" in
- X-yes)
- for ac_header in gpfs.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "gpfs.h" "ac_cv_header_gpfs_h" "$ac_includes_default"
-if test "x$ac_cv_header_gpfs_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_GPFS_H 1
-_ACEOF
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GPFS support" >&5
-$as_echo_n "checking for GPFS support... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <gpfs.h>
-#ifdef FC_DUMMY_MAIN
-#ifndef FC_DUMMY_MAIN_EQ_F77
-# ifdef __cplusplus
- extern "C"
-# endif
- int FC_DUMMY_MAIN() { return 1; }
-#endif
-#endif
-int
-main ()
-{
-int fd = 0; gpfs_fcntl(fd, (void *)0);
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-$as_echo "#define HAVE_GPFS 1" >>confdefs.h
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- LIBS="$LIBS -lgpfs"
- GPFS="yes"
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- GPFS="no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-done
-
- ;;
- X-no|*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gpfs" >&5
-$as_echo_n "checking for gpfs... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: suppressed" >&5
-$as_echo "suppressed" >&6; }
- ;;
-esac
-
-## ----------------------------------------------------------------------
## Turn on debugging by setting compiler flags
## This must come after the enable-production since it depends on production.
##
@@ -31283,7 +31209,7 @@ PARALLEL_MAKE=""
FORTRAN_PARALLEL_MAKE=""
if test -n "$TESTPARALLEL"; then
- PARALLEL_MAKE="$TESTPARALLEL/Makefile $TESTPARALLEL/testph5.sh"
+ PARALLEL_MAKE="$TESTPARALLEL/Makefile"
if test "X$HDF_FORTRAN" = "Xyes"; then
FORTRAN_PARALLEL_MAKE=fortran/$TESTPARALLEL/Makefile
@@ -33231,7 +33157,7 @@ else
fi
-ac_config_files="$ac_config_files src/libhdf5.settings Makefile src/Makefile test/Makefile test/testcheck_version.sh test/testerror.sh test/H5srcdir_str.h test/testlibinfo.sh test/testlinks_env.sh test/test_plugin.sh testpar/Makefile testpar/testph5.sh perform/Makefile tools/Makefile tools/h5dump/Makefile tools/h5dump/testh5dump.sh tools/h5dump/testh5dumppbits.sh tools/h5dump/testh5dumpxml.sh tools/h5ls/testh5ls.sh tools/h5import/Makefile tools/h5import/h5importtestutil.sh tools/h5diff/Makefile tools/h5diff/testh5diff.sh tools/h5diff/testph5diff.sh tools/h5jam/Makefile tools/h5jam/testh5jam.sh tools/h5repack/Makefile tools/h5repack/h5repack.sh tools/h5repack/h5repack_plugin.sh tools/h5ls/Makefile tools/h5copy/Makefile tools/h5copy/testh5copy.sh tools/lib/Makefile tools/misc/Makefile tools/misc/h5cc tools/misc/testh5mkgrp.sh tools/misc/testh5repart.sh tools/h5stat/testh5stat.sh tools/h5stat/Makefile examples/Makefile examples/run-c-ex.sh examples/testh5cc.sh c++/Makefile c++/src/Makefile c++/src/h5c++ c++/test/Makefile c++/test/H5srcdir_str.h c++/examples/Makefile c++/examples/run-c++-ex.sh c++/examples/testh5c++.sh fortran/Makefile fortran/src/h5fc fortran/src/Makefile fortran/test/Makefile fortran/testpar/Makefile fortran/examples/Makefile fortran/examples/run-fortran-ex.sh fortran/examples/testh5fc.sh hl/Makefile hl/src/Makefile hl/test/Makefile hl/test/H5srcdir_str.h hl/tools/Makefile hl/tools/gif2h5/Makefile hl/tools/gif2h5/h52giftest.sh hl/examples/Makefile hl/examples/run-hlc-ex.sh hl/c++/Makefile hl/c++/src/Makefile hl/c++/test/Makefile hl/c++/examples/Makefile hl/c++/examples/run-hlc++-ex.sh hl/fortran/Makefile hl/fortran/src/Makefile hl/fortran/test/Makefile hl/fortran/examples/Makefile hl/fortran/examples/run-hlfortran-ex.sh"
+ac_config_files="$ac_config_files src/libhdf5.settings Makefile src/Makefile test/Makefile test/testcheck_version.sh test/testerror.sh test/H5srcdir_str.h test/testlibinfo.sh test/testlinks_env.sh test/test_plugin.sh testpar/Makefile perform/Makefile tools/Makefile tools/h5dump/Makefile tools/h5dump/testh5dump.sh tools/h5dump/testh5dumppbits.sh tools/h5dump/testh5dumpxml.sh tools/h5ls/testh5ls.sh tools/h5import/Makefile tools/h5import/h5importtestutil.sh tools/h5diff/Makefile tools/h5diff/testh5diff.sh tools/h5diff/testph5diff.sh tools/h5jam/Makefile tools/h5jam/testh5jam.sh tools/h5repack/Makefile tools/h5repack/h5repack.sh tools/h5repack/h5repack_plugin.sh tools/h5ls/Makefile tools/h5copy/Makefile tools/h5copy/testh5copy.sh tools/lib/Makefile tools/misc/Makefile tools/misc/h5cc tools/misc/testh5mkgrp.sh tools/misc/testh5repart.sh tools/h5stat/testh5stat.sh tools/h5stat/Makefile examples/Makefile examples/run-c-ex.sh examples/testh5cc.sh c++/Makefile c++/src/Makefile c++/src/h5c++ c++/test/Makefile c++/test/H5srcdir_str.h c++/examples/Makefile c++/examples/run-c++-ex.sh c++/examples/testh5c++.sh fortran/Makefile fortran/src/h5fc fortran/src/Makefile fortran/test/Makefile fortran/testpar/Makefile fortran/examples/Makefile fortran/examples/run-fortran-ex.sh fortran/examples/testh5fc.sh hl/Makefile hl/src/Makefile hl/test/Makefile hl/test/H5srcdir_str.h hl/tools/Makefile hl/tools/gif2h5/Makefile hl/tools/gif2h5/h52giftest.sh hl/examples/Makefile hl/examples/run-hlc-ex.sh hl/c++/Makefile hl/c++/src/Makefile hl/c++/test/Makefile hl/c++/examples/Makefile hl/c++/examples/run-hlc++-ex.sh hl/fortran/Makefile hl/fortran/src/Makefile hl/fortran/test/Makefile hl/fortran/examples/Makefile hl/fortran/examples/run-hlfortran-ex.sh"
cat >confcache <<\_ACEOF
@@ -34507,7 +34433,6 @@ do
"test/testlinks_env.sh") CONFIG_FILES="$CONFIG_FILES test/testlinks_env.sh" ;;
"test/test_plugin.sh") CONFIG_FILES="$CONFIG_FILES test/test_plugin.sh" ;;
"testpar/Makefile") CONFIG_FILES="$CONFIG_FILES testpar/Makefile" ;;
- "testpar/testph5.sh") CONFIG_FILES="$CONFIG_FILES testpar/testph5.sh" ;;
"perform/Makefile") CONFIG_FILES="$CONFIG_FILES perform/Makefile" ;;
"tools/Makefile") CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;;
"tools/h5dump/Makefile") CONFIG_FILES="$CONFIG_FILES tools/h5dump/Makefile" ;;
diff --git a/configure.ac b/configure.ac
index bf084cb..c9604f5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -160,7 +160,6 @@ AC_MSG_RESULT([done])
## HDF_CXX: whether C++ is enabled. Default no.
## CXX: C++ compiler.
## HDF5_HL: whether high-level library is enabled. Default is yes.
-## GPFS: whether gpfs is enabled. Default no.
## LARGEFILE: whether largefile support is enabled. Default yes.
## INSTRUMENT: whether INSTRUMENT is enabled. No default set here.
## CODESTACK: whether CODESTACK is enabled. Default no.
@@ -182,7 +181,6 @@ AC_SUBST([FC2003]) HDF_FORTRAN2003=no
AC_SUBST([HDF_CXX]) HDF_CXX=no
AC_SUBST([CXX]) HDF_CXX=no
AC_SUBST([HDF5_HL]) HDF5_HL=yes
-AC_SUBST([GPFS]) GPFS=no
AC_SUBST([LARGEFILE]) LARGEFILE=yes
AC_SUBST([INSTRUMENT])
AC_SUBST([CODESTACK]) CODESTACK=no
@@ -2410,35 +2408,6 @@ else
fi
## ----------------------------------------------------------------------
-## Checking to see if GPFS is available on this filesystem
-##
-AC_ARG_ENABLE([gpfs],
- [AS_HELP_STRING([--enable-gpfs],
- [Enable GPFS hints for the MPI/POSIX file
- driver. [default=no]])],,
- [enableval=no])
-
-case "X-$enableval" in
- X-yes)
- AC_CHECK_HEADERS([gpfs.h],
- [AC_MSG_CHECKING([for GPFS support])
- AC_TRY_COMPILE([#include <gpfs.h>],
- [int fd = 0; gpfs_fcntl(fd, (void *)0);],
- [AC_DEFINE([HAVE_GPFS], [1],
- [Define if we have GPFS support])
- AC_MSG_RESULT([yes])
- LIBS="$LIBS -lgpfs"
- GPFS="yes"],
- [AC_MSG_RESULT([no])
- GPFS="no"])])
- ;;
- X-no|*)
- AC_MSG_CHECKING([for gpfs])
- AC_MSG_RESULT([suppressed])
- ;;
-esac
-
-## ----------------------------------------------------------------------
## Turn on debugging by setting compiler flags
## This must come after the enable-production since it depends on production.
##
@@ -4471,7 +4440,7 @@ PARALLEL_MAKE=""
FORTRAN_PARALLEL_MAKE=""
if test -n "$TESTPARALLEL"; then
- PARALLEL_MAKE="$TESTPARALLEL/Makefile $TESTPARALLEL/testph5.sh"
+ PARALLEL_MAKE="$TESTPARALLEL/Makefile"
if test "X$HDF_FORTRAN" = "Xyes"; then
FORTRAN_PARALLEL_MAKE=fortran/$TESTPARALLEL/Makefile
@@ -4547,7 +4516,6 @@ AC_CONFIG_FILES([src/libhdf5.settings
test/testlinks_env.sh
test/test_plugin.sh
testpar/Makefile
- testpar/testph5.sh
perform/Makefile
tools/Makefile
tools/h5dump/Makefile
diff --git a/examples/Makefile.in b/examples/Makefile.in
index a564dd4..394b996 100644
--- a/examples/Makefile.in
+++ b/examples/Makefile.in
@@ -180,7 +180,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
diff --git a/fortran/Makefile.in b/fortran/Makefile.in
index 4196fe2..ca646ce 100644
--- a/fortran/Makefile.in
+++ b/fortran/Makefile.in
@@ -217,7 +217,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
diff --git a/fortran/examples/Makefile.in b/fortran/examples/Makefile.in
index 1cc0825..53dc2b6 100644
--- a/fortran/examples/Makefile.in
+++ b/fortran/examples/Makefile.in
@@ -188,7 +188,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
diff --git a/fortran/src/H5FDmpiof.c b/fortran/src/H5FDmpiof.c
index 993b5ac..bbdb170 100644
--- a/fortran/src/H5FDmpiof.c
+++ b/fortran/src/H5FDmpiof.c
@@ -220,87 +220,6 @@ nh5pget_dxpl_mpio_c(hid_t_f *prp_id, int_f* data_xfer_mode)
return ret_value;
}
-/****if* H5FDmpiof/h5pset_fapl_mpiposix_c
- * NAME
- * h5pset_fapl_mpiposix_c
- * PURPOSE
- * Call H5Pset_fapl_mpiposix to set mode for parallel I/O and the user
- * supplied communicator
- * INPUTS
- * prp_id - property list identifier
- * comm - MPI communicator
- * flag - flag to use GPFS hints
- * RETURNS
- * 0 on success, -1 on failure
- * AUTHOR
- * Elena Pourmal
- * Tuesday, May 6, 2003
- * HISTORY
- *
- * SOURCE
-*/
-int_f
-nh5pset_fapl_mpiposix_c(hid_t_f *prp_id, int_f* comm, int_f* flag)
-/******/
-{
- int ret_value = -1;
- hid_t c_prp_id;
- herr_t ret;
- hbool_t c_flag;
- MPI_Comm c_comm;
- c_comm = MPI_Comm_f2c(*comm);
- c_flag = (hbool_t)*flag;
- /*
- * Call H5Pset_fapl_mpiposix function.
- */
- c_prp_id = (hid_t) *prp_id;
- ret = H5Pset_fapl_mpiposix(c_prp_id, c_comm, c_flag);
- if (ret < 0) return ret_value;
- ret_value = 0;
- return ret_value;
-}
-
-/****if* H5FDmpiof/h5pget_fapl_mpiposix_c
- * NAME
- * h5pget_fapl_mpiposix_c
- * PURPOSE
- * Call H5Pget_fapl_mpiposix to retrieve communicator and info object
- * INPUTS
- * prp_id - property list identifier
- * OUTPUTS
- * comm - buffer to return MPI communicator
- * flag - flag to use GPFS hints
- * RETURNS
- * 0 on success, -1 on failure
- * AUTHOR
- * Elena Pourmal
- * Tuesday, May 6, 2003
- * HISTORY
- *
- * SOURCE
-*/
-int_f
-nh5pget_fapl_mpiposix_c(hid_t_f *prp_id, int_f* comm, int_f* flag)
-/******/
-{
- int ret_value = -1;
- hid_t c_prp_id;
- herr_t ret;
- hbool_t c_flag;
- MPI_Comm c_comm;
-
- /*
- * Call H5Pget_fapl_mpiposix function.
- */
- c_prp_id = (hid_t) *prp_id;
- ret = H5Pget_fapl_mpiposix(c_prp_id, &c_comm, &c_flag);
- if (ret < 0) return ret_value;
- *comm = (int_f) MPI_Comm_c2f(c_comm);
- *flag = (int_f) c_flag;
- ret_value = 0;
- return ret_value;
-}
-
/****if* H5Pf/h5pget_mpio_actual_io_mode_c
* NAME
* h5pget_mpio_actual_io_mode_c
diff --git a/fortran/src/H5FDmpioff.f90 b/fortran/src/H5FDmpioff.f90
index 5c81bc8..50a77d9 100644
--- a/fortran/src/H5FDmpioff.f90
+++ b/fortran/src/H5FDmpioff.f90
@@ -131,6 +131,7 @@ CONTAINS
INTEGER, EXTERNAL :: h5pset_dxpl_mpio_c
hdferr = h5pset_dxpl_mpio_c(prp_id, data_xfer_mode)
END SUBROUTINE h5pset_dxpl_mpio_f
+
!****s* H5FDMPIO/h5pget_dxpl_mpio_f
!
! NAME
@@ -164,76 +165,6 @@ CONTAINS
hdferr = h5pget_dxpl_mpio_c(prp_id, data_xfer_mode)
END SUBROUTINE h5pget_dxpl_mpio_f
-!****s* H5FDMPIO/h5pset_fapl_mpiposix_f
-!
-! NAME
-! h5pset_fapl_mpiposix_f
-!
-! PURPOSE
-! Stores MPI IO communicator information to the file
-! access property list.
-!
-! INPUTS
-! prp_id - File access property list identifier.
-! comm - MPI-2 communicator.
-! use_gpfs - Logical flag to use the GPFS hints.
-! OUTPUTS
-! hdferr - Returns 0 if successful and -1 if fails.
-!
-! AUTHOR
-! Elena Pourmal
-! May 6, 2003
-!
-! Fortran90 Interface:
- SUBROUTINE h5pset_fapl_mpiposix_f(prp_id, comm, use_gpfs, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id
- INTEGER, INTENT(IN) :: comm
- LOGICAL, INTENT(IN) :: use_gpfs
- INTEGER, INTENT(OUT) :: hdferr
-!*****
- INTEGER :: flag
- INTEGER, EXTERNAL :: h5pset_fapl_mpiposix_c
- flag = 0
- IF(use_gpfs) flag = 1
- hdferr = h5pset_fapl_mpiposix_c(prp_id, comm, flag)
- END SUBROUTINE h5pset_fapl_mpiposix_f
-
-!****s* H5FDMPIO/h5pget_fapl_mpiposix_f
-!
-! NAME
-! h5pget_fapl_mpiposix_f
-!
-! PURPOSE
-! Returns MPI communicator information.
-!
-! INPUTS
-! prp_id - File access property list identifier.
-! OUTPUTS
-! comm - MPI-2 communicator.
-! use_gpfs - Flag to use GPFS hints.
-! hdferr - Returns 0 if successful and -1 if fails.
-! AUTHOR
-! Elena Pourmal
-! May 6, 2003
-!
-! Fortran90 Interface:
- SUBROUTINE h5pget_fapl_mpiposix_f(prp_id, comm, use_gpfs, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id
- INTEGER, INTENT(OUT) :: comm
- LOGICAL, INTENT(OUT) :: use_gpfs
- INTEGER, INTENT(OUT) :: hdferr
-!*****
- INTEGER :: flag
-
- INTEGER, EXTERNAL :: h5pget_fapl_mpiposix_c
- hdferr = h5pget_fapl_mpiposix_c(prp_id, comm, flag)
- use_gpfs = .FALSE.
- IF (flag .EQ. 1) use_gpfs = .TRUE.
- END SUBROUTINE h5pget_fapl_mpiposix_f
-
-
!****s* H5P/h5pget_mpio_actual_io_mode_f
! NAME
! h5pget_mpio_actual_io_mode_f
diff --git a/fortran/src/H5f90proto.h b/fortran/src/H5f90proto.h
index 4b02b6c..c533452 100644
--- a/fortran/src/H5f90proto.h
+++ b/fortran/src/H5f90proto.h
@@ -914,8 +914,6 @@ H5_FCDLL int_f nh5oget_comment_by_name_c (hid_t_f *loc_id, _fcd name, size_t_f *
#define nh5pset_btree_ratios_c H5_FC_FUNC_(h5pset_btree_ratios_c, H5PSET_BTREE_RATIOS_C)
#define nh5pset_fapl_mpio_c H5_FC_FUNC_(h5pset_fapl_mpio_c, H5PSET_FAPL_MPIO_C)
#define nh5pget_fapl_mpio_c H5_FC_FUNC_(h5pget_fapl_mpio_c, H5PGET_FAPL_MPIO_C)
-#define nh5pset_fapl_mpiposix_c H5_FC_FUNC_(h5pset_fapl_mpiposix_c, H5PSET_FAPL_MPIPOSIX_C)
-#define nh5pget_fapl_mpiposix_c H5_FC_FUNC_(h5pget_fapl_mpiposix_c, H5PGET_FAPL_MPIPOSIX_C)
#define nh5pset_dxpl_mpio_c H5_FC_FUNC_(h5pset_dxpl_mpio_c, H5PSET_DXPL_MPIO_C)
#define nh5pget_dxpl_mpio_c H5_FC_FUNC_(h5pget_dxpl_mpio_c, H5PGET_DXPL_MPIO_C)
#define nh5pget_fclose_degree_c H5_FC_FUNC_(h5pget_fclose_degree_c, H5PGET_FCLOSE_DEGREE_C)
@@ -1072,8 +1070,6 @@ H5_FCDLL int_f nh5pget_btree_ratios_c(hid_t_f *prp_id, real_f* left, real_f* mid
H5_FCDLL int_f nh5pset_btree_ratios_c(hid_t_f *prp_id, real_f* left, real_f* middle, real_f* right);
H5_FCDLL int_f nh5pget_fapl_mpio_c(hid_t_f *prp_id, int_f* comm, int_f* info);
H5_FCDLL int_f nh5pset_fapl_mpio_c(hid_t_f *prp_id, int_f* comm, int_f* info);
-H5_FCDLL int_f nh5pget_fapl_mpiposix_c(hid_t_f *prp_id, int_f* comm, int_f* flag);
-H5_FCDLL int_f nh5pset_fapl_mpiposix_c(hid_t_f *prp_id, int_f* comm, int_f* flag);
H5_FCDLL int_f nh5pget_dxpl_mpio_c(hid_t_f *prp_id, int_f* data_xfer_mode);
H5_FCDLL int_f nh5pset_dxpl_mpio_c(hid_t_f *prp_id, int_f* data_xfer_mode);
H5_FCDLL int_f nh5pset_fclose_degree_c(hid_t_f *fapl, int_f *degree);
diff --git a/fortran/src/Makefile.in b/fortran/src/Makefile.in
index 5db905c..2e3725b 100644
--- a/fortran/src/Makefile.in
+++ b/fortran/src/Makefile.in
@@ -307,7 +307,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
diff --git a/fortran/src/hdf5_fortrandll.def.in b/fortran/src/hdf5_fortrandll.def.in
index 62030f0..c549d34 100644
--- a/fortran/src/hdf5_fortrandll.def.in
+++ b/fortran/src/hdf5_fortrandll.def.in
@@ -567,6 +567,4 @@ H5Z_mp_H5ZGET_FILTER_INFO_F
@H5_NOPAREXP@H5FDMPIO_mp_H5PGET_FAPL_MPIO_F
@H5_NOPAREXP@H5FDMPIO_mp_H5PSET_DXPL_MPIO_F
@H5_NOPAREXP@H5FDMPIO_mp_H5PGET_DXPL_MPIO_F
-@H5_NOPAREXP@H5FDMPIO_mp_H5PSET_FAPL_MPIPOSIX_F
-@H5_NOPAREXP@H5FDMPIO_mp_H5PGET_FAPL_MPIPOSIX_F
@H5_NOPAREXP@H5FDMPIO_mp_H5PGET_MPIO_ACTUAL_IO_MODE_F
diff --git a/fortran/test/Makefile.in b/fortran/test/Makefile.in
index 9f8b6d0..9db74e8 100644
--- a/fortran/test/Makefile.in
+++ b/fortran/test/Makefile.in
@@ -291,7 +291,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
diff --git a/fortran/testpar/Makefile.in b/fortran/testpar/Makefile.in
index 1903529..60f24b9 100644
--- a/fortran/testpar/Makefile.in
+++ b/fortran/testpar/Makefile.in
@@ -215,7 +215,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
diff --git a/hl/Makefile.in b/hl/Makefile.in
index 6ca962b..8b00085 100644
--- a/hl/Makefile.in
+++ b/hl/Makefile.in
@@ -217,7 +217,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
diff --git a/hl/c++/Makefile.in b/hl/c++/Makefile.in
index 210fcc5..a63388c 100644
--- a/hl/c++/Makefile.in
+++ b/hl/c++/Makefile.in
@@ -213,7 +213,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
diff --git a/hl/c++/examples/Makefile.in b/hl/c++/examples/Makefile.in
index 1e66687..a3be41c 100644
--- a/hl/c++/examples/Makefile.in
+++ b/hl/c++/examples/Makefile.in
@@ -179,7 +179,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
diff --git a/hl/c++/src/Makefile.in b/hl/c++/src/Makefile.in
index 22c5fed..4619d42 100644
--- a/hl/c++/src/Makefile.in
+++ b/hl/c++/src/Makefile.in
@@ -246,7 +246,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
diff --git a/hl/c++/test/Makefile.in b/hl/c++/test/Makefile.in
index c873d32..de668da 100644
--- a/hl/c++/test/Makefile.in
+++ b/hl/c++/test/Makefile.in
@@ -212,7 +212,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
diff --git a/hl/examples/Makefile.in b/hl/examples/Makefile.in
index ee4d885..8ff7579 100644
--- a/hl/examples/Makefile.in
+++ b/hl/examples/Makefile.in
@@ -179,7 +179,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
diff --git a/hl/fortran/Makefile.in b/hl/fortran/Makefile.in
index 8cb74cd..be754a2 100644
--- a/hl/fortran/Makefile.in
+++ b/hl/fortran/Makefile.in
@@ -217,7 +217,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
diff --git a/hl/fortran/examples/Makefile.in b/hl/fortran/examples/Makefile.in
index 8413c2d..ea66cab 100644
--- a/hl/fortran/examples/Makefile.in
+++ b/hl/fortran/examples/Makefile.in
@@ -180,7 +180,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
diff --git a/hl/fortran/src/Makefile.in b/hl/fortran/src/Makefile.in
index 8308229..212587a 100644
--- a/hl/fortran/src/Makefile.in
+++ b/hl/fortran/src/Makefile.in
@@ -262,7 +262,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
diff --git a/hl/fortran/test/Makefile.in b/hl/fortran/test/Makefile.in
index 5d576d0..8897b42 100644
--- a/hl/fortran/test/Makefile.in
+++ b/hl/fortran/test/Makefile.in
@@ -226,7 +226,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
diff --git a/hl/src/Makefile.in b/hl/src/Makefile.in
index 288d44f..b89def5 100644
--- a/hl/src/Makefile.in
+++ b/hl/src/Makefile.in
@@ -245,7 +245,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
diff --git a/hl/test/Makefile.in b/hl/test/Makefile.in
index 5639844..588d867 100644
--- a/hl/test/Makefile.in
+++ b/hl/test/Makefile.in
@@ -253,7 +253,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
diff --git a/hl/tools/Makefile.in b/hl/tools/Makefile.in
index 7d887f5..98095bb 100644
--- a/hl/tools/Makefile.in
+++ b/hl/tools/Makefile.in
@@ -214,7 +214,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
diff --git a/hl/tools/gif2h5/Makefile.in b/hl/tools/gif2h5/Makefile.in
index e587f5f..54754ba 100644
--- a/hl/tools/gif2h5/Makefile.in
+++ b/hl/tools/gif2h5/Makefile.in
@@ -228,7 +228,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
diff --git a/perform/Makefile.in b/perform/Makefile.in
index 091f4f1..fe9d184 100644
--- a/perform/Makefile.in
+++ b/perform/Makefile.in
@@ -254,7 +254,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
diff --git a/perform/benchpar.c b/perform/benchpar.c
index 24146e4..b75006a 100644
--- a/perform/benchpar.c
+++ b/perform/benchpar.c
@@ -44,7 +44,6 @@
/* defines for type of VFL driver to use */
#define FACC_DEFAULT 0
#define FACC_MPIO 1
-#define FACC_MPIPOSIX 2
/* Defines for computing performance information */
#define ONE_KB 1024
@@ -78,7 +77,7 @@ char mpi_name[MPI_MAX_PROCESSOR_NAME];
static void usage(void)
{
printf("usage: benchpar [-d <# of dims>] [-s <dim_size>] [-f <file name>] [-h]\n");
- printf(" [-S <slice dim>] [-p] [-I] [-c] [-i <# of iterations>\n");
+ printf(" [-S <slice dim>] [-I] [-c] [-i <# of iterations>\n");
printf(" -c - Use chunked storage for dataset with 1-1 exact\n");
printf(" mapping of chunks to hyperslabs\n");
printf(" Default: off (i.e. contiguous storage)\n");
@@ -91,8 +90,6 @@ static void usage(void)
printf(" Default: 3\n");
printf(" -I - Use independent parallel I/O\n");
printf(" Default: use collective parallel I/O\n");
- printf(" -p - Use MPI-posix VFL driver\n");
- printf(" Default: use MPI-I/O VFL driver\n");
printf(" -s <dim_size> - Set the size of each of the dataset's dimensions\n");
printf(" Default: 1024\n");
printf(" -S <slice dim> - Set the dimension to slice the dataset along\n");
@@ -114,7 +111,6 @@ static hid_t create_fcpl(void)
static hid_t create_fapl(MPI_Comm comm, MPI_Info info, int acc_type )
{
hid_t fapl; /* File access property list */
- hbool_t use_gpfs = FALSE; /* Use GPFS hints */
herr_t ret; /* Generic return value */
fapl = H5Pcreate (H5P_FILE_ACCESS);
@@ -122,13 +118,7 @@ static hid_t create_fapl(MPI_Comm comm, MPI_Info info, int acc_type )
/* set parallel access with communicator, using MPI-I/O driver */
if (acc_type == FACC_MPIO) {
- ret = H5Pset_fapl_mpio(fapl, comm, info);
- assert(ret>=0);
- } /* end if */
-
- /* set parallel access with communicator, using MPI-posix driver */
- if (acc_type == FACC_MPIPOSIX) {
- ret = H5Pset_fapl_mpiposix(fapl, comm, use_gpfs);
+ ret = H5Pset_fapl_mpio(fapl, comm, info);
assert(ret>=0);
} /* end if */
@@ -279,10 +269,6 @@ int main(int argc, char *argv[])
par_mode=H5FD_MPIO_INDEPENDENT;
break;
- case 'p': /* Use MPI-posix VFL driver */
- vfl_type=FACC_MPIPOSIX;
- break;
-
case 's': /* Change dimension size */
/* Get new dimension size */
dim_size=atoi(argv[curr_arg]);
@@ -469,7 +455,7 @@ int main(int argc, char *argv[])
/* Only print information from one node */
if(mpi_rank==0) {
/* Print information about test */
- printf("File driver used: %s\n",vfl_type==FACC_MPIO ? "MPI-I/O" : "MPI-posix");
+ printf("File driver used: %s\n",vfl_type==FACC_MPIO ? "MPI-I/O" : "Unknown");
printf("Type of parallel access: %s\n",par_mode==H5FD_MPIO_COLLECTIVE ? "Collective" : "Independent");
printf("Type of dataset storage: %s\n",use_chunks ? "Chunked" : "Contiguous");
printf("Number of processes: %d\n",mpi_size);
diff --git a/perform/perf_meta.c b/perform/perf_meta.c
index 8c3b06f..b52871e 100644
--- a/perform/perf_meta.c
+++ b/perform/perf_meta.c
@@ -29,7 +29,6 @@
/* File_Access_type bits */
#define FACC_DEFAULT 0x0 /* serial as default */
#define FACC_MPIO 0x1 /* MPIO */
-#define FACC_MPIPOSIX 0x8 /* MPIPOSIX */
/* Which test to run */
int RUN_TEST = 0x0; /* all tests as default */
@@ -129,11 +128,7 @@ parse_options(int argc, char **argv)
}
break;
- case 'p': /* Use the MPI-POSIX driver access */
- facc_type = FACC_MPIPOSIX;
- break;
-
- case 'm': /* Use the MPI-POSIX driver access */
+ case 'm': /* Use the MPI-IO driver */
facc_type = FACC_MPIO;
break;
@@ -171,7 +166,7 @@ parse_options(int argc, char **argv)
/* Check valid values */
#ifndef H5_HAVE_PARALLEL
- if(facc_type == FACC_MPIO || facc_type == FACC_MPIPOSIX)
+ if(facc_type == FACC_MPIO)
{
nerrors++;
return(1);
@@ -215,19 +210,15 @@ parse_options(int argc, char **argv)
static void
usage(void)
{
- printf("Usage: perf_meta [-h] [-m] [-p] [-d<num_datasets>]"
+ printf("Usage: perf_meta [-h] [-m] [-d<num_datasets>]"
"[-a<num_attributes>]\n"
"\t[-n<batch_attributes>] [-f<option>] [-t<test>]\n");
printf("\t-h"
"\t\t\thelp page.\n");
printf("\t-m"
"\t\t\tset MPIO as the file driver when parallel HDF5\n"
- "\t\t\t\tis enabled. Either -m or -p has be to \n"
- "\t\t\t\tspecified when running parallel program.\n");
- printf("\t-p"
- "\t\t\tset MPI POSIX as the file driver when parallel \n"
- "\t\t\t\tHDF5 is enabled. Either -m or -p has be to \n"
- "\t\t\t\tspecified when running parallel program.\n");
+ "\t\t\t\tis enabled. -m must be specified\n"
+ "\t\t\t\twhen running parallel program.\n");
printf("\t-d<num_datasets>"
"\tset number of datasets for meta data \n"
"\t\t\t\tperformance test\n");
@@ -372,7 +363,7 @@ create_attrs_1(void)
#ifdef H5_HAVE_PARALLEL
/* need the rank for printing data */
int mpi_rank;
- if(facc_type == FACC_MPIO || facc_type == FACC_MPIPOSIX)
+ if(facc_type == FACC_MPIO)
MPI_Comm_rank(MPI_COMM_WORLD, &mpi_rank);
#endif /*H5_HAVE_PARALLEL*/
@@ -416,7 +407,7 @@ create_attrs_1(void)
goto error;
} /* end for */
- if(facc_type == FACC_MPIO || facc_type == FACC_MPIPOSIX) {
+ if(facc_type == FACC_MPIO) {
#ifdef H5_HAVE_PARALLEL
MPI_Barrier(MPI_COMM_WORLD);
#endif /*H5_HAVE_PARALLEL*/
@@ -478,7 +469,7 @@ create_attrs_2(void)
#ifdef H5_HAVE_PARALLEL
/* need the rank for printing data */
int mpi_rank;
- if(facc_type == FACC_MPIO || facc_type == FACC_MPIPOSIX)
+ if(facc_type == FACC_MPIO)
MPI_Comm_rank(MPI_COMM_WORLD, &mpi_rank);
#endif /*H5_HAVE_PARALLEL*/
@@ -519,11 +510,10 @@ create_attrs_2(void)
goto error;
} /* end for */
- if(facc_type == FACC_MPIO || facc_type == FACC_MPIPOSIX) {
#ifdef H5_HAVE_PARALLEL
- MPI_Barrier(MPI_COMM_WORLD);
+ if(facc_type == FACC_MPIO)
+ MPI_Barrier(MPI_COMM_WORLD);
#endif /*H5_HAVE_PARALLEL*/
- }
#ifdef H5_HAVE_PARALLEL
/* only process 0 reports if parallel */
@@ -584,7 +574,7 @@ create_attrs_3(void)
#ifdef H5_HAVE_PARALLEL
/* need the rank for printing data */
int mpi_rank;
- if(facc_type == FACC_MPIO || facc_type == FACC_MPIPOSIX)
+ if(facc_type == FACC_MPIO)
MPI_Comm_rank(MPI_COMM_WORLD, &mpi_rank);
#endif /*H5_HAVE_PARALLEL*/
@@ -633,11 +623,10 @@ create_attrs_3(void)
} /* end for */
} /* end for */
- if(facc_type == FACC_MPIO || facc_type == FACC_MPIPOSIX) {
#ifdef H5_HAVE_PARALLEL
+ if(facc_type == FACC_MPIO)
MPI_Barrier(MPI_COMM_WORLD);
#endif /*H5_HAVE_PARALLEL*/
- }
#ifdef H5_HAVE_PARALLEL
/* only process 0 reports if parallel */
@@ -709,8 +698,8 @@ void perf(p_time *perf_t, double start_t, double end_t)
{
double t = end_t - start_t;
- if(facc_type == FACC_MPIO || facc_type == FACC_MPIPOSIX) {
#ifdef H5_HAVE_PARALLEL
+ if(facc_type == FACC_MPIO) {
double reduced_t;
double t_max, t_min;
int mpi_size, mpi_rank;
@@ -736,8 +725,9 @@ void perf(p_time *perf_t, double start_t, double end_t)
if(t_min < perf_t->min)
perf_t->min = t_min;
}
+ } else
#endif /*H5_HAVE_PARALLEL*/
- } else {
+ {
perf_t->total += t;
if(t > perf_t->max)
@@ -796,17 +786,17 @@ main(int argc, char **argv)
#endif /*H5_HAVE_PARALLEL*/
if(parse_options(argc, argv) != 0) {
- usage();
- return 0;
+ usage();
+ return 0;
}
- if(facc_type == FACC_MPIO || facc_type == FACC_MPIPOSIX) {
#ifdef H5_HAVE_PARALLEL
+ if(facc_type == FACC_MPIO) {
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &mpi_size);
MPI_Comm_rank(MPI_COMM_WORLD, &mpi_rank);
-#endif /*H5_HAVE_PARALLEL*/
}
+#endif /*H5_HAVE_PARALLEL*/
#ifdef H5_HAVE_PARALLEL
if (facc_type == FACC_DEFAULT || (facc_type != FACC_DEFAULT && MAINPROCESS))
@@ -814,14 +804,10 @@ main(int argc, char **argv)
fprintf(stderr, "\t\tPerformance result of metadata for datasets and attributes\n\n");
fapl = H5Pcreate (H5P_FILE_ACCESS);
- if(facc_type == FACC_MPIO || facc_type == FACC_MPIPOSIX) {
#ifdef H5_HAVE_PARALLEL
- if(facc_type == FACC_DEFAULT || facc_type == FACC_MPIO)
- H5Pset_fapl_mpio(fapl, MPI_COMM_WORLD, MPI_INFO_NULL);
- else if(facc_type == FACC_MPIPOSIX)
- H5Pset_fapl_mpiposix(fapl, MPI_COMM_WORLD, FALSE);
+ if(facc_type == FACC_MPIO)
+ H5Pset_fapl_mpio(fapl, MPI_COMM_WORLD, MPI_INFO_NULL);
#endif /*H5_HAVE_PARALLEL*/
- }
nerrors += create_dspace() < 0 ?1:0;
@@ -837,12 +823,11 @@ main(int argc, char **argv)
h5_cleanup(FILENAME, fapl);
- if(facc_type == FACC_MPIO || facc_type == FACC_MPIPOSIX) {
#ifdef H5_HAVE_PARALLEL
+ if(facc_type == FACC_MPIO)
/* MPI_Finalize must be called AFTER H5close which may use MPI calls */
MPI_Finalize();
#endif /*H5_HAVE_PARALLEL*/
- }
if (nerrors) goto error;
#ifdef H5_HAVE_PARALLEL
diff --git a/perform/pio_engine.c b/perform/pio_engine.c
index d34fe38..82d1bb8 100644
--- a/perform/pio_engine.c
+++ b/perform/pio_engine.c
@@ -37,10 +37,6 @@
# include <mpio.h>
#endif /* !MPI_FILE_NULL */
-#ifdef H5_HAVE_GPFS
-# include <gpfs_fcntl.h>
-#endif /* H5_HAVE_GPFS */
-
#include "pio_perf.h"
#include "pio_timer.h"
@@ -135,19 +131,6 @@ static herr_t do_fopen(parameters *param, char *fname, file_descr *fd /*out*/,
static herr_t do_fclose(iotype iot, file_descr *fd);
static void do_cleanupfile(iotype iot, char *fname);
-/* GPFS-specific functions */
-#ifdef H5_HAVE_GPFS
-static void gpfs_access_range(int handle, off_t start, off_t length, int is_write);
-static void gpfs_free_range(int handle, off_t start, off_t length);
-static void gpfs_clear_file_cache(int handle);
-static void gpfs_cancel_hints(int handle);
-static void gpfs_start_data_shipping(int handle, int num_insts);
-static void gpfs_start_data_ship_map(int handle, int partition_size,
- int agent_count, int *agent_node_num);
-static void gpfs_stop_data_shipping(int handle);
-static void gpfs_invalidate_file_cache(const char *filename);
-#endif /* H5_HAVE_GPFS */
-
/*
* Function: do_pio
* Purpose: PIO Engine where Parallel IO are executed.
@@ -189,22 +172,22 @@ do_pio(parameters param)
iot = param.io_type;
switch (iot) {
- case MPIO:
- fd.mpifd = MPI_FILE_NULL;
- res.timers = pio_time_new(MPI_TIMER);
- break;
- case POSIXIO:
- fd.posixfd = -1;
- res.timers = pio_time_new(MPI_TIMER);
- break;
- case PHDF5:
- fd.h5fd = -1;
- res.timers = pio_time_new(MPI_TIMER);
- break;
- default:
- /* unknown request */
- fprintf(stderr, "Unknown IO type request (%d)\n", iot);
- GOTOERROR(FAIL);
+ case MPIO:
+ fd.mpifd = MPI_FILE_NULL;
+ res.timers = pio_time_new(MPI_TIMER);
+ break;
+ case POSIXIO:
+ fd.posixfd = -1;
+ res.timers = pio_time_new(MPI_TIMER);
+ break;
+ case PHDF5:
+ fd.h5fd = -1;
+ res.timers = pio_time_new(MPI_TIMER);
+ break;
+ default:
+ /* unknown request */
+ fprintf(stderr, "Unknown IO type request (%d)\n", iot);
+ GOTOERROR(FAIL);
}
ndsets = param.num_dsets; /* number of datasets per file */
@@ -379,18 +362,18 @@ done:
/* close any opened files */
/* no remove(fname) because that should have happened normally. */
switch (iot) {
- case POSIXIO:
- if (fd.posixfd != -1)
- hrc = do_fclose(iot, &fd);
- break;
- case MPIO:
- if (fd.mpifd != MPI_FILE_NULL)
- hrc = do_fclose(iot, &fd);
- break;
- case PHDF5:
- if (fd.h5fd != -1)
- hrc = do_fclose(iot, &fd);
- break;
+ case POSIXIO:
+ if (fd.posixfd != -1)
+ hrc = do_fclose(iot, &fd);
+ break;
+ case MPIO:
+ if (fd.mpifd != MPI_FILE_NULL)
+ hrc = do_fclose(iot, &fd);
+ break;
+ case PHDF5:
+ if (fd.h5fd != -1)
+ hrc = do_fclose(iot, &fd);
+ break;
}
/* release generic resources */
@@ -423,15 +406,15 @@ pio_create_filename(iotype iot, const char *base_name, char *fullname, size_t si
HDmemset(fullname, 0, size);
switch (iot) {
- case POSIXIO:
- suffix = ".posix";
- break;
- case MPIO:
- suffix = ".mpio";
- break;
- case PHDF5:
- suffix = ".h5";
- break;
+ case POSIXIO:
+ suffix = ".posix";
+ break;
+ case MPIO:
+ suffix = ".mpio";
+ break;
+ case PHDF5:
+ suffix = ".h5";
+ break;
}
/* First use the environment variable and then try the constant */
@@ -886,60 +869,59 @@ do_write(results *res, file_descr *fd, parameters *parms, long ndsets,
switch (parms->io_type) {
case POSIXIO:
case MPIO:
- /* both posix and mpi io just need dataset offset in file*/
- dset_offset = (ndset - 1) * nbytes;
- break;
+ /* both posix and mpi io just need dataset offset in file*/
+ dset_offset = (ndset - 1) * nbytes;
+ break;
case PHDF5:
- h5dcpl = H5Pcreate(H5P_DATASET_CREATE);
- if (h5dcpl < 0) {
- fprintf(stderr, "HDF5 Property List Create failed\n");
- GOTOERROR(FAIL);
- }
- /* 1D dataspace */
- if (!parms->dim2d){
- /* Make the dataset chunked if asked */
- if(parms->h5_use_chunks) {
- /* Set the chunk size to be the same as the buffer size */
- h5dims[0] = blk_size;
- hrc = H5Pset_chunk(h5dcpl, 1, h5dims);
- if (hrc < 0) {
- fprintf(stderr, "HDF5 Property List Set failed\n");
- GOTOERROR(FAIL);
- } /* end if */
- } /* end if */
- }/* end if */
- else{
- /* 2D dataspace */
- if(parms->h5_use_chunks) {
- /* Set the chunk size to be the same as the block size */
- h5dims[0] = blk_size;
- h5dims[1] = blk_size;
- hrc = H5Pset_chunk(h5dcpl, 2, h5dims);
- if (hrc < 0) {
- fprintf(stderr, "HDF5 Property List Set failed\n");
+ h5dcpl = H5Pcreate(H5P_DATASET_CREATE);
+ if (h5dcpl < 0) {
+ fprintf(stderr, "HDF5 Property List Create failed\n");
GOTOERROR(FAIL);
- } /* end if */
- } /* end if */
- }/* end else */
-
- sprintf(dname, "Dataset_%ld", ndset);
- h5ds_id = H5DCREATE(fd->h5fd, dname, ELMT_H5_TYPE,
- h5dset_space_id, h5dcpl);
+ }
+ /* 1D dataspace */
+ if (!parms->dim2d){
+ /* Make the dataset chunked if asked */
+ if(parms->h5_use_chunks) {
+ /* Set the chunk size to be the same as the buffer size */
+ h5dims[0] = blk_size;
+ hrc = H5Pset_chunk(h5dcpl, 1, h5dims);
+ if (hrc < 0) {
+ fprintf(stderr, "HDF5 Property List Set failed\n");
+ GOTOERROR(FAIL);
+ } /* end if */
+ } /* end if */
+ }/* end if */
+ else{
+ /* 2D dataspace */
+ if(parms->h5_use_chunks) {
+ /* Set the chunk size to be the same as the block size */
+ h5dims[0] = blk_size;
+ h5dims[1] = blk_size;
+ hrc = H5Pset_chunk(h5dcpl, 2, h5dims);
+ if (hrc < 0) {
+ fprintf(stderr, "HDF5 Property List Set failed\n");
+ GOTOERROR(FAIL);
+ } /* end if */
+ } /* end if */
+ }/* end else */
- if (h5ds_id < 0) {
- fprintf(stderr, "HDF5 Dataset Create failed\n");
- GOTOERROR(FAIL);
- }
+ sprintf(dname, "Dataset_%ld", ndset);
+ h5ds_id = H5DCREATE(fd->h5fd, dname, ELMT_H5_TYPE,
+ h5dset_space_id, h5dcpl);
- hrc = H5Pclose(h5dcpl);
- /* verifying the close of the dcpl */
- if (hrc < 0) {
- fprintf(stderr, "HDF5 Property List Close failed\n");
- GOTOERROR(FAIL);
- }
+ if (h5ds_id < 0) {
+ fprintf(stderr, "HDF5 Dataset Create failed\n");
+ GOTOERROR(FAIL);
+ }
- break;
+ hrc = H5Pclose(h5dcpl);
+ /* verifying the close of the dcpl */
+ if (hrc < 0) {
+ fprintf(stderr, "HDF5 Property List Close failed\n");
+ GOTOERROR(FAIL);
+ }
+ break;
}
/* The task is to transfer bytes_count bytes, starting at
@@ -2462,119 +2444,96 @@ done:
do_fopen(parameters *param, char *fname, file_descr *fd /*out*/, int flags)
{
int ret_code = SUCCESS, mrc;
- herr_t hrc;
hid_t acc_tpl = -1; /* file access templates */
- hbool_t use_gpfs = FALSE; /* use GPFS hints */
switch (param->io_type) {
- case POSIXIO:
- if (flags & (PIO_CREATE | PIO_WRITE))
- fd->posixfd = POSIXCREATE(fname);
- else
- fd->posixfd = POSIXOPEN(fname, O_RDONLY);
-
- if (fd->posixfd < 0 ) {
- fprintf(stderr, "POSIX File Open failed(%s)\n", fname);
- GOTOERROR(FAIL);
- }
-
-
- /* The perils of POSIX I/O in a parallel environment. The problem is:
- *
- * - Process n opens a file with truncation and then starts
- * writing to the file.
- * - Process m also opens the file with truncation, but after
- * process n has already started to write to the file. Thus,
- * all of the stuff process n wrote is now lost.
- */
- MPI_Barrier(pio_comm_g);
-
- break;
-
- case MPIO:
- if (flags & (PIO_CREATE | PIO_WRITE)) {
- MPI_File_delete(fname, h5_io_info_g);
- mrc = MPI_File_open(pio_comm_g, fname, MPI_MODE_CREATE | MPI_MODE_RDWR,
- h5_io_info_g, &fd->mpifd);
+ case POSIXIO:
+ if (flags & (PIO_CREATE | PIO_WRITE))
+ fd->posixfd = POSIXCREATE(fname);
+ else
+ fd->posixfd = POSIXOPEN(fname, O_RDONLY);
- if (mrc != MPI_SUCCESS) {
- fprintf(stderr, "MPI File Open failed(%s)\n", fname);
- GOTOERROR(FAIL);
- }
+ if (fd->posixfd < 0 ) {
+ fprintf(stderr, "POSIX File Open failed(%s)\n", fname);
+ GOTOERROR(FAIL);
+ }
- /*since MPI_File_open with MPI_MODE_CREATE does not truncate */
- /*filesize , set size to 0 explicitedly. */
- mrc = MPI_File_set_size(fd->mpifd, (MPI_Offset)0);
- if (mrc != MPI_SUCCESS) {
- fprintf(stderr, "MPI_File_set_size failed\n");
- GOTOERROR(FAIL);
- }
- } else {
- mrc = MPI_File_open(pio_comm_g, fname, MPI_MODE_RDONLY,
- h5_io_info_g, &fd->mpifd);
+ /* The perils of POSIX I/O in a parallel environment. The problem is:
+ *
+ * - Process n opens a file with truncation and then starts
+ * writing to the file.
+ * - Process m also opens the file with truncation, but after
+ * process n has already started to write to the file. Thus,
+ * all of the stuff process n wrote is now lost.
+ */
+ MPI_Barrier(pio_comm_g);
- if (mrc != MPI_SUCCESS) {
- fprintf(stderr, "MPI File Open failed(%s)\n", fname);
- GOTOERROR(FAIL);
- }
- }
+ break;
- break;
+ case MPIO:
+ if (flags & (PIO_CREATE | PIO_WRITE)) {
+ MPI_File_delete(fname, h5_io_info_g);
+ mrc = MPI_File_open(pio_comm_g, fname, MPI_MODE_CREATE | MPI_MODE_RDWR,
+ h5_io_info_g, &fd->mpifd);
+
+ if (mrc != MPI_SUCCESS) {
+ fprintf(stderr, "MPI File Open failed(%s)\n", fname);
+ GOTOERROR(FAIL);
+ }
- case PHDF5:
- acc_tpl = H5Pcreate(H5P_FILE_ACCESS);
- if (acc_tpl < 0) {
- fprintf(stderr, "HDF5 Property List Create failed\n");
- GOTOERROR(FAIL);
- }
+ /*since MPI_File_open with MPI_MODE_CREATE does not truncate */
+ /*filesize , set size to 0 explicitedly. */
+ mrc = MPI_File_set_size(fd->mpifd, (MPI_Offset)0);
+ if (mrc != MPI_SUCCESS) {
+ fprintf(stderr, "MPI_File_set_size failed\n");
+ GOTOERROR(FAIL);
+ }
+ } else {
+ mrc = MPI_File_open(pio_comm_g, fname, MPI_MODE_RDONLY, h5_io_info_g, &fd->mpifd);
+ if (mrc != MPI_SUCCESS) {
+ fprintf(stderr, "MPI File Open failed(%s)\n", fname);
+ GOTOERROR(FAIL);
+ }
+ }
- /* Use the appropriate VFL driver */
- if(param->h5_use_mpi_posix) {
- /* Set the file driver to the MPI-posix driver */
- hrc = H5Pset_fapl_mpiposix(acc_tpl, pio_comm_g, use_gpfs);
- if (hrc < 0) {
- fprintf(stderr, "HDF5 Property List Set failed\n");
- GOTOERROR(FAIL);
- }
- } /* end if */
- else {
- /* Set the file driver to the MPI-I/O driver */
- hrc = H5Pset_fapl_mpio(acc_tpl, pio_comm_g, h5_io_info_g);
- if (hrc < 0) {
- fprintf(stderr, "HDF5 Property List Set failed\n");
- GOTOERROR(FAIL);
- }
- } /* end else */
+ break;
- /* Set the alignment of objects in HDF5 file */
- hrc = H5Pset_alignment(acc_tpl, param->h5_thresh, param->h5_align);
- if (hrc < 0) {
- fprintf(stderr, "HDF5 Property List Set failed\n");
- GOTOERROR(FAIL);
- }
+ case PHDF5:
+ if ((acc_tpl = H5Pcreate(H5P_FILE_ACCESS)) < 0) {
+ fprintf(stderr, "HDF5 Property List Create failed\n");
+ GOTOERROR(FAIL);
+ }
- /* create the parallel file */
- if (flags & (PIO_CREATE | PIO_WRITE)) {
- fd->h5fd = H5Fcreate(fname, H5F_ACC_TRUNC, H5P_DEFAULT, acc_tpl);
- } else {
- fd->h5fd = H5Fopen(fname, H5F_ACC_RDONLY, acc_tpl);
- }
+ /* Set the file driver to the MPI-IO driver */
+ if (H5Pset_fapl_mpio(acc_tpl, pio_comm_g, h5_io_info_g) < 0) {
+ fprintf(stderr, "HDF5 Property List Set failed\n");
+ GOTOERROR(FAIL);
+ }
- hrc = H5Pclose(acc_tpl);
+ /* Set the alignment of objects in HDF5 file */
+ if (H5Pset_alignment(acc_tpl, param->h5_thresh, param->h5_align) < 0) {
+ fprintf(stderr, "HDF5 Property List Set failed\n");
+ GOTOERROR(FAIL);
+ }
- if (fd->h5fd < 0) {
- fprintf(stderr, "HDF5 File Create failed(%s)\n", fname);
- GOTOERROR(FAIL);
- }
+ /* create the parallel file */
+ if (flags & (PIO_CREATE | PIO_WRITE))
+ fd->h5fd = H5Fcreate(fname, H5F_ACC_TRUNC, H5P_DEFAULT, acc_tpl);
+ else
+ fd->h5fd = H5Fopen(fname, H5F_ACC_RDONLY, acc_tpl);
+ if (fd->h5fd < 0) {
+ fprintf(stderr, "HDF5 File Create failed(%s)\n", fname);
+ GOTOERROR(FAIL);
+ }
- /* verifying the close of the acc_tpl */
- if (hrc < 0) {
- fprintf(stderr, "HDF5 Property List Close failed\n");
- GOTOERROR(FAIL);
- }
+ /* verifying the close of the acc_tpl */
+ if (H5Pclose(acc_tpl) < 0) {
+ fprintf(stderr, "HDF5 Property List Close failed\n");
+ GOTOERROR(FAIL);
+ }
- break;
+ break;
}
done:
@@ -2665,449 +2624,6 @@ do_cleanupfile(iotype iot, char *fname)
}
}
-#ifdef H5_HAVE_GPFS
-
-/* Descriptions here come from the IBM GPFS Manual */
-
-/*
- * Function: gpfs_access_range
- * Purpose: Declares an access range within a file for an
- * application.
- *
- * The application will access file offsets within the given
- * range, and will not access offsets outside the range.
- * Violating this hint may produce worse performance than if
- * no hint was specified.
- *
- * This hint is useful in situations where a file is
- * partitioned coarsely among several nodes. If the ranges
- * do not overlap, each node can specify which range of the
- * file it will access, with a performance improvement in
- * some cases, such as for sequential writing within a
- * range.
- *
- * Subsequent GPFS_ACCESS_RANGE hints will replace a hint
- * passed earlier.
- *
- * START - The start of the access range offset, in
- * bytes, from the beginning of the file
- * LENGTH - Length of the access range. 0 indicates to
- * the end of the file
- * IS_WRITE - 0 indicates READ access, 1 indicates WRITE access
- * Return: Nothing
- * Programmer: Bill Wendling, 03. June 2002
- * Modifications:
- */
- static void
-gpfs_access_range(int handle, off_t start, off_t length, int is_write)
-{
- struct {
- gpfsFcntlHeader_t hdr;
- gpfsAccessRange_t access;
- } access_range;
-
- access_range.hdr.totalLength = sizeof(access_range);
- access_range.hdr.fcntlVersion = GPFS_FCNTL_CURRENT_VERSION;
- access_range.hdr.fcntlReserved = 0;
- access_range.access.structLen = sizeof(gpfsAccessRange_t);
- access_range.access.structType = GPFS_ACCESS_RANGE;
- access_range.access.start = start;
- access_range.access.length = length;
- access_range.access.isWrite = is_write;
-
- if (gpfs_fcntl(handle, &access_range) != 0) {
- fprintf(stderr,
- "gpfs_fcntl DS start directive failed. errno=%d errorOffset=%d\n",
- errno, access_range.hdr.errorOffset);
- exit(EXIT_FAILURE);
- }
-}
-
-/*
- * Function: gpfs_free_range
- * Purpose: Undeclares an access range within a file for an
- * application.
- *
- * The application will no longer access file offsets within
- * the given range. GPFS flushes the data at the file
- * offsets and removes it from the cache.
- *
- * Multi-node applications that have finished one phase of
- * their computation may wish to use this hint before the
- * file is accessed in a conflicting mode from another node
- * in a later phase. The potential performance benefit is
- * that GPFS can avoid later synchronous cache consistency
- * operations.
- *
- * START - The start of the access range offset, in
- * bytes from the beginning of the file.
- * LENGTH - Length of the access range. 0 indicates to
- * the end of the file.
- * Return: Nothing
- * Programmer: Bill Wendling, 03. June 2002
- * Modifications:
- */
- static void
-gpfs_free_range(int handle, off_t start, off_t length)
-{
- struct {
- gpfsFcntlHeader_t hdr;
- gpfsFreeRange_t range;
- } free_range;
-
- /* Issue the invalidate hint */
- free_range.hdr.totalLength = sizeof(free_range);
- free_range.hdr.fcntlVersion = GPFS_FCNTL_CURRENT_VERSION;
- free_range.hdr.fcntlReserved = 0;
- free_range.range.structLen = sizeof(gpfsFreeRange_t);
- free_range.range.structType = GPFS_FREE_RANGE;
- free_range.range.start = start;
- free_range.range.length = length;
-
- if (gpfs_fcntl(handle, &free_range) != 0) {
- fprintf(stderr,
- "gpfs_fcntl free range failed for range %d:%d. errno=%d errorOffset=%d\n",
- start, length, errno, free_range.hdr.errorOffset);
- exit(EXIT_FAILURE);
- }
-}
-
-/*
- * Function: gpfs_clear_file_cache
- * Purpose: Indicates file access in the near future is not expected.
- *
- * The application does not expect to make any further
- * accesses to the file in the near future, so GPFS removes
- * any data or metadata pertaining to the file from its
- * cache.
- *
- * Multi-node applications that have finished one phase of
- * their computation may wish to use this hint before the
- * file is accessed in a conflicting mode from another node
- * in a later phase. The potential performance benefit is
- * that GPFS can avoid later synchronous cache consistency
- * operations.
- * Return: Nothing
- * Programmer: Bill Wendling, 03. June 2002
- * Modifications:
- */
- static void
-gpfs_clear_file_cache(int handle)
-{
- struct {
- gpfsFcntlHeader_t hdr;
- gpfsClearFileCache_t clear;
- } clear_cache;
-
- clear_cache.hdr.totalLength = sizeof(clear_cache);
- clear_cache.hdr.fcntlVersion = GPFS_FCNTL_CURRENT_VERSION;
- clear_cache.hdr.fcntlReserved = 0;
- clear_cache.clear.structLen = sizeof(gpfsClearFileCache_t);
- clear_cache.clear.structType = GPFS_CLEAR_FILE_CACHE;
-
- if (gpfs_fcntl(handle, &clear_cache) != 0) {
- fprintf(stderr,
- "gpfs_fcntl clear file cache directive failed. errno=%d errorOffset=%d\n",
- errno, clear_cache.hdr.errorOffset);
- exit(EXIT_FAILURE);
- }
-}
-
-/*
- * Function: gpfs_cancel_hints
- * Purpose: Indicates to remove any hints against the open file
- * handle.
- *
- * GPFS removes any hints that may have been issued against
- * this open file handle:
- *
- * - The hint status of the file is restored ot what it
- * would have been immediately after being opened, but
- * does not affect the contents of the GPFS file
- * cache. Cancelling an earlier hint that resulted in
- * data being removed from the GPFS file cache does
- * not bring that data back int othe cache; data
- * re-enters the cache only pon access by the
- * application or by user-driven or automatic
- * prefetching.
- * - Only the GPFS_MULTIPLE_ACCESS_RANGE hint has a
- * state that might be removed by the
- * GPFS_CANCEL_HINTS directive.
- * Return: Nothing
- * Programmer: Bill Wendling, 03. June 2002
- * Modifications:
- */
- static void
-gpfs_cancel_hints(int handle)
-{
- struct {
- gpfsFcntlHeader_t hdr;
- gpfsCancelHints_t cancel;
- } cancel_hints;
-
- cancel_hints.hdr.totalLength = sizeof(cancel_hints);
- cancel_hints.hdr.fcntlVersion = GPFS_FCNTL_CURRENT_VERSION;
- cancel_hints.hdr.fcntlReserved = 0;
- cancel_hints.cancel.structLen = sizeof(gpfsCancelHints_t);
- cancel_hints.cancel.structType = GPFS_CANCEL_HINTS;
-
- if (gpfs_fcntl(handle, &cancel_hints) != 0) {
- fprintf(stderr,
- "gpfs_fcntl cancel hints directive failed. errno=%d errorOffset=%d\n",
- errno, cancel_hints.hdr.errorOffset);
- exit(EXIT_FAILURE);
- }
-}
-
-/*
- * Function: gpfs_start_data_shipping
- * Purpose: Initiates data shipping mode.
- *
- * Once all participating threads have issued this directive
- * for a file, GPFS enters a mode where it logically
- * partitions the blocks of the file among a group of agent
- * nodes. The agents are those nodes on which one or more
- * threads have issued the GPFS_DATA_SHIP_START directive.
- * Each thread that has issued a GPFS_DATA_SHIP_START
- * directive and the associated agent nodes are referred to
- * as the data shipping collective.
- *
- * The second parameter is the total number of open
- * instances on all nodes that will be operating on the
- * file. Must be called for every such instance with the
- * same value of NUM_INSTS.
- *
- * NUM_INSTS - The number of open file instances, on all
- * nodes, collaborating to operate on the file
- * Return: Nothing
- * Programmer: Bill Wendling, 28. May 2002
- * Modifications:
- */
- static void
-gpfs_start_data_shipping(int handle, int num_insts)
-{
- struct {
- gpfsFcntlHeader_t hdr;
- gpfsDataShipStart_t start;
- } ds_start;
-
- ds_start.hdr.totalLength = sizeof(ds_start);
- ds_start.hdr.fcntlVersion = GPFS_FCNTL_CURRENT_VERSION;
- ds_start.hdr.fcntlReserved = 0;
- ds_start.start.structLen = sizeof(gpfsDataShipStart_t);
- ds_start.start.structType = GPFS_DATA_SHIP_START;
- ds_start.start.numInstances = num_insts;
- ds_start.start.reserved = 0;
-
- if (gpfs_fcntl(handle, &ds_start) != 0) {
- fprintf(stderr,
- "gpfs_fcntl DS start directive failed. errno=%d errorOffset=%d\n",
- errno, ds_start.hdr.errorOffset);
- exit(EXIT_FAILURE);
- }
-}
-
-/*
- * Function: gpfs_start_data_ship_map
- * Purpose: Indicates which agent nodes are to be used for data
- * shipping. GPFS recognizes which agent nodes to use for
- * data shipping.
- *
- * PARTITION_SIZE - The number of contiguous bytes per
- * server. This value must be a
- * multiple of the number of bytes in a
- * single file system block
- * AGENT_COUNT - The number of entries in the
- * agentNodeNumber array
- * AGENT_NODE_NUM - The data ship agent node numbers as
- * listed in the SDT or the global ODM
- *
- * Return: Nothing
- * Programmer: Bill Wendling, 10. Jul 2002
- * Modifications:
- */
- static void
-gpfs_start_data_ship_map(int handle, int partition_size, int agent_count,
- int *agent_node_num)
-{
- int i;
- struct {
- gpfsFcntlHeader_t hdr;
- gpfsDataShipMap_t map;
- } ds_map;
-
- ds_map.hdr.totalLength = sizeof(ds_map);
- ds_map.hdr.fcntlVersion = GPFS_FCNTL_CURRENT_VERSION;
- ds_map.hdr.fcntlReserved = 0;
- ds_map.map.structLen = sizeof(gpfsDataShipMap_t);
- ds_map.map.structType = GPFS_DATA_SHIP_MAP;
- ds_map.map.partitionSize = partition_size;
- ds_map.map.agentCount = agent_count;
-
- for (i = 0; i < agent_count; ++i)
- ds_map.map.agentNodeNumber[i] = agent_node_num[i];
-
- if (gpfs_fcntl(handle, &ds_map) != 0) {
- fprintf(stderr,
- "gpfs_fcntl DS map directive failed. errno=%d errorOffset=%d\n",
- errno, ds_map.hdr.errorOffset);
- exit(EXIT_FAILURE);
- }
-}
-
-/*
- * Function: gpfs_stop_data_shipping
- * Purpose: Takes a file out of the data shipping mode.
- *
- * - GPFS waits for all threads that issued the
- * GPFS_DATA_SHIP_START directive to issue this directive,
- * then flushes the dirty file data to disk.
- *
- * - While a gpfs_cntl() call is blocked for other threads,
- * the call can be interrupted by any signal. If a signal
- * is delivered to any of the waiting calls, all waiting
- * calls on every node will be interrupted and will return
- * EINTR. GPFS will not cancel data shipping mode if such
- * a signal occurs. It is the responsibility of the
- * application to mask off any signals that might normally
- * occur while waiting for another node in the data
- * shipping collective. Several libraries use SIGALRM; the
- * thread that makes the gpfs_fcntl() call should use
- * sigthreadmask to mask off delivery of this signal while
- * inside the call.
- * Return: Nothing
- * Programmer: Bill Wendling, 28. May 2002
- * Modifications:
- */
- static void
-gpfs_stop_data_shipping(int handle)
-{
- struct {
- gpfsFcntlHeader_t hdr;
- gpfsDataShipStop_t stop;
- } ds_stop;
-
- ds_stop.hdr.totalLength = sizeof(ds_stop);
- ds_stop.hdr.fcntlVersion = GPFS_FCNTL_CURRENT_VERSION;
- ds_stop.hdr.fcntlReserved = 0;
- ds_stop.stop.structLen = sizeof(ds_stop.stop);
- ds_stop.stop.structType = GPFS_DATA_SHIP_STOP;
-
- if (gpfs_fcntl(handle, &ds_stop) != 0)
- fprintf(stderr,
- "gpfs_fcntl DS stop directive failed. errno=%d errorOffset=%d\n",
- errno, ds_stop.hdr.errorOffset);
-}
-
-/*
- * Function: gpfs_invalidate_file_cache
- * Purpose: Invalidate all cached data held on behalf of a file on
- * this node.
- * Return: Nothing
- * Programmer: Bill Wendling, 03. June 2002
- * Modifications:
- */
- static void
-gpfs_invalidate_file_cache(const char *filename)
-{
- int handle;
- struct {
- gpfsFcntlHeader_t hdr;
- gpfsClearFileCache_t inv;
- } inv_cache_hint;
-
- /* Open the file. If the open fails, the file cannot be cached. */
- handle = open(filename, O_RDONLY, 0);
-
- if (handle == -1)
- return;
-
- /* Issue the invalidate hint */
- inv_cache_hint.hdr.totalLength = sizeof(inv_cache_hint);
- inv_cache_hint.hdr.fcntlVersion = GPFS_FCNTL_CURRENT_VERSION;
- inv_cache_hint.hdr.fcntlReserved = 0;
- inv_cache_hint.inv.structLen = sizeof(gpfsClearFileCache_t);
- inv_cache_hint.inv.structType = GPFS_CLEAR_FILE_CACHE;
-
- if (gpfs_fcntl(handle, &inv_cache_hint) != 0) {
- fprintf(stderr,
- "gpfs_fcntl clear cache hint failed for file '%s'.",
- filename);
- fprintf(stderr, " errno=%d errorOffset=%d\n",
- errno, inv_cache_hint.hdr.errorOffset);
- exit(EXIT_FAILURE);
- }
-
- /* Close the file */
- if (close(handle) == -1) {
- fprintf(stderr,
- "could not close file '%s' after flushing file cache, ",
- filename);
- fprintf(stderr, "errno=%d\n", errno);
- exit(EXIT_FAILURE);
- }
-}
-
-#else
-
-/* turn the stubs off since some compilers are warning they are not used */
-#if 0
-/* H5_HAVE_GPFS isn't defined...stub functions */
-
- static void
-gpfs_access_range(int UNUSED handle, off_t UNUSED start, off_t UNUSED length,
- int UNUSED is_write)
-{
- return;
-}
-
- static void
-gpfs_free_range(int UNUSED handle, off_t UNUSED start, off_t UNUSED length)
-{
- return;
-}
-
- static void
-gpfs_clear_file_cache(int UNUSED handle)
-{
- return;
-}
-
- static void
-gpfs_cancel_hints(int UNUSED handle)
-{
- return;
-}
-
- static void
-gpfs_start_data_shipping(int UNUSED handle, int UNUSED num_insts)
-{
- return;
-}
-
- static void
-gpfs_stop_data_shipping(int UNUSED handle)
-{
- return;
-}
-
- static void
-gpfs_start_data_ship_map(int UNUSED handle, int UNUSED partition_size,
- int UNUSED agent_count, int UNUSED *agent_node_num)
-{
- return;
-}
-
- static void
-gpfs_invalidate_file_cache(const char UNUSED *filename)
-{
- return;
-}
-
-#endif /* 0 */
-
-#endif /* H5_HAVE_GPFS */
-
#ifdef TIME_MPI
/* instrument the MPI_File_wrirte_xxx and read_xxx calls to measure
* pure time spent in MPI_File code.
diff --git a/perform/pio_perf.c b/perform/pio_perf.c
index a47754b..cf41cbe 100644
--- a/perform/pio_perf.c
+++ b/perform/pio_perf.c
@@ -216,14 +216,6 @@ static struct long_options l_opts[] = {
{ "min-xfe", require_arg, 'x' },
{ "min-xf", require_arg, 'x' },
{ "min-x", require_arg, 'x' },
- { "mpi-posix", no_arg, 'm' },
- { "mpi-posi", no_arg, 'm' },
- { "mpi-pos", no_arg, 'm' },
- { "mpi-po", no_arg, 'm' },
- { "mpi-p", no_arg, 'm' },
- { "mpi-", no_arg, 'm' },
- { "mpi", no_arg, 'm' },
- { "mp", no_arg, 'm' },
{ "num-bytes", require_arg, 'e' },
{ "num-byte", require_arg, 'e' },
{ "num-byt", require_arg, 'e' },
@@ -294,7 +286,6 @@ struct options {
off_t h5_threshold; /* threshold for alignment in HDF5 file */
int h5_use_chunks; /* Make HDF5 dataset chunked */
int h5_write_only; /* Perform the write tests only */
- unsigned h5_use_mpi_posix; /* Use MPI-posix VFD for HDF5 I/O (instead of MPI-I/O VFD) */
int verify; /* Verify data correctness */
};
@@ -444,7 +435,6 @@ run_test_loop(struct options *opts)
parms.h5_thresh = opts->h5_threshold;
parms.h5_use_chunks = opts->h5_use_chunks;
parms.h5_write_only = opts->h5_write_only;
- parms.h5_use_mpi_posix = opts->h5_use_mpi_posix;
parms.verify = opts->verify;
/* start with max_num_procs and decrement it by half for each loop. */
@@ -562,18 +552,15 @@ run_test(iotype iot, parameters parms, struct options *opts)
output_report("IO API = ");
switch (iot) {
- case POSIXIO:
- output_report("POSIX\n");
- break;
- case MPIO:
- output_report("MPIO\n");
- break;
- case PHDF5:
- if(parms.h5_use_mpi_posix)
- output_report("PHDF5 (w/MPI-posix driver)\n");
- else
- output_report("PHDF5 (w/MPI-I/O driver)\n");
- break;
+ case POSIXIO:
+ output_report("POSIX\n");
+ break;
+ case MPIO:
+ output_report("MPIO\n");
+ break;
+ case PHDF5:
+ output_report("PHDF5 (w/MPI-IO driver)\n");
+ break;
}
MPI_Comm_size(pio_comm_g, &comm_size);
@@ -1232,11 +1219,7 @@ report_parameters(struct options *opts)
else
HDfprintf(output, "1D\n");
- HDfprintf(output, "rank %d: VFL used for HDF5 I/O=", rank);
- if(opts->h5_use_mpi_posix)
- HDfprintf(output, "MPI-posix driver\n");
- else
- HDfprintf(output, "MPI-I/O driver\n");
+ HDfprintf(output, "rank %d: VFL used for HDF5 I/O=%s\n", rank, "MPI-IO driver");
HDfprintf(output, "rank %d: Data storage method in HDF5=", rank);
if(opts->h5_use_chunks)
@@ -1295,7 +1278,6 @@ parse_command_line(int argc, char *argv[])
cl_opts->h5_threshold = 1; /* No threshold for aligning HDF5 objects by default */
cl_opts->h5_use_chunks = FALSE; /* Don't chunk the HDF5 dataset by default */
cl_opts->h5_write_only = FALSE; /* Do both read and write by default */
- cl_opts->h5_use_mpi_posix = FALSE; /* Don't use MPI-posix VFD for HDF5 I/O by default */
cl_opts->verify = FALSE; /* No Verify data correctness by default */
while ((opt = get_option(argc, (const char **)argv, s_opts, l_opts)) != EOF) {
@@ -1428,10 +1410,6 @@ parse_command_line(int argc, char *argv[])
case 'I':
cl_opts->interleaved = 1;
break;
- case 'm':
- /* Turn on MPI-posix VFL driver for HDF5 I/O */
- cl_opts->h5_use_mpi_posix = TRUE;
- break;
case 'o':
cl_opts->output_file = opt_arg;
break;
@@ -1604,8 +1582,6 @@ usage(const char *prog)
printf(" -I, --interleaved Interleaved access pattern\n");
printf(" (see below for example)\n");
printf(" [default: Contiguous access pattern]\n");
- printf(" -m, --mpi-posix Use MPI-posix driver for HDF5 I/O\n");
- printf(" [default: use MPI-I/O driver]\n");
printf(" -o F, --output=F Output raw data into file F [default: none]\n");
printf(" -p N, --min-num-processes=N Minimum number of processes to use [default: 1]\n");
printf(" -P N, --max-num-processes=N Maximum number of processes to use\n");
diff --git a/perform/pio_perf.h b/perform/pio_perf.h
index 094b31d..3295e2b 100644
--- a/perform/pio_perf.h
+++ b/perform/pio_perf.h
@@ -54,7 +54,6 @@ typedef struct parameters_ {
hsize_t h5_thresh; /* HDF5 object alignment threshold */
int h5_use_chunks; /* Make HDF5 dataset chunked */
int h5_write_only; /* Perform the write tests only */
- unsigned h5_use_mpi_posix; /* Use MPI-posix VFD for HDF5 I/O (instead of MPI-I/O VFD) */
int verify; /* Verify data correctness */
} parameters;
diff --git a/perform/sio_engine.c b/perform/sio_engine.c
index 0ab5c3e..dec2f98 100644
--- a/perform/sio_engine.c
+++ b/perform/sio_engine.c
@@ -28,10 +28,6 @@
#include "hdf5.h"
-#ifdef H5_HAVE_GPFS
-# include <gpfs_fcntl.h>
-#endif /* H5_HAVE_GPFS */
-
#include "sio_perf.h"
#include "sio_timer.h"
@@ -94,19 +90,6 @@ hid_t set_vfd(parameters *param);
static herr_t do_fclose(iotype iot, file_descr *fd);
static void do_cleanupfile(iotype iot, char *fname);
-/* GPFS-specific functions */
-#ifdef H5_HAVE_GPFS
-static void gpfs_access_range(int handle, off_t start, off_t length, int is_write);
-static void gpfs_free_range(int handle, off_t start, off_t length);
-static void gpfs_clear_file_cache(int handle);
-static void gpfs_cancel_hints(int handle);
-static void gpfs_start_data_shipping(int handle, int num_insts);
-static void gpfs_start_data_ship_map(int handle, int partition_size,
- int agent_count, int *agent_node_num);
-static void gpfs_stop_data_shipping(int handle);
-static void gpfs_invalidate_file_cache(const char *filename);
-#endif /* H5_HAVE_GPFS */
-
/* global variables */
static off_t offset[MAX_DIMS]; /* dataset size in bytes */
static size_t buf_offset[MAX_DIMS]; /* dataset size in bytes */
@@ -1325,447 +1308,3 @@ do_cleanupfile(iotype iot, char *filename)
}
}
-#ifdef H5_HAVE_GPFS
-
-/* Descriptions here come from the IBM GPFS Manual */
-
-/*
- * Function: gpfs_access_range
- * Purpose: Declares an access range within a file for an
- * application.
- *
- * The application will access file offsets within the given
- * range, and will not access offsets outside the range.
- * Violating this hint may produce worse performance than if
- * no hint was specified.
- *
- * This hint is useful in situations where a file is
- * partitioned coarsely among several nodes. If the ranges
- * do not overlap, each node can specify which range of the
- * file it will access, with a performance improvement in
- * some cases, such as for sequential writing within a
- * range.
- *
- * Subsequent GPFS_ACCESS_RANGE hints will replace a hint
- * passed earlier.
- *
- * START - The start of the access range offset, in
- * bytes, from the beginning of the file
- * LENGTH - Length of the access range. 0 indicates to
- * the end of the file
- * IS_WRITE - 0 indicates READ access, 1 indicates WRITE access
- * Return: Nothing
- * Programmer: Bill Wendling, 03. June 2002
- * Modifications:
- */
- static void
-gpfs_access_range(int handle, off_t start, off_t length, int is_write)
-{
- struct {
- gpfsFcntlHeader_t hdr;
- gpfsAccessRange_t access;
- } access_range;
-
- access_range.hdr.totalLength = sizeof(access_range);
- access_range.hdr.fcntlVersion = GPFS_FCNTL_CURRENT_VERSION;
- access_range.hdr.fcntlReserved = 0;
- access_range.access.structLen = sizeof(gpfsAccessRange_t);
- access_range.access.structType = GPFS_ACCESS_RANGE;
- access_range.access.start = start;
- access_range.access.length = length;
- access_range.access.isWrite = is_write;
-
- if (gpfs_fcntl(handle, &access_range) != 0) {
- fprintf(stderr,
- "gpfs_fcntl DS start directive failed. errno=%d errorOffset=%d\n",
- errno, access_range.hdr.errorOffset);
- exit(EXIT_FAILURE);
- }
-}
-
-/*
- * Function: gpfs_free_range
- * Purpose: Undeclares an access range within a file for an
- * application.
- *
- * The application will no longer access file offsets within
- * the given range. GPFS flushes the data at the file
- * offsets and removes it from the cache.
- *
- * Multi-node applications that have finished one phase of
- * their computation may wish to use this hint before the
- * file is accessed in a conflicting mode from another node
- * in a later phase. The potential performance benefit is
- * that GPFS can avoid later synchronous cache consistency
- * operations.
- *
- * START - The start of the access range offset, in
- * bytes from the beginning of the file.
- * LENGTH - Length of the access range. 0 indicates to
- * the end of the file.
- * Return: Nothing
- * Programmer: Bill Wendling, 03. June 2002
- * Modifications:
- */
- static void
-gpfs_free_range(int handle, off_t start, off_t length)
-{
- struct {
- gpfsFcntlHeader_t hdr;
- gpfsFreeRange_t range;
- } free_range;
-
- /* Issue the invalidate hint */
- free_range.hdr.totalLength = sizeof(free_range);
- free_range.hdr.fcntlVersion = GPFS_FCNTL_CURRENT_VERSION;
- free_range.hdr.fcntlReserved = 0;
- free_range.range.structLen = sizeof(gpfsFreeRange_t);
- free_range.range.structType = GPFS_FREE_RANGE;
- free_range.range.start = start;
- free_range.range.length = length;
-
- if (gpfs_fcntl(handle, &free_range) != 0) {
- fprintf(stderr,
- "gpfs_fcntl free range failed for range %d:%d. errno=%d errorOffset=%d\n",
- start, length, errno, free_range.hdr.errorOffset);
- exit(EXIT_FAILURE);
- }
-}
-
-/*
- * Function: gpfs_clear_file_cache
- * Purpose: Indicates file access in the near future is not expected.
- *
- * The application does not expect to make any further
- * accesses to the file in the near future, so GPFS removes
- * any data or metadata pertaining to the file from its
- * cache.
- *
- * Multi-node applications that have finished one phase of
- * their computation may wish to use this hint before the
- * file is accessed in a conflicting mode from another node
- * in a later phase. The potential performance benefit is
- * that GPFS can avoid later synchronous cache consistency
- * operations.
- * Return: Nothing
- * Programmer: Bill Wendling, 03. June 2002
- * Modifications:
- */
- static void
-gpfs_clear_file_cache(int handle)
-{
- struct {
- gpfsFcntlHeader_t hdr;
- gpfsClearFileCache_t clear;
- } clear_cache;
-
- clear_cache.hdr.totalLength = sizeof(clear_cache);
- clear_cache.hdr.fcntlVersion = GPFS_FCNTL_CURRENT_VERSION;
- clear_cache.hdr.fcntlReserved = 0;
- clear_cache.clear.structLen = sizeof(gpfsClearFileCache_t);
- clear_cache.clear.structType = GPFS_CLEAR_FILE_CACHE;
-
- if (gpfs_fcntl(handle, &clear_cache) != 0) {
- fprintf(stderr,
- "gpfs_fcntl clear file cache directive failed. errno=%d errorOffset=%d\n",
- errno, clear_cache.hdr.errorOffset);
- exit(EXIT_FAILURE);
- }
-}
-
-/*
- * Function: gpfs_cancel_hints
- * Purpose: Indicates to remove any hints against the open file
- * handle.
- *
- * GPFS removes any hints that may have been issued against
- * this open file handle:
- *
- * - The hint status of the file is restored ot what it
- * would have been immediately after being opened, but
- * does not affect the contents of the GPFS file
- * cache. Cancelling an earlier hint that resulted in
- * data being removed from the GPFS file cache does
- * not bring that data back int othe cache; data
- * re-enters the cache only pon access by the
- * application or by user-driven or automatic
- * prefetching.
- * - Only the GPFS_MULTIPLE_ACCESS_RANGE hint has a
- * state that might be removed by the
- * GPFS_CANCEL_HINTS directive.
- * Return: Nothing
- * Programmer: Bill Wendling, 03. June 2002
- * Modifications:
- */
- static void
-gpfs_cancel_hints(int handle)
-{
- struct {
- gpfsFcntlHeader_t hdr;
- gpfsCancelHints_t cancel;
- } cancel_hints;
-
- cancel_hints.hdr.totalLength = sizeof(cancel_hints);
- cancel_hints.hdr.fcntlVersion = GPFS_FCNTL_CURRENT_VERSION;
- cancel_hints.hdr.fcntlReserved = 0;
- cancel_hints.cancel.structLen = sizeof(gpfsCancelHints_t);
- cancel_hints.cancel.structType = GPFS_CANCEL_HINTS;
-
- if (gpfs_fcntl(handle, &cancel_hints) != 0) {
- fprintf(stderr,
- "gpfs_fcntl cancel hints directive failed. errno=%d errorOffset=%d\n",
- errno, cancel_hints.hdr.errorOffset);
- exit(EXIT_FAILURE);
- }
-}
-
-/*
- * Function: gpfs_start_data_shipping
- * Purpose: Initiates data shipping mode.
- *
- * Once all participating threads have issued this directive
- * for a file, GPFS enters a mode where it logically
- * partitions the blocks of the file among a group of agent
- * nodes. The agents are those nodes on which one or more
- * threads have issued the GPFS_DATA_SHIP_START directive.
- * Each thread that has issued a GPFS_DATA_SHIP_START
- * directive and the associated agent nodes are referred to
- * as the data shipping collective.
- *
- * The second parameter is the total number of open
- * instances on all nodes that will be operating on the
- * file. Must be called for every such instance with the
- * same value of NUM_INSTS.
- *
- * NUM_INSTS - The number of open file instances, on all
- * nodes, collaborating to operate on the file
- * Return: Nothing
- * Programmer: Bill Wendling, 28. May 2002
- * Modifications:
- */
- static void
-gpfs_start_data_shipping(int handle, int num_insts)
-{
- struct {
- gpfsFcntlHeader_t hdr;
- gpfsDataShipStart_t start;
- } ds_start;
-
- ds_start.hdr.totalLength = sizeof(ds_start);
- ds_start.hdr.fcntlVersion = GPFS_FCNTL_CURRENT_VERSION;
- ds_start.hdr.fcntlReserved = 0;
- ds_start.start.structLen = sizeof(gpfsDataShipStart_t);
- ds_start.start.structType = GPFS_DATA_SHIP_START;
- ds_start.start.numInstances = num_insts;
- ds_start.start.reserved = 0;
-
- if (gpfs_fcntl(handle, &ds_start) != 0) {
- fprintf(stderr,
- "gpfs_fcntl DS start directive failed. errno=%d errorOffset=%d\n",
- errno, ds_start.hdr.errorOffset);
- exit(EXIT_FAILURE);
- }
-}
-
-/*
- * Function: gpfs_start_data_ship_map
- * Purpose: Indicates which agent nodes are to be used for data
- * shipping. GPFS recognizes which agent nodes to use for
- * data shipping.
- *
- * PARTITION_SIZE - The number of contiguous bytes per
- * server. This value must be a
- * multiple of the number of bytes in a
- * single file system block
- * AGENT_COUNT - The number of entries in the
- * agentNodeNumber array
- * AGENT_NODE_NUM - The data ship agent node numbers as
- * listed in the SDT or the global ODM
- *
- * Return: Nothing
- * Programmer: Bill Wendling, 10. Jul 2002
- * Modifications:
- */
- static void
-gpfs_start_data_ship_map(int handle, int partition_size, int agent_count,
- int *agent_node_num)
-{
- int i;
- struct {
- gpfsFcntlHeader_t hdr;
- gpfsDataShipMap_t map;
- } ds_map;
-
- ds_map.hdr.totalLength = sizeof(ds_map);
- ds_map.hdr.fcntlVersion = GPFS_FCNTL_CURRENT_VERSION;
- ds_map.hdr.fcntlReserved = 0;
- ds_map.map.structLen = sizeof(gpfsDataShipMap_t);
- ds_map.map.structType = GPFS_DATA_SHIP_MAP;
- ds_map.map.partitionSize = partition_size;
- ds_map.map.agentCount = agent_count;
-
- for (i = 0; i < agent_count; ++i)
- ds_map.map.agentNodeNumber[i] = agent_node_num[i];
-
- if (gpfs_fcntl(handle, &ds_map) != 0) {
- fprintf(stderr,
- "gpfs_fcntl DS map directive failed. errno=%d errorOffset=%d\n",
- errno, ds_map.hdr.errorOffset);
- exit(EXIT_FAILURE);
- }
-}
-
-/*
- * Function: gpfs_stop_data_shipping
- * Purpose: Takes a file out of the data shipping mode.
- *
- * - GPFS waits for all threads that issued the
- * GPFS_DATA_SHIP_START directive to issue this directive,
- * then flushes the dirty file data to disk.
- *
- * - While a gpfs_cntl() call is blocked for other threads,
- * the call can be interrupted by any signal. If a signal
- * is delivered to any of the waiting calls, all waiting
- * calls on every node will be interrupted and will return
- * EINTR. GPFS will not cancel data shipping mode if such
- * a signal occurs. It is the responsibility of the
- * application to mask off any signals that might normally
- * occur while waiting for another node in the data
- * shipping collective. Several libraries use SIGALRM; the
- * thread that makes the gpfs_fcntl() call should use
- * sigthreadmask to mask off delivery of this signal while
- * inside the call.
- * Return: Nothing
- * Programmer: Bill Wendling, 28. May 2002
- * Modifications:
- */
- static void
-gpfs_stop_data_shipping(int handle)
-{
- struct {
- gpfsFcntlHeader_t hdr;
- gpfsDataShipStop_t stop;
- } ds_stop;
-
- ds_stop.hdr.totalLength = sizeof(ds_stop);
- ds_stop.hdr.fcntlVersion = GPFS_FCNTL_CURRENT_VERSION;
- ds_stop.hdr.fcntlReserved = 0;
- ds_stop.stop.structLen = sizeof(ds_stop.stop);
- ds_stop.stop.structType = GPFS_DATA_SHIP_STOP;
-
- if (gpfs_fcntl(handle, &ds_stop) != 0)
- fprintf(stderr,
- "gpfs_fcntl DS stop directive failed. errno=%d errorOffset=%d\n",
- errno, ds_stop.hdr.errorOffset);
-}
-
-/*
- * Function: gpfs_invalidate_file_cache
- * Purpose: Invalidate all cached data held on behalf of a file on
- * this node.
- * Return: Nothing
- * Programmer: Bill Wendling, 03. June 2002
- * Modifications:
- */
- static void
-gpfs_invalidate_file_cache(const char *filename)
-{
- int handle;
- struct {
- gpfsFcntlHeader_t hdr;
- gpfsClearFileCache_t inv;
- } inv_cache_hint;
-
- /* Open the file. If the open fails, the file cannot be cached. */
- handle = open(filename, O_RDONLY, 0);
-
- if (handle == -1)
- return;
-
- /* Issue the invalidate hint */
- inv_cache_hint.hdr.totalLength = sizeof(inv_cache_hint);
- inv_cache_hint.hdr.fcntlVersion = GPFS_FCNTL_CURRENT_VERSION;
- inv_cache_hint.hdr.fcntlReserved = 0;
- inv_cache_hint.inv.structLen = sizeof(gpfsClearFileCache_t);
- inv_cache_hint.inv.structType = GPFS_CLEAR_FILE_CACHE;
-
- if (gpfs_fcntl(handle, &inv_cache_hint) != 0) {
- fprintf(stderr,
- "gpfs_fcntl clear cache hint failed for file '%s'.",
- filename);
- fprintf(stderr, " errno=%d errorOffset=%d\n",
- errno, inv_cache_hint.hdr.errorOffset);
- exit(EXIT_FAILURE);
- }
-
- /* Close the file */
- if (close(handle) == -1) {
- fprintf(stderr,
- "could not close file '%s' after flushing file cache, ",
- filename);
- fprintf(stderr, "errno=%d\n", errno);
- exit(EXIT_FAILURE);
- }
-}
-
-#else
-
-/* turn the stubs off since some compilers are warning they are not used */
-#if 0
-/* H5_HAVE_GPFS isn't defined...stub functions */
-
- static void
-gpfs_access_range(int UNUSED handle, off_t UNUSED start, off_t UNUSED length,
- int UNUSED is_write)
-{
- return;
-}
-
- static void
-gpfs_free_range(int UNUSED handle, off_t UNUSED start, off_t UNUSED length)
-{
- return;
-}
-
- static void
-gpfs_clear_file_cache(int UNUSED handle)
-{
- return;
-}
-
- static void
-gpfs_cancel_hints(int UNUSED handle)
-{
- return;
-}
-
- static void
-gpfs_start_data_shipping(int UNUSED handle, int UNUSED num_insts)
-{
- return;
-}
-
- static void
-gpfs_stop_data_shipping(int UNUSED handle)
-{
- return;
-}
-
- static void
-gpfs_start_data_ship_map(int UNUSED handle, int UNUSED partition_size,
- int UNUSED agent_count, int UNUSED *agent_node_num)
-{
- return;
-}
-
- static void
-gpfs_invalidate_file_cache(const char UNUSED *filename)
-{
- return;
-}
-
-#endif /* 0 */
-
-#endif /* H5_HAVE_GPFS */
-
-
diff --git a/perform/sio_perf.c b/perform/sio_perf.c
index 7df9337..26cec6d 100644
--- a/perform/sio_perf.c
+++ b/perform/sio_perf.c
@@ -210,14 +210,6 @@ static struct long_options l_opts[] = {
{ "min-xfe", require_arg, 'x' },
{ "min-xf", require_arg, 'x' },
{ "min-x", require_arg, 'x' },
- { "mpi-posix", no_arg, 'm' },
- { "mpi-posi", no_arg, 'm' },
- { "mpi-pos", no_arg, 'm' },
- { "mpi-po", no_arg, 'm' },
- { "mpi-p", no_arg, 'm' },
- { "mpi-", no_arg, 'm' },
- { "mpi", no_arg, 'm' },
- { "mp", no_arg, 'm' },
{ "num-bytes", require_arg, 'e' },
{ "num-byte", require_arg, 'e' },
{ "num-byt", require_arg, 'e' },
@@ -302,7 +294,6 @@ struct options {
int h5_use_chunks; /* Make HDF5 dataset chunked */
int h5_write_only; /* Perform the write tests only */
int h5_extendable; /* Perform the write tests only */
- unsigned h5_use_mpi_posix; /* Use MPI-posix VFD for HDF5 I/O (instead of MPI-I/O VFD) */
int verify; /* Verify data correctness */
vfdtype vfd; /* File driver */
@@ -411,7 +402,6 @@ run_test_loop(struct options *opts)
parms.h5_use_chunks = opts->h5_use_chunks;
parms.h5_extendable = opts->h5_extendable;
parms.h5_write_only = opts->h5_write_only;
- parms.h5_use_mpi_posix = opts->h5_use_mpi_posix;
parms.verify = opts->verify;
parms.vfd = opts->vfd;
@@ -982,7 +972,6 @@ parse_command_line(int argc, char *argv[])
cl_opts->h5_use_chunks = FALSE; /* Don't chunk the HDF5 dataset by default */
cl_opts->h5_write_only = FALSE; /* Do both read and write by default */
cl_opts->h5_extendable = FALSE; /* Use extendable dataset */
- cl_opts->h5_use_mpi_posix = FALSE; /* Don't use MPI-posix VFD for HDF5 I/O by default */
cl_opts->verify = FALSE; /* No Verify data correctness by default */
while ((opt = get_option(argc, (const char **)argv, s_opts, l_opts)) != EOF) {
@@ -1144,10 +1133,6 @@ parse_command_line(int argc, char *argv[])
case 'i':
cl_opts->num_iters = atoi(opt_arg);
break;
- case 'm':
- /* Turn on MPI-posix VFL driver for HDF5 I/O */
- cl_opts->h5_use_mpi_posix = TRUE;
- break;
case 'o':
cl_opts->output_file = opt_arg;
break;
diff --git a/perform/sio_perf.h b/perform/sio_perf.h
index 3e4456a..b40fed3 100644
--- a/perform/sio_perf.h
+++ b/perform/sio_perf.h
@@ -66,7 +66,6 @@ typedef struct parameters_ {
int h5_use_chunks; /* Make HDF5 dataset chunked */
int h5_extendable; /* Make HDF5 dataset chunked */
int h5_write_only; /* Perform the write tests only */
- unsigned h5_use_mpi_posix; /* VFD for HDF5 I/O */
int verify; /* Verify data correctness */
} parameters;
diff --git a/release_docs/INSTALL_CMake.txt b/release_docs/INSTALL_CMake.txt
index 438d7e2..8f5ccdf 100644
--- a/release_docs/INSTALL_CMake.txt
+++ b/release_docs/INSTALL_CMake.txt
@@ -473,7 +473,6 @@ HDF5_ENABLE_CODESTACK "Enable the function stack tracing (for developer
HDF5_ENABLE_COVERAGE "Enable code coverage for Libraries and Programs" OFF
HDF5_ENABLE_DEPRECATED_SYMBOLS "Enable deprecated public API symbols" ON
HDF5_ENABLE_EMBEDDED_LIBINFO "embed library info into executables" ON
-HDF5_ENABLE_GPFS "Enable GPFS hints for the MPI/POSIX file driver" OFF
HDF5_ENABLE_HSIZET "Enable datasets larger than memory" ON
HDF5_ENABLE_LARGE_FILE "Enable support for large (64-bit) files on Linux." ON
HDF5_ENABLE_PARALLEL "Enable parallel build (requires MPI)" OFF
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 7aad6ad..7257a41 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -147,7 +147,6 @@ SET (H5FD_SRCS
${HDF5_SRC_DIR}/H5FDlog.c
${HDF5_SRC_DIR}/H5FDmpi.c
${HDF5_SRC_DIR}/H5FDmpio.c
- ${HDF5_SRC_DIR}/H5FDmpiposix.c
${HDF5_SRC_DIR}/H5FDmulti.c
${HDF5_SRC_DIR}/H5FDsec2.c
${HDF5_SRC_DIR}/H5FDspace.c
@@ -161,7 +160,6 @@ SET (H5FD_HDRS
${HDF5_SRC_DIR}/H5FDlog.h
${HDF5_SRC_DIR}/H5FDmpi.h
${HDF5_SRC_DIR}/H5FDmpio.h
- ${HDF5_SRC_DIR}/H5FDmpiposix.h
${HDF5_SRC_DIR}/H5FDmulti.h
${HDF5_SRC_DIR}/H5FDpkg.h
${HDF5_SRC_DIR}/H5FDpublic.h
diff --git a/src/H5Dmpio.c b/src/H5Dmpio.c
index 684f510..c294e42 100644
--- a/src/H5Dmpio.c
+++ b/src/H5Dmpio.c
@@ -157,12 +157,9 @@ H5D__mpio_opt_possible(const H5D_io_info_t *io_info, const H5S_t *file_space,
const H5S_t *mem_space, const H5D_type_info_t *type_info,
const H5D_chunk_map_t *fm, H5P_genplist_t *dx_plist)
{
- /* variables to set cause of broken collective I/O */
- int local_cause = 0;
- int global_cause = 0;
-
- int mpi_code; /* MPI error code */
- htri_t ret_value = TRUE;
+ int local_cause = 0; /* Local reason(s) for breaking collective mode */
+ int global_cause = 0; /* Global reason(s) for breaking collective mode */
+ htri_t ret_value; /* Return value */
FUNC_ENTER_PACKAGE
@@ -174,17 +171,13 @@ H5D__mpio_opt_possible(const H5D_io_info_t *io_info, const H5S_t *file_space,
/* For independent I/O, get out quickly and don't try to form consensus */
- if(io_info->dxpl_cache->xfer_mode == H5FD_MPIO_INDEPENDENT) {
- local_cause = H5D_MPIO_SET_INDEPENDENT;
- global_cause = H5D_MPIO_SET_INDEPENDENT;
- HGOTO_DONE(FALSE);
- }
-
- /* Optimized MPI types flag must be set and it must be collective IO */
- /* (Don't allow parallel I/O for the MPI-posix driver, since it doesn't do real collective I/O) */
- if(!(H5S_mpi_opt_types_g && io_info->dxpl_cache->xfer_mode == H5FD_MPIO_COLLECTIVE
- && !IS_H5FD_MPIPOSIX(io_info->dset->oloc.file)))
- local_cause |= H5D_MPIO_SET_MPIPOSIX;
+ if(io_info->dxpl_cache->xfer_mode == H5FD_MPIO_INDEPENDENT)
+ local_cause |= H5D_MPIO_SET_INDEPENDENT;
+
+ /* Optimized MPI types flag must be set */
+ /* (based on 'HDF5_MPI_OPT_TYPES' environment variable) */
+ if(!H5FD_mpi_opt_types_g)
+ local_cause |= H5D_MPIO_MPI_OPT_TYPES_ENV_VAR_DISABLED;
/* Don't allow collective operations if datatype conversions need to happen */
if(!type_info->is_conv_noop)
@@ -220,15 +213,19 @@ H5D__mpio_opt_possible(const H5D_io_info_t *io_info, const H5S_t *file_space,
io_info->dset->shared->dcpl_cache.pline.nused > 0)
local_cause |= H5D_MPIO_FILTERS;
- /* Form consensus opinion among all processes about whether to perform
- * collective I/O
- */
- if(MPI_SUCCESS != (mpi_code = MPI_Allreduce(&local_cause, &global_cause, 1, MPI_INT, MPI_BOR, io_info->comm)))
- HMPI_GOTO_ERROR(FAIL, "MPI_Allreduce failed", mpi_code)
+ /* Check for independent I/O */
+ if(local_cause & H5D_MPIO_SET_INDEPENDENT)
+ global_cause = local_cause;
+ else {
+ int mpi_code; /* MPI error code */
- ret_value = global_cause > 0 ? FALSE : TRUE;
+ /* Form consensus opinion among all processes about whether to perform
+ * collective I/O
+ */
+ if(MPI_SUCCESS != (mpi_code = MPI_Allreduce(&local_cause, &global_cause, 1, MPI_INT, MPI_BOR, io_info->comm)))
+ HMPI_GOTO_ERROR(FAIL, "MPI_Allreduce failed", mpi_code)
+ } /* end else */
-done:
/* Write the local value of no-collective-cause to the DXPL. */
if(H5P_set(dx_plist, H5D_MPIO_LOCAL_NO_COLLECTIVE_CAUSE_NAME, &local_cause) < 0)
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "couldn't set local no collective cause property")
@@ -237,6 +234,10 @@ done:
if(H5P_set(dx_plist, H5D_MPIO_GLOBAL_NO_COLLECTIVE_CAUSE_NAME, &global_cause) < 0)
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "couldn't set global no collective cause property")
+ /* Set the return value, based on the global cause */
+ ret_value = global_cause > 0 ? FALSE : TRUE;
+
+done:
FUNC_LEAVE_NOAPI(ret_value)
} /* H5D__mpio_opt_possible() */
diff --git a/src/H5FD.c b/src/H5FD.c
index 5408706..a261818 100644
--- a/src/H5FD.c
+++ b/src/H5FD.c
@@ -230,7 +230,6 @@ H5FD_term_interface(void)
H5FD_multi_term();
#ifdef H5_HAVE_PARALLEL
H5FD_mpio_term();
- H5FD_mpiposix_term();
#endif /* H5_HAVE_PARALLEL */
} /* end if */
} else {
diff --git a/src/H5FDmpi.h b/src/H5FDmpi.h
index dcb8df9..784fe70 100644
--- a/src/H5FDmpi.h
+++ b/src/H5FDmpi.h
@@ -57,7 +57,6 @@ typedef enum H5FD_mpio_collective_opt_t {
/* Include all the MPI VFL headers */
#include "H5FDmpio.h" /* MPI I/O file driver */
-#include "H5FDmpiposix.h" /* MPI/posix I/O file driver */
#endif /* H5FDmpi_H */
diff --git a/src/H5FDmpio.c b/src/H5FDmpio.c
index 2d73ec0..2c97282 100644
--- a/src/H5FDmpio.c
+++ b/src/H5FDmpio.c
@@ -44,6 +44,10 @@
*/
static hid_t H5FD_MPIO_g = 0;
+/* Whether to allow collective I/O operations */
+/* (Value can be set from environment variable also) */
+hbool_t H5FD_mpi_opt_types_g = TRUE;
+
/*
* The view is set to this value
*/
@@ -187,51 +191,54 @@ H5FD_mpio_init_interface(void)
* library.
*
* Return: Success: The driver ID for the mpio driver.
- *
* Failure: Negative.
*
* Programmer: Robb Matzke
* Thursday, August 5, 1999
*
- * Modifications:
- *
*-------------------------------------------------------------------------
*/
hid_t
H5FD_mpio_init(void)
{
#ifdef H5FDmpio_DEBUG
- static int H5FD_mpio_Debug_inited=0;
+ static int H5FD_mpio_Debug_inited = 0;
#endif /* H5FDmpio_DEBUG */
- hid_t ret_value; /* Return value */
+ const char *s; /* String for environment variables */
+ hid_t ret_value; /* Return value */
FUNC_ENTER_NOAPI(FAIL)
- if (H5I_VFL!=H5I_get_type(H5FD_MPIO_g))
- H5FD_MPIO_g = H5FD_register((const H5FD_class_t *)&H5FD_mpio_g,sizeof(H5FD_class_mpi_t),FALSE);
+ /* Register the MPI-IO VFD, if it isn't already */
+ if(H5I_VFL != H5I_get_type(H5FD_MPIO_g))
+ H5FD_MPIO_g = H5FD_register((const H5FD_class_t *)&H5FD_mpio_g, sizeof(H5FD_class_mpi_t), FALSE);
+
+ /* Allow MPI buf-and-file-type optimizations? */
+ s = HDgetenv("HDF5_MPI_OPT_TYPES");
+ if(s && HDisdigit(*s))
+ H5FD_mpi_opt_types_g = (hbool_t)HDstrtol(s, NULL, 0);
#ifdef H5FDmpio_DEBUG
- if (!H5FD_mpio_Debug_inited)
- {
- /* set debug mask */
- /* Should this be done in H5F global initialization instead of here? */
- const char *s = HDgetenv ("H5FD_mpio_Debug");
- if (s) {
- while (*s){
- H5FD_mpio_Debug[(int)*s]++;
- s++;
- }
- }
- H5FD_mpio_Debug_inited++;
- }
+ if(!H5FD_mpio_Debug_inited) {
+ /* Retrieve MPI-IO debugging environment variable */
+ s = HDgetenv("H5FD_mpio_Debug");
+ if(s) {
+ /* Set debug mask */
+ while(*s) {
+ H5FD_mpio_Debug[(int)*s]++;
+ s++;
+ } /* end while */
+ } /* end if */
+ H5FD_mpio_Debug_inited++;
+ } /* end if */
#endif /* H5FDmpio_DEBUG */
/* Set return value */
- ret_value=H5FD_MPIO_g;
+ ret_value = H5FD_MPIO_g;
done:
FUNC_LEAVE_NOAPI(ret_value)
-}
+} /* end H5FD_mpio_init() */
/*---------------------------------------------------------------------------
diff --git a/src/H5FDmpio.h b/src/H5FDmpio.h
index f1a68a4..1d91cc3 100644
--- a/src/H5FDmpio.h
+++ b/src/H5FDmpio.h
@@ -22,14 +22,14 @@
#ifndef H5FDmpio_H
#define H5FDmpio_H
+/* Macros */
+
#ifdef H5_HAVE_PARALLEL
# define H5FD_MPIO (H5FD_mpio_init())
#else
# define H5FD_MPIO (-1)
#endif /* H5_HAVE_PARALLEL */
-/* Macros */
-
#ifdef H5_HAVE_PARALLEL
/*Turn on H5FDmpio_debug if H5F_DEBUG is on */
#ifdef H5F_DEBUG
@@ -38,6 +38,10 @@
#endif
#endif
+/* Global var whose value comes from environment variable */
+/* (Defined in H5FDmpio.c) */
+H5_DLLVAR hbool_t H5FD_mpi_opt_types_g;
+
/* Function prototypes */
#ifdef __cplusplus
extern "C" {
diff --git a/src/H5FDmpiposix.c b/src/H5FDmpiposix.c
deleted file mode 100644
index f66b244..0000000
--- a/src/H5FDmpiposix.c
+++ /dev/null
@@ -1,1486 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * Copyright by The HDF Group. *
- * Copyright by the Board of Trustees of the University of Illinois. *
- * All rights reserved. *
- * *
- * This file is part of HDF5. The full HDF5 copyright notice, including *
- * terms governing use, modification, and redistribution, is contained in *
- * the files COPYING and Copyright.html. COPYING can be found at the root *
- * of the source code distribution tree; Copyright.html can be found at the *
- * root level of an installed copy of the electronic HDF5 document set and *
- * is linked from the top-level documents page. It can also be found at *
- * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from help@hdfgroup.org. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-/*
- * Programmer: Quincey Koziol <koziol@ncsa.uiuc.ed>
- * Thursday, July 11, 2002
- *
- * Purpose: This is a "combination" MPI-2 and posix I/O driver.
- * It uses MPI for coordinating the actions of several processes
- * and posix I/O calls to do the actual I/O to the disk.
- *
- * This driver was derived from the H5FDmpio.c driver and may
- * share bugs/quirks/etc.
- *
- * Limitations:
- * There is no "collective" I/O mode with this driver.
- *
- * This will almost certainly _not_ work correctly for files
- * accessed on distributed parallel systems with the file located
- * on a non-parallel filesystem.
- *
- */
-
-/* Interface initialization */
-#define H5_INTERFACE_INIT_FUNC H5FD_mpiposix_init_interface
-
-
-#include "H5private.h" /* Generic Functions */
-#include "H5ACprivate.h" /* Metadata cache */
-#include "H5Eprivate.h" /* Error handling */
-#include "H5Fprivate.h" /* File access */
-#include "H5FDprivate.h" /* File drivers */
-#include "H5FDmpi.h" /* MPI-based file drivers */
-#include "H5Iprivate.h" /* IDs */
-#include "H5MMprivate.h" /* Memory management */
-#include "H5Pprivate.h" /* Property lists */
-
-/* Features:
- * H5_HAVE_GPFS -- issue gpfs_fcntl() calls to hopefully improve
- * performance when accessing files on a GPFS
- * file system.
- *
- * REPORT_IO -- if set then report all POSIX file calls to stderr.
- *
- */
-/* #define REPORT_IO */
-
-#ifdef H5_HAVE_GPFS
-# include <gpfs_fcntl.h>
-#endif
-
-#ifdef H5_HAVE_PARALLEL
-
-/*
- * The driver identification number, initialized at runtime if H5_HAVE_PARALLEL
- * is defined. This allows applications to still have the H5FD_MPIPOSIX
- * "constants" in their source code (it also makes this file strictly ANSI
- * compliant when H5_HAVE_PARALLEL isn't defined)
- */
-static hid_t H5FD_MPIPOSIX_g = 0;
-
-/*
- * The description of a file belonging to this driver.
- * The EOF value is only used just after the file is opened in order for the
- * library to determine whether the file is empty, truncated, or okay. The
- * MPIPOSIX driver doesn't bother to keep it updated since it's an expensive
- * operation.
- */
-typedef struct H5FD_mpiposix_t {
- H5FD_t pub; /* public stuff, must be first */
- int fd; /* the unix file handle */
- MPI_Comm comm; /* communicator */
- int mpi_rank; /* This process's rank */
- int mpi_size; /* Total number of processes */
- haddr_t eof; /* end-of-file marker */
- haddr_t eoa; /* end-of-address marker */
- haddr_t last_eoa; /* Last known end-of-address marker */
- haddr_t pos; /* Current file I/O position */
- H5FD_file_op_t op; /* Last file I/O operation */
- hsize_t naccess; /* Number of (write) accesses to file */
-#ifdef H5_HAVE_GPFS
- size_t blksize; /* Block size of file system */
-#endif
- hbool_t use_gpfs; /* Use GPFS to write things */
-#ifndef H5_HAVE_WIN32_API
- /* On most systems the combination of device and i-node number uniquely
- * identify a file. Note that Cygwin, MinGW and other Windows POSIX
- * environments have the stat function (which fakes inodes)
- * and will use the 'device + inodes' scheme as opposed to the
- * Windows code further below.
- */
- dev_t device; /* file device number */
-#ifdef H5_VMS
- ino_t inode[3]; /* file i-node number */
-#else
- ino_t inode; /* file i-node number */
-#endif /* H5_VMS */
-#else
- /* Files in windows are uniquely identified by the volume serial
- * number and the file index (both low and high parts).
- *
- * There are caveats where these numbers can change, especially
- * on FAT file systems. On NTFS, however, a file should keep
- * those numbers the same until renamed or deleted (though you
- * can use ReplaceFile() on NTFS to keep the numbers the same
- * while renaming).
- *
- * See the MSDN "BY_HANDLE_FILE_INFORMATION Structure" entry for
- * more information.
- *
- * http://msdn.microsoft.com/en-us/library/aa363788(v=VS.85).aspx
- */
- DWORD nFileIndexLow;
- DWORD nFileIndexHigh;
- DWORD dwVolumeSerialNumber;
-
- HANDLE hFile; /* Native windows file handle */
-#endif /* H5_HAVE_WIN32_API */
-} H5FD_mpiposix_t;
-
-/*
- * These macros check for overflow of various quantities. These macros
- * assume that HDoff_t is signed and haddr_t and size_t are unsigned.
- *
- * ADDR_OVERFLOW: Checks whether a file address of type `haddr_t'
- * is too large to be represented by the second argument
- * of the file seek function.
- *
- * SIZE_OVERFLOW: Checks whether a buffer size of type `hsize_t' is too
- * large to be represented by the `size_t' type.
- *
- * REGION_OVERFLOW: Checks whether an address and size pair describe data
- * which can be addressed entirely by the second
- * argument of the file seek function.
- */
-#define MAXADDR (((haddr_t)1 << (8*sizeof(HDoff_t) - 1)) - 1)
-#define ADDR_OVERFLOW(A) (HADDR_UNDEF == (A) || ((A) & ~(haddr_t)MAXADDR))
-#define SIZE_OVERFLOW(Z) ((Z) & ~(hsize_t)MAXADDR)
-#define REGION_OVERFLOW(A,Z) (ADDR_OVERFLOW(A) || SIZE_OVERFLOW(Z) || \
- HADDR_UNDEF == (A) + (Z) || \
- (HDoff_t)((A) + (Z)) < (HDoff_t)(A))
-
-/* Callbacks */
-static void *H5FD_mpiposix_fapl_get(H5FD_t *_file);
-static void *H5FD_mpiposix_fapl_copy(const void *_old_fa);
-static herr_t H5FD_mpiposix_fapl_free(void *_fa);
-static H5FD_t *H5FD_mpiposix_open(const char *name, unsigned flags, hid_t fapl_id,
- haddr_t maxaddr);
-static herr_t H5FD_mpiposix_close(H5FD_t *_file);
-static int H5FD_mpiposix_cmp(const H5FD_t *_f1, const H5FD_t *_f2);
-static herr_t H5FD_mpiposix_query(const H5FD_t *_f1, unsigned long *flags);
-static haddr_t H5FD_mpiposix_get_eoa(const H5FD_t *_file, H5FD_mem_t UNUSED type);
-static herr_t H5FD_mpiposix_set_eoa(H5FD_t *_file, H5FD_mem_t type, haddr_t addr);
-static haddr_t H5FD_mpiposix_get_eof(const H5FD_t *_file);
-static herr_t H5FD_mpiposix_get_handle(H5FD_t *_file, hid_t fapl, void** file_handle);
-static herr_t H5FD_mpiposix_read(H5FD_t *_file, H5FD_mem_t type, hid_t fapl_id, haddr_t addr,
- size_t size, void *buf);
-static herr_t H5FD_mpiposix_write(H5FD_t *_file, H5FD_mem_t type, hid_t fapl_id, haddr_t addr,
- size_t size, const void *buf);
-static herr_t H5FD_mpiposix_truncate(H5FD_t *_file, hid_t dxpl_id, hbool_t closing);
-static int H5FD_mpiposix_mpi_rank(const H5FD_t *_file);
-static int H5FD_mpiposix_mpi_size(const H5FD_t *_file);
-static MPI_Comm H5FD_mpiposix_communicator(const H5FD_t *_file);
-
-/* MPIPOSIX-specific file access properties */
-typedef struct H5FD_mpiposix_fapl_t {
- hbool_t use_gpfs; /* use GPFS hints */
- MPI_Comm comm; /* communicator */
-} H5FD_mpiposix_fapl_t;
-
-/* The MPIPOSIX file driver information */
-static const H5FD_class_mpi_t H5FD_mpiposix_g = {
- { /* Start of superclass information */
- "mpiposix", /* name */
- MAXADDR, /* maxaddr */
- H5F_CLOSE_SEMI, /* fc_degree */
- NULL, /* sb_size */
- NULL, /* sb_encode */
- NULL, /* sb_decode */
- sizeof(H5FD_mpiposix_fapl_t), /* fapl_size */
- H5FD_mpiposix_fapl_get, /* fapl_get */
- H5FD_mpiposix_fapl_copy, /* fapl_copy */
- H5FD_mpiposix_fapl_free, /* fapl_free */
- 0, /* dxpl_size */
- NULL, /* dxpl_copy */
- NULL, /* dxpl_free */
- H5FD_mpiposix_open, /* open */
- H5FD_mpiposix_close, /* close */
- H5FD_mpiposix_cmp, /* cmp */
- H5FD_mpiposix_query, /* query */
- NULL, /* get_type_map */
- NULL, /* alloc */
- NULL, /* free */
- H5FD_mpiposix_get_eoa, /* get_eoa */
- H5FD_mpiposix_set_eoa, /* set_eoa */
- H5FD_mpiposix_get_eof, /* get_eof */
- H5FD_mpiposix_get_handle, /* get_handle */
- H5FD_mpiposix_read, /* read */
- H5FD_mpiposix_write, /* write */
- NULL, /* flush */
- H5FD_mpiposix_truncate, /* truncate */
- NULL, /* lock */
- NULL, /* unlock */
- H5FD_FLMAP_DICHOTOMY /* fl_map */
- }, /* End of superclass information */
- H5FD_mpiposix_mpi_rank, /* get_rank */
- H5FD_mpiposix_mpi_size, /* get_size */
- H5FD_mpiposix_communicator /* get_comm */
-};
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_mpiposix_init_interface
- *
- * Purpose: Initializes any interface-specific data or routines.
- *
- * Return: Success: The driver ID for the mpiposix driver.
- * Failure: Negative.
- *
- *-------------------------------------------------------------------------
- */
-static herr_t
-H5FD_mpiposix_init_interface(void)
-{
- FUNC_ENTER_NOAPI_NOINIT_NOERR
-
- FUNC_LEAVE_NOAPI(H5FD_mpiposix_init())
-} /* H5FD_mpiposix_init_interface() */
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_mpiposix_init
- *
- * Purpose: Initialize this driver by registering the driver with the
- * library.
- *
- * Return: Success: The driver ID for the mpiposix driver.
- * Failure: Negative.
- *
- * Programmer: Quincey Koziol
- * Thursday, July 11, 2002
- *
- *-------------------------------------------------------------------------
- */
-hid_t
-H5FD_mpiposix_init(void)
-{
- hid_t ret_value = H5FD_MPIPOSIX_g; /* Return value */
-
- FUNC_ENTER_NOAPI(FAIL)
-
- if(H5I_VFL != H5I_get_type(H5FD_MPIPOSIX_g))
- H5FD_MPIPOSIX_g = H5FD_register((const H5FD_class_t *)&H5FD_mpiposix_g, sizeof(H5FD_class_mpi_t), FALSE);
-
- /* Set return value */
- ret_value = H5FD_MPIPOSIX_g;
-
-done:
- FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5FD_mpiposix_init() */
-
-
-/*---------------------------------------------------------------------------
- * Function: H5FD_mpiposix_term
- *
- * Purpose: Shut down the VFD
- *
- * Returns: SUCCEED (can't fail)
- *
- * Programmer: Quincey Koziol
- * Friday, Jan 30, 2004
- *
- * Modification:
- *
- *---------------------------------------------------------------------------
- */
-void
-H5FD_mpiposix_term(void)
-{
- FUNC_ENTER_NOAPI_NOINIT_NOERR
-
- /* Reset VFL ID */
- H5FD_MPIPOSIX_g = 0;
-
- FUNC_LEAVE_NOAPI_VOID
-} /* end H5FD_mpiposix_term() */
-
-
-/*-------------------------------------------------------------------------
- * Function: H5Pset_fapl_mpiposix
- *
- * Purpose: Store the user supplied MPI communicator COMM in
- * the file access property list FAPL_ID which can then be used
- * to create and/or open the file. This function is available
- * only in the parallel HDF5 library and is not collective.
- *
- * comm is the MPI communicator to be used for file open as
- * defined in MPI_FILE_OPEN of MPI-2. This function makes a
- * duplicate of comm. Any modification to comm after this function
- * call returns has no effect on the access property list.
- *
- * If fapl_id has previously set comm value, it will be replaced
- * and the old communicator is freed.
- *
- * Return: SUCCEED/FAIL
- *
- * Programmer: Quincey Koziol
- * Thursday, July 11, 2002
- *
- *-------------------------------------------------------------------------
- */
-herr_t
-H5Pset_fapl_mpiposix(hid_t fapl_id, MPI_Comm comm, hbool_t use_gpfs)
-{
- H5FD_mpiposix_fapl_t fa;
- H5P_genplist_t *plist; /* Property list pointer */
- herr_t ret_value;
-
- FUNC_ENTER_API(FAIL)
- H5TRACE3("e", "iMcb", fapl_id, comm, use_gpfs);
-
- /* Check arguments */
- if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
- HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a file access list")
- if (MPI_COMM_NULL == comm)
- HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a valid communicator")
-
- /* Initialize driver specific properties */
- fa.comm = comm;
- fa.use_gpfs = use_gpfs;
-
- /* duplication is done during driver setting. */
- ret_value = H5P_set_driver(plist, H5FD_MPIPOSIX, &fa);
-
-done:
- FUNC_LEAVE_API(ret_value)
-} /* end H5Pset_fapl_mpiposix() */
-
-
-/*-------------------------------------------------------------------------
- * Function: H5Pget_fapl_mpiposix
- *
- * Purpose: If the file access property list is set to the H5FD_MPIPOSIX
- * driver then this function returns a duplicate of the MPI
- * communicator through the comm pointer. It is the responsibility
- * of the application to free the returned communicator.
- *
- * Return: Success: Non-negative with the communicator and
- * information returned through the COMM
- * argument if non-null. Since it is a duplicate
- * of the stored object, future modifications to
- * the access property list do not affect it and
- * it is the responsibility of the application to
- * free it.
- * Failure: Negative
- *
- * Programmer: Quincey Koziol
- * Thursday, July 11, 2002
- *
- *-------------------------------------------------------------------------
- */
-herr_t
-H5Pget_fapl_mpiposix(hid_t fapl_id, MPI_Comm *comm/*out*/, hbool_t *use_gpfs/*out*/)
-{
- H5FD_mpiposix_fapl_t *fa;
- H5P_genplist_t *plist; /* Property list pointer */
- int mpi_code; /* mpi return code */
- herr_t ret_value = SUCCEED; /* Return value */
-
- FUNC_ENTER_API(FAIL)
- H5TRACE3("e", "ixx", fapl_id, comm, use_gpfs);
-
- if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
- HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a file access list")
- if (H5FD_MPIPOSIX != H5P_get_driver(plist))
- HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "incorrect VFL driver")
- if (NULL == (fa = H5P_get_driver_info(plist)))
- HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "bad VFL driver info")
-
- /* Get MPI Communicator */
- if (comm){
- if (MPI_SUCCESS != (mpi_code = MPI_Comm_dup(fa->comm, comm)))
- HMPI_GOTO_ERROR(FAIL, "MPI_Comm_dup failed", mpi_code)
- }
-
- if (use_gpfs)
- *use_gpfs = fa->use_gpfs;
-
-done:
- FUNC_LEAVE_API(ret_value)
-} /* end H5Pget_fapl_mpiposix() */
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_mpiposix_fapl_get
- *
- * Purpose: Returns a file access property list which could be used to
- * create another file the same as this one.
- *
- * Return: Success: Ptr to new file access property list with all
- * fields copied from the file pointer.
- * Failure: NULL
- *
- * Programmer: Quincey Koziol
- * Thursday, July 11, 2002
- *
- *-------------------------------------------------------------------------
- */
-static void *
-H5FD_mpiposix_fapl_get(H5FD_t *_file)
-{
- H5FD_mpiposix_t *file = (H5FD_mpiposix_t*)_file;
- H5FD_mpiposix_fapl_t *fa = NULL;
- int mpi_code; /* MPI return code */
- void *ret_value; /* Return value */
-
- FUNC_ENTER_NOAPI_NOINIT
-
- HDassert(file);
- HDassert(H5FD_MPIPOSIX == file->pub.driver_id);
-
- if (NULL == (fa = H5MM_calloc(sizeof(H5FD_mpiposix_fapl_t))))
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed")
-
- /* Duplicate the communicator. */
- if (MPI_SUCCESS != (mpi_code=MPI_Comm_dup(file->comm, &fa->comm)))
- HMPI_GOTO_ERROR(NULL, "MPI_Comm_dup failed", mpi_code)
-
- fa->use_gpfs = file->use_gpfs;
-
- /* Set return value */
- ret_value=fa;
-
-done:
- FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5FD_mpiposix_fapl_get() */
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_mpiposix_fapl_copy
- *
- * Purpose: Copies the mpiposix-specific file access properties.
- *
- * Return: Success: Ptr to a new property list
- * Failure: NULL
- *
- * Programmer: Albert Cheng
- * Apr 24, 2003
- *
- *-------------------------------------------------------------------------
- */
-static void *
-H5FD_mpiposix_fapl_copy(const void *_old_fa)
-{
- void *ret_value = NULL;
- const H5FD_mpiposix_fapl_t *old_fa = (const H5FD_mpiposix_fapl_t*)_old_fa;
- H5FD_mpiposix_fapl_t *new_fa = NULL;
- int mpi_code; /* MPI return code */
-
- FUNC_ENTER_NOAPI_NOINIT
-
- if (NULL == (new_fa = H5MM_malloc(sizeof(H5FD_mpiposix_fapl_t))))
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed")
-
- /* Copy the general information */
- HDmemcpy(new_fa, old_fa, sizeof(H5FD_mpiposix_fapl_t));
-
- /* Duplicate communicator. */
- if (MPI_SUCCESS != (mpi_code = MPI_Comm_dup(old_fa->comm, &new_fa->comm)))
- HMPI_GOTO_ERROR(NULL, "MPI_Comm_dup failed", mpi_code)
-
- new_fa->use_gpfs = old_fa->use_gpfs;
- ret_value = new_fa;
-
-done:
- if (NULL == ret_value){
- /* cleanup */
- if (new_fa)
- H5MM_xfree(new_fa);
- }
-
- FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5FD_mpiposix_fapl_copy() */
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_mpiposix_fapl_free
- *
- * Purpose: Frees the mpiposix-specific file access properties.
- *
- * Return: SUCCEED (can't fail)
- *
- * Programmer: Albert Cheng
- * Apr 24, 2003
- *
- *-------------------------------------------------------------------------
- */
-static herr_t
-H5FD_mpiposix_fapl_free(void *_fa)
-{
- H5FD_mpiposix_fapl_t *fa = (H5FD_mpiposix_fapl_t*)_fa;
-
- FUNC_ENTER_NOAPI_NOINIT_NOERR
-
- HDassert(fa);
-
- /* Free the internal communicator */
- HDassert(MPI_COMM_NULL != fa->comm);
- MPI_Comm_free(&fa->comm);
- H5MM_xfree(fa);
-
- FUNC_LEAVE_NOAPI(SUCCEED)
-} /* end H5FD_mpiposix_fapl_free() */
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_mpiposix_open
- *
- * Purpose: Opens a file with name NAME. The FLAGS are a bit field with
- * purpose similar to the second argument of open(2) and which
- * are defined in H5Fpublic.h. The file access property list
- * FAPL_ID contains the properties driver properties and MAXADDR
- * is the largest address which this file will be expected to
- * access. This is collective.
- *
- * Return: Success: A new file pointer.
- * Failure: NULL
- *
- * Programmer: Quincey Koziol
- * Thursday, July 11, 2002
- *
- *-------------------------------------------------------------------------
- */
-static H5FD_t *
-H5FD_mpiposix_open(const char *name, unsigned flags, hid_t fapl_id,
- haddr_t maxaddr)
-{
- H5FD_mpiposix_t *file = NULL; /* New MPIPOSIX file struct */
- int o_flags; /* Flags for file open call */
- int fd = -1; /* File handle for file opened */
- int mpi_rank; /* MPI rank of this process */
- int mpi_size; /* Total number of MPI processes */
- int mpi_code; /* mpi return code */
- const H5FD_mpiposix_fapl_t *fa = NULL; /* MPIPOSIX file access property list information */
- H5FD_mpiposix_fapl_t _fa; /* Private copy of default file access property list information */
- H5P_genplist_t *plist; /* Property list pointer */
- h5_stat_t sb; /* Portable 'stat' struct */
-#ifdef H5_HAVE_WIN32_API
- struct _BY_HANDLE_FILE_INFORMATION fileinfo;
-#endif
- H5FD_t *ret_value = NULL; /* Return value */
- MPI_Comm comm_dup = MPI_COMM_NULL;
-
- FUNC_ENTER_NOAPI_NOINIT
-
- /* Check arguments */
- if (!name || !*name)
- HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, NULL, "invalid file name")
- if (0 == maxaddr || HADDR_UNDEF == maxaddr)
- HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, NULL, "bogus maxaddr")
- if (ADDR_OVERFLOW(maxaddr))
- HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, NULL, "bogus maxaddr")
-
- /* Obtain a pointer to mpiposix-specific file access properties */
- if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a file access property list")
- if (H5P_FILE_ACCESS_DEFAULT == fapl_id || H5FD_MPIPOSIX != H5P_get_driver(plist)) {
- _fa.comm = MPI_COMM_SELF; /*default*/
- _fa.use_gpfs = FALSE;
- fa = &_fa;
- } /* end if */
- else {
- if(NULL == (fa = (const H5FD_mpiposix_fapl_t *)H5P_get_driver_info(plist)))
- HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, NULL, "bad VFL driver info")
- } /* end else */
-
- /* Duplicate the communicator for use by this file. */
- if (MPI_SUCCESS != (mpi_code = MPI_Comm_dup(fa->comm, &comm_dup)))
- HMPI_GOTO_ERROR(NULL, "MPI_Comm_dup failed", mpi_code)
-
- /* Get the MPI rank of this process and the total number of processes */
- if (MPI_SUCCESS != (mpi_code = MPI_Comm_rank (comm_dup, &mpi_rank)))
- HMPI_GOTO_ERROR(NULL, "MPI_Comm_rank failed", mpi_code)
- if (MPI_SUCCESS != (mpi_code = MPI_Comm_size (comm_dup, &mpi_size)))
- HMPI_GOTO_ERROR(NULL, "MPI_Comm_size failed", mpi_code)
-
- /* Build the open flags */
- o_flags = (H5F_ACC_RDWR & flags) ? O_RDWR : O_RDONLY;
-
- /* Only set the creation flag(s) for process 0 */
- if(0 == mpi_rank) {
- if (H5F_ACC_TRUNC & flags)
- o_flags |= O_TRUNC;
- if (H5F_ACC_CREAT & flags)
- o_flags |= O_CREAT;
- if (H5F_ACC_EXCL & flags)
- o_flags |= O_EXCL;
- } /* end if */
-
- /* Process 0 opens (or creates) the file while the rest of the
- * processes wait. Then process 0 signals the other processes and they
- * open (never create) the file and all processes proceed.
- */
- /* Process 0 opens (or creates) file and broadcasts result to other processes */
- if(0 == mpi_rank) {
- /* Open the file */
- fd = HDopen(name, o_flags, 0666);
- } /* end if */
-
- /* Broadcast the results of the open() from process 0
- *
- * This is necessary because of the "tentative open" code in H5F_open()
- * where the file is attempted to be opened with different flags from the
- * user's, in order to check for the file's existence, etc. Here, process 0
- * gets different flags from the other processes (since it is in charge of
- * creating the file, if necessary) and can fail in situations where the
- * other process's file opens would succeed, so allow the other processes
- * to check for that situation and bail out now also. - QAK
- */
- if (MPI_SUCCESS != (mpi_code= MPI_Bcast(&fd, sizeof(int), MPI_BYTE, 0, comm_dup)))
- HMPI_GOTO_ERROR(NULL, "MPI_Bcast failed", mpi_code)
-
- /* If the file open on process 0 failed, bail out on all processes now */
- if(fd < 0)
- HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to open file")
-
- /* Other processes (non 0) wait for broadcast result from process 0 and then open file */
- if(mpi_rank != 0) {
- /* Open the file */
- if ((fd = HDopen(name, o_flags, 0666)) < 0)
- HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to open file")
- } /* end if */
-
- /* Process 0 fstat()s the file and broadcasts the results to the other processes */
- if(0 == mpi_rank) {
- /* Get the stat information */
- if (HDfstat(fd, &sb) < 0)
- HGOTO_ERROR(H5E_FILE, H5E_BADFILE, NULL, "unable to fstat file")
- } /* end if */
-
- /* Broadcast the results of the fstat() from process 0 */
- if (MPI_SUCCESS != (mpi_code = MPI_Bcast(&sb, sizeof(h5_stat_t), MPI_BYTE, 0, comm_dup)))
- HMPI_GOTO_ERROR(NULL, "MPI_Bcast failed", mpi_code)
-
-#ifdef H5_HAVE_GPFS
- if (fa->use_gpfs) {
- /*
- * Free all byte range tokens. This is a good thing to do if raw data
- * is aligned on 256kB boundaries (a GPFS page is 256kB). Care should
- * be taken that there aren't too many sub-page writes, or the mmfsd
- * may become overwhelmed. This should probably eventually be passed
- * down here as a property. The gpfs_fcntl() will most likely fail if
- * 'fd' isn't on a GPFS file system. */
- struct {
- gpfsFcntlHeader_t hdr;
- gpfsFreeRange_t fr;
- } hint;
- HDmemset(&hint, 0, sizeof hint);
- hint.hdr.totalLength = sizeof hint;
- hint.hdr.fcntlVersion = GPFS_FCNTL_CURRENT_VERSION;
- hint.fr.structLen = sizeof hint.fr;
- hint.fr.structType = GPFS_FREE_RANGE;
- hint.fr.start = 0;
- hint.fr.length = 0;
-
- if (gpfs_fcntl(fd, &hint) < 0)
- HGOTO_ERROR(H5E_FILE, H5E_FCNTL, NULL, "failed to send hints to GPFS")
- }
-#endif /* H5_HAVE_GPFS */
-
- /* Build the file struct and initialize it */
- if (NULL == (file=H5MM_calloc(sizeof(H5FD_mpiposix_t))))
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed")
-
-#ifdef REPORT_IO
- HDfprintf(stderr, "open: rank=%d name=%s file=0x%08lx\n", mpi_rank, name, (unsigned long)file);
-#endif
-
- /* Set the general file information */
- file->fd = fd;
- file->eof = sb.st_size;
-
- /* for H5_HAVE_WIN32_API support. H5_HAVE_WIN32_API 'stat' does not have
- * st_blksize and st_blksize is only used for the H5_HAVE_GPFS case.
- */
-#ifdef H5_HAVE_GPFS
- file->blksize = sb.st_blksize;
-#endif
-
- /* Set this field in the H5FD_mpiposix_t struct for later use */
- file->use_gpfs = fa->use_gpfs;
-
- /* Set the MPI information */
- file->comm = comm_dup;
- file->mpi_rank = mpi_rank;
- file->mpi_size = mpi_size;
-
- /* Reset the last file I/O operation */
- file->pos = HADDR_UNDEF;
- file->op = OP_UNKNOWN;
-
- /* Set the information for the file's device and inode */
-#ifdef H5_HAVE_WIN32_API
- file->hFile = (HANDLE)_get_osfhandle(fd);
- if(INVALID_HANDLE_VALUE == file->hFile)
- HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to get Windows file handle")
-
- if(!GetFileInformationByHandle((HANDLE)file->hFile, &fileinfo))
- HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to get Windows file information")
-
- file->nFileIndexHigh = fileinfo.nFileIndexHigh;
- file->nFileIndexLow = fileinfo.nFileIndexLow;
- file->dwVolumeSerialNumber = fileinfo.dwVolumeSerialNumber;
-#else /* H5_HAVE_WIN32_API */
- file->device = sb.st_dev;
-#ifdef H5_VMS
- file->inode[0] = sb.st_ino[0];
- file->inode[1] = sb.st_ino[1];
- file->inode[2] = sb.st_ino[2];
-#else /* H5_VMS */
- file->inode = sb.st_ino;
-#endif /* H5_VMS */
-#endif /* H5_HAVE_WIN32_API */
-
- /* Indicate success */
- ret_value = (H5FD_t *)file;
-
-done:
- /* Error cleanup */
- if(NULL == ret_value) {
- /* Close the file if it was left open */
- if(fd != -1)
- HDclose(fd);
- if (MPI_COMM_NULL != comm_dup)
- MPI_Comm_free(&comm_dup);
- } /* end if */
-
- FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5FD_mpiposix_open() */
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_mpiposix_close
- *
- * Purpose: Closes a file.
- *
- * Return: SUCCEED/FAIL
- *
- * Programmer: Quincey Koziol
- * Thursday, July 11, 2002
- *
- *-------------------------------------------------------------------------
- */
-static herr_t
-H5FD_mpiposix_close(H5FD_t *_file)
-{
- H5FD_mpiposix_t *file = (H5FD_mpiposix_t*)_file;
- herr_t ret_value = SUCCEED; /* Return value */
-
- FUNC_ENTER_NOAPI_NOINIT
-
- HDassert(file);
- HDassert(H5FD_MPIPOSIX == file->pub.driver_id);
-
- /* Close the unix file */
- if(HDclose(file->fd) < 0)
- HGOTO_ERROR(H5E_IO, H5E_CANTCLOSEFILE, FAIL, "unable to close file")
-
- /* make sure all processes have closed the file before returning. */
- MPI_Barrier(file->comm);
- /* Clean up other stuff */
- MPI_Comm_free(&file->comm);
- H5MM_xfree(file);
-
-done:
- FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5FD_mpiposix_close() */
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_mpiposix_cmp
- *
- * Purpose: Compares two files belonging to this driver using an
- * arbitrary (but consistent) ordering.
- *
- * Return: Success: A value like strcmp()
- * Failure: never fails (arguments were checked by the caller).
- *
- * Programmer: Quincey Koziol
- * Thursday, July 11, 2002
- *
- *-------------------------------------------------------------------------
- */
-static int
-H5FD_mpiposix_cmp(const H5FD_t *_f1, const H5FD_t *_f2)
-{
- const H5FD_mpiposix_t *f1 = (const H5FD_mpiposix_t*)_f1;
- const H5FD_mpiposix_t *f2 = (const H5FD_mpiposix_t*)_f2;
- int ret_value = 0;
-
- FUNC_ENTER_NOAPI_NOINIT_NOERR
-
-#ifdef H5_HAVE_WIN32_API
- if(f1->dwVolumeSerialNumber < f2->dwVolumeSerialNumber) HGOTO_DONE(-1)
- if(f1->dwVolumeSerialNumber > f2->dwVolumeSerialNumber) HGOTO_DONE(1)
-
- if(f1->nFileIndexHigh < f2->nFileIndexHigh) HGOTO_DONE(-1)
- if(f1->nFileIndexHigh > f2->nFileIndexHigh) HGOTO_DONE(1)
-
- if(f1->nFileIndexLow < f2->nFileIndexLow) HGOTO_DONE(-1)
- if(f1->nFileIndexLow > f2->nFileIndexLow) HGOTO_DONE(1)
-#else /* H5_HAVE_WIN32_API */
-#ifdef H5_DEV_T_IS_SCALAR
- if(f1->device < f2->device) HGOTO_DONE(-1)
- if(f1->device > f2->device) HGOTO_DONE(1)
-#else /* H5_DEV_T_IS_SCALAR */
- /* If dev_t isn't a scalar value on this system, just use memcmp to
- * determine if the values are the same or not. The actual return value
- * shouldn't really matter...
- */
- if(HDmemcmp(&(f1->device),&(f2->device),sizeof(dev_t)) < 0) HGOTO_DONE(-1)
- if(HDmemcmp(&(f1->device),&(f2->device),sizeof(dev_t)) > 0) HGOTO_DONE(1)
-#endif /* H5_DEV_T_IS_SCALAR */
-#ifdef H5_VMS
- if(HDmemcmp(&(f1->inode), &(f2->inode), 3 * sizeof(ino_t)) < 0) HGOTO_DONE(-1)
- if(HDmemcmp(&(f1->inode), &(f2->inode), 3 * sizeof(ino_t)) > 0) HGOTO_DONE(1)
-#else /* H5_VMS */
- if(f1->inode < f2->inode) HGOTO_DONE(-1)
- if(f1->inode > f2->inode) HGOTO_DONE(1)
-#endif /* H5_VMS */
-#endif /* H5_HAVE_WIN32_API */
-
-done:
- FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5FD_mpiposix_cmp() */
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_mpiposix_query
- *
- * Purpose: Set the flags that this VFL driver is capable of supporting.
- * (listed in H5FDpublic.h)
- *
- * Return: SUCCEED (can't fail)
- *
- * Programmer: Quincey Koziol
- * Thursday, July 11, 2002
- *
- *-------------------------------------------------------------------------
- */
-static herr_t
-H5FD_mpiposix_query(const H5FD_t UNUSED *_file, unsigned long *flags /* out */)
-{
- FUNC_ENTER_NOAPI_NOINIT_NOERR
-
- /* Set the VFL feature flags that this driver supports */
- if(flags) {
- *flags=0;
- *flags |= H5FD_FEAT_AGGREGATE_METADATA; /* OK to aggregate metadata allocations */
- *flags |= H5FD_FEAT_AGGREGATE_SMALLDATA; /* OK to aggregate "small" raw data allocations */
- } /* end if */
-
- FUNC_LEAVE_NOAPI(SUCCEED)
-} /* end H5FD_mpiposix_query() */
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_mpiposix_get_eoa
- *
- * Purpose: Gets the end-of-address marker for the file. The EOA marker
- * is the first address past the last byte allocated in the
- * format address space.
- *
- * Return: Success: The end-of-address marker.
- * Failure: HADDR_UNDEF
- *
- * Programmer: Quincey Koziol
- * Thursday, July 11, 2002
- *
- *-------------------------------------------------------------------------
- */
-static haddr_t
-H5FD_mpiposix_get_eoa(const H5FD_t *_file, H5FD_mem_t UNUSED type)
-{
- const H5FD_mpiposix_t *file = (const H5FD_mpiposix_t*)_file;
-
- FUNC_ENTER_NOAPI_NOINIT_NOERR
-
- HDassert(file);
- HDassert(H5FD_MPIPOSIX == file->pub.driver_id);
-
- FUNC_LEAVE_NOAPI(file->eoa)
-} /* end H5FD_mpiposix_get_eoa() */
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_mpiposix_set_eoa
- *
- * Purpose: Set the end-of-address marker for the file. This function is
- * called shortly after an existing HDF5 file is opened in order
- * to tell the driver where the end of the HDF5 data is located.
- *
- * Return: SUCCEED (can't fail)
- *
- * Programmer: Quincey Koziol
- * Thursday, July 11, 2002
- *
- *-------------------------------------------------------------------------
- */
-static herr_t
-H5FD_mpiposix_set_eoa(H5FD_t *_file, H5FD_mem_t UNUSED type, haddr_t addr)
-{
- H5FD_mpiposix_t *file = (H5FD_mpiposix_t*)_file;
-
- FUNC_ENTER_NOAPI_NOINIT_NOERR
-
- HDassert(file);
- HDassert(H5FD_MPIPOSIX == file->pub.driver_id);
-
- file->eoa = addr;
-
- FUNC_LEAVE_NOAPI(SUCCEED)
-} /* end H5FD_mpi_posix_set_eoa() */
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_mpiposix_get_eof
- *
- * Purpose: Gets the end-of-file marker for the file. The EOF marker
- * is the real size of the file.
- *
- * The MPIPOSIX driver doesn't bother keeping this field updated
- * since that's a relatively expensive operation. Fortunately
- * the library only needs the EOF just after the file is opened
- * in order to determine whether the file is empty, truncated,
- * or okay.
- *
- * Return: Success: The end-of-address marker.
- * Failure: HADDR_UNDEF
- *
- * Programmer: Quincey Koziol
- * Thursday, July 11, 2002
- *
- *-------------------------------------------------------------------------
- */
-static haddr_t
-H5FD_mpiposix_get_eof(const H5FD_t *_file)
-{
- const H5FD_mpiposix_t *file = (const H5FD_mpiposix_t*)_file;
-
- FUNC_ENTER_NOAPI_NOINIT_NOERR
-
- HDassert(file);
- HDassert(H5FD_MPIPOSIX == file->pub.driver_id);
-
- FUNC_LEAVE_NOAPI(MAX(file->eof, file->eoa))
-} /* end H5FD_mpiposix_get_eof() */
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_mpiposix_get_handle
- *
- * Purpose: Returns the file handle of MPI-POSIX file driver.
- *
- * Returns: SUCCEED/FAIL
- *
- * Programmer: Raymond Lu
- * Sept. 16, 2002
- *
- *-------------------------------------------------------------------------
- */
-static herr_t
-H5FD_mpiposix_get_handle(H5FD_t *_file, hid_t UNUSED fapl, void** file_handle)
-{
- H5FD_mpiposix_t *file = (H5FD_mpiposix_t *)_file;
- herr_t ret_value = SUCCEED;
-
- FUNC_ENTER_NOAPI_NOINIT
-
- if(!file_handle)
- HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "file handle not valid")
-
- *file_handle = &(file->fd);
-
-done:
- FUNC_LEAVE_NOAPI(ret_value)
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_mpiposix_read
- *
- * Purpose: Reads SIZE bytes of data from FILE beginning at address ADDR
- * into buffer BUF according to data transfer properties in
- * DXPL_ID using potentially complex file and buffer types to
- * effect the transfer.
- *
- * Reading past the end of the file returns zeros instead of
- * failing.
- *
- * Return: Success: Non-negative. Result is stored in caller-supplied
- * buffer BUF.
- * Failure: Negative, Contents of buffer BUF are undefined.
- *
- * Programmer: Quincey Koziol
- * Thursday, July 11, 2002
- *
- *-------------------------------------------------------------------------
- */
-static herr_t
-H5FD_mpiposix_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id,
- haddr_t addr, size_t size, void *buf/*out*/)
-{
- H5FD_mpiposix_t *file = (H5FD_mpiposix_t*)_file;
- ssize_t nbytes; /* Number of bytes read each I/O call */
- herr_t ret_value = SUCCEED;
-
- FUNC_ENTER_NOAPI_NOINIT
-
- HDassert(file);
- HDassert(H5FD_MPIPOSIX == file->pub.driver_id);
- HDassert(buf);
-
- /* Check for overflow conditions */
- if (HADDR_UNDEF == addr)
- HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "addr undefined")
- if (REGION_OVERFLOW(addr, size))
- HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr overflow")
- if((addr + size) > file->eoa)
- HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr overflow")
-
-#ifdef REPORT_IO
- {
- int commrank;
- MPI_Comm_rank(MPI_COMM_WORLD, &commrank);
- HDfprintf(stderr, "read: rank=%d file=0x%08lx type=%d, addr=%a size=%Zu\n",
- commrank, (unsigned long)file, (int)type, addr, size);
- }
-#endif
-
- /* Seek to the correct location */
- if(addr != file->pos || OP_READ != file->op) {
- if(HDlseek(file->fd, (HDoff_t)addr, SEEK_SET) < 0)
- HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to seek to proper position")
- } /* end if */
-
- /* Read data, being careful of interrupted system calls, partial results,
- * and the end of the file.
- */
- while(size > 0) {
-
- h5_posix_io_t bytes_in = 0; /* # of bytes to read */
- h5_posix_io_ret_t bytes_read = -1; /* # of bytes actually read */
-
- /* Trying to read more bytes than the return type can handle is
- * undefined behavior in POSIX.
- */
- if(size > H5_POSIX_MAX_IO_BYTES)
- bytes_in = H5_POSIX_MAX_IO_BYTES;
- else
- bytes_in = (h5_posix_io_t)size;
-
- do {
- bytes_read = HDread(file->fd, buf, bytes_in);
- } while(-1 == bytes_read && EINTR == errno);
-
- if(-1 == bytes_read) { /* error */
- int myerrno = errno;
- time_t mytime = HDtime(NULL);
- HDoff_t myoffset = HDlseek(file->fd, (HDoff_t)0, SEEK_CUR);
-
- HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "file read failed: time = %s, file descriptor = %d, errno = %d, error message = '%s', buf = %p, total read size = %llu, bytes this sub-read = %llu, bytes actually read = %llu, offset = %llu", HDctime(&mytime), file->fd, myerrno, HDstrerror(myerrno), buf, (unsigned long long)size, (unsigned long long)bytes_in, (unsigned long long)bytes_read, (unsigned long long)myoffset);
- } /* end if */
-
- if(0 == bytes_read) {
- /* end of file but not end of format address space */
- HDmemset(buf, 0, size);
- break;
- } /* end if */
-
- HDassert(bytes_read >= 0);
- HDassert((size_t)bytes_read <= size);
-
- size -= (size_t)bytes_read;
- addr += (haddr_t)bytes_read;
- buf = (char *)buf + bytes_read;
- } /* end while */
-
- /* Update current position */
- file->pos = addr;
- file->op = OP_READ;
-
-done:
- /* Check for error */
- if(ret_value < 0) {
- /* Reset last file I/O information */
- file->pos = HADDR_UNDEF;
- file->op = OP_UNKNOWN;
- } /* end if */
-
- FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5FD_mpiposix_read() */
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_mpiposix_write
- *
- * Purpose: Writes SIZE bytes of data to FILE beginning at address ADDR
- * from buffer BUF according to data transfer properties in
- * DXPL_ID using potentially complex file and buffer types to
- * effect the transfer.
- *
- * Return: SUCCEED/FAIL
- *
- * Programmer: Quincey Koziol
- * Thursday, July 11, 2002
- *
- *-------------------------------------------------------------------------
- */
-static herr_t
-H5FD_mpiposix_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr,
- size_t size, const void *buf)
-{
- H5FD_mpiposix_t *file = (H5FD_mpiposix_t*)_file;
-#if 0 /* JRM */
- int mpi_code; /* MPI return code */
-#endif /* JRM */
- ssize_t nbytes; /* Number of bytes written each I/O call */
- H5P_genplist_t *plist; /* Property list pointer */
- herr_t ret_value = SUCCEED; /* Return value */
-
- FUNC_ENTER_NOAPI_NOINIT
-
- HDassert(file);
- HDassert(H5FD_MPIPOSIX == file->pub.driver_id);
- HDassert(H5I_GENPROP_LST == H5I_get_type(dxpl_id));
- HDassert(TRUE == H5P_isa_class(dxpl_id,H5P_DATASET_XFER));
- HDassert(buf);
-
- /* Check for overflow conditions */
- if (HADDR_UNDEF == addr)
- HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "addr undefined")
- if (REGION_OVERFLOW(addr, size))
- HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr overflow")
- if ((addr + size) > file->eoa)
- HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr overflow")
-
- /* Obtain the data transfer properties */
- if(NULL == (plist = H5I_object(dxpl_id)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list")
-
- /* Metadata specific actions */
- /* All metadata is now written from process 0 -- thus this function
- * needs to be re-written to reflect this. For now I have simply
- * commented out the code that attempts to synchronize metadata
- * writes between processes, but we should really just flag an error
- * whenever any process other than process 0 attempts to write
- * metadata.
- * -- JRM 9/1/05
- */
- if(type != H5FD_MEM_DRAW) {
- unsigned block_before_meta_write = 0; /* Whether to block before a metadata write */
-
- /* Check if we need to synchronize all processes before attempting
- * metadata write (Prevents race condition where the process writing
- * the metadata goes ahead and writes the metadata to the file before
- * all the processes have read the data, "transmitting" data from the
- * "future" to the reading process. -QAK )
- *
- * The only time we don't want to block before a metadata write is when
- * we are flushing out a bunch of metadata. Then, we block before the
- * first write and don't block for further writes in the sequence.
- */
- if(H5P_exist_plist(plist,H5AC_BLOCK_BEFORE_META_WRITE_NAME) > 0)
- if(H5P_get(plist,H5AC_BLOCK_BEFORE_META_WRITE_NAME,&block_before_meta_write) < 0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get H5AC property")
-
-#if 0 /* JRM */
- if(block_before_meta_write)
- if (MPI_SUCCESS != (mpi_code = MPI_Barrier(file->comm)))
- HMPI_GOTO_ERROR(FAIL, "MPI_Barrier failed", mpi_code)
-#endif /* JRM */
-
-#if 0 /* JRM -- 3/23/10 */ /* this is no longer always the case */
- /* Only one process will do the actual write if all procs in comm write same metadata */
- if (file->mpi_rank != H5_PAR_META_WRITE)
- HGOTO_DONE(SUCCEED) /* skip the actual write */
-#endif /* JRM */
- } /* end if */
-
-#ifdef REPORT_IO
- {
- int commrank;
- MPI_Comm_rank(MPI_COMM_WORLD, &commrank);
- HDfprintf(stderr, "write: rank=%d file=0x%08lx type=%d, addr=%a size=%Zu %s\n",
- commrank, (unsigned long)file, (int)type, addr, size,
- 0 == file->naccess ? "(FIRST ACCESS)" : "");
- }
-#endif
-
- if (0 == file->naccess++) {
- /* First write access to this file */
-#ifdef H5_HAVE_GPFS
- if (file->use_gpfs) {
- struct {
- gpfsFcntlHeader_t hdr;
- gpfsMultipleAccessRange_t mar;
- } hint;
- HDmemset(&hint, 0, sizeof hint);
- hint.hdr.totalLength = sizeof hint;
- hint.hdr.fcntlVersion = GPFS_FCNTL_CURRENT_VERSION;
- hint.mar.structLen = sizeof hint.mar;
- hint.mar.structType = GPFS_MULTIPLE_ACCESS_RANGE;
- hint.mar.accRangeCnt = 1;
- hint.mar.accRangeArray[0].blockNumber = addr / file->blksize;
- hint.mar.accRangeArray[0].start = addr % file->blksize;
- hint.mar.accRangeArray[0].length = MIN(file->blksize-hint.mar.accRangeArray[0].start, size);
- hint.mar.accRangeArray[0].isWrite = 1;
- if (gpfs_fcntl(file->fd, &hint)<0)
- HGOTO_ERROR(H5E_FILE, H5E_FCNTL, NULL, "failed to send hints to GPFS")
- }
-#endif /* H5_HAVE_GPFS */
- }
-
- /* Seek to the correct location */
- if(addr != file->pos || OP_WRITE != file->op) {
- if(HDlseek(file->fd, (HDoff_t)addr, SEEK_SET) < 0)
- HSYS_GOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to seek to proper position")
- } /* end if */
-
- /* Write data, being careful of interrupted system calls, partial results,
- * and the end of the file.
- */
- while(size > 0) {
-
- h5_posix_io_t bytes_in = 0; /* # of bytes to write */
- h5_posix_io_ret_t bytes_wrote = -1; /* # of bytes actually written */
-
- /* Trying to write more bytes than the return type can handle is
- * undefined behavior in POSIX.
- */
- if(size > H5_POSIX_MAX_IO_BYTES)
- bytes_in = H5_POSIX_MAX_IO_BYTES;
- else
- bytes_in = (h5_posix_io_t)size;
-
- do {
- bytes_wrote = HDwrite(file->fd, buf, bytes_in);
- } while(-1 == bytes_wrote && EINTR == errno);
-
- if(-1 == bytes_wrote) { /* error */
- int myerrno = errno;
- time_t mytime = HDtime(NULL);
- HDoff_t myoffset = HDlseek(file->fd, (HDoff_t)0, SEEK_CUR);
-
- HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "file write failed: time = %s, file descriptor = %d, errno = %d, error message = '%s', buf = %p, total write size = %llu, bytes this sub-write = %llu, bytes actually written = %llu, offset = %llu", HDctime(&mytime), file->fd, myerrno, HDstrerror(myerrno), buf, (unsigned long long)size, (unsigned long long)bytes_in, (unsigned long long)bytes_wrote, (unsigned long long)myoffset);
- } /* end if */
-
- if(0 == bytes_wrote) {
- /* end of file but not end of format address space */
- HDmemset(buf, 0, size);
- break;
- } /* end if */
-
- HDassert(bytes_wrote >= 0);
- HDassert((size_t)bytes_wrote <= size);
-
- size -= (size_t)bytes_wrote;
- addr += (haddr_t)bytes_wrote;
- buf = (char *)buf + bytes_wrote;
- } /* end while */
-
- /* Update current position */
- file->pos = addr;
- file->op = OP_WRITE;
-
-done:
- /* Check for error */
- if(ret_value < 0) {
- /* Reset last file I/O information */
- file->pos = HADDR_UNDEF;
- file->op = OP_UNKNOWN;
- } /* end if */
-#if 0 /* JRM */
- /* Since metadata writes are now done by process 0 only, this broadcast
- * is no longer needed. I leave it in and commented out to remind us
- * that we need to re-work this function to reflect this reallity.
- *
- * -- JRM 9/1/05
- */
-
- /* Guard against getting into metadata broadcast in failure cases */
- else {
- /* when only one process writes, need to broadcast the ret_value to other processes */
- if (type != H5FD_MEM_DRAW) {
- if (MPI_SUCCESS != (mpi_code= MPI_Bcast(&ret_value, sizeof(ret_value), MPI_BYTE, H5_PAR_META_WRITE, file->comm)))
- HMPI_GOTO_ERROR(FAIL, "MPI_Bcast failed", mpi_code)
- } /* end if */
- } /* end else */
-#endif /* JRM */
-
- FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5FD_mpiposix_write() */
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_mpiposix_truncate
- *
- * Purpose: Makes sure that the true file size is the same (or larger)
- * than the end-of-address.
- *
- * Return: SUCCEED/FAIL
- *
- * Programmer: Quincey Koziol
- * Thursday, July 11, 2002
- *
- *-------------------------------------------------------------------------
- */
-static herr_t
-H5FD_mpiposix_truncate(H5FD_t *_file, hid_t UNUSED dxpl_id, hbool_t UNUSED closing)
-{
- H5FD_mpiposix_t *file = (H5FD_mpiposix_t*)_file;
- herr_t ret_value = SUCCEED; /* Return value */
- int mpi_code; /* MPI return code */
-
- FUNC_ENTER_NOAPI_NOINIT
-
- HDassert(file);
- HDassert(H5FD_MPIPOSIX == file->pub.driver_id);
-
- /* Extend the file to make sure it's large enough */
- if(file->eoa > file->last_eoa) {
- /* Use the round-robin process to truncate (extend) the file */
- if(file->mpi_rank == H5_PAR_META_WRITE) {
-
-#ifdef H5_HAVE_WIN32_API
- LARGE_INTEGER li; /* 64-bit (union) integer for SetFilePointer() call */
- DWORD dwPtrLow; /* Low-order pointer bits from SetFilePointer()
- * Only used as an error code here.
- */
- DWORD dwError; /* DWORD error code from GetLastError() */
- BOOL bError; /* Boolean error flag */
-
- /* Windows uses this odd QuadPart union for 32/64-bit portability */
- li.QuadPart = (__int64)file->eoa;
-
- /* Extend the file to make sure it's large enough.
- *
- * Since INVALID_SET_FILE_POINTER can technically be a valid return value
- * from SetFilePointer(), we also need to check GetLastError().
- */
- dwPtrLow = SetFilePointer(file->hFile, li.LowPart, &li.HighPart, FILE_BEGIN);
- if(INVALID_SET_FILE_POINTER == dwPtrLow) {
- dwError = GetLastError();
- if(dwError != NO_ERROR )
- HGOTO_ERROR(H5E_FILE, H5E_FILEOPEN, FAIL, "unable to set file pointer")
- }
-
- bError = SetEndOfFile(file->hFile);
- if(0 == bError)
- HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to extend file properly")
-#else /* H5_HAVE_WIN32_API */
-#ifdef H5_VMS
- /* Reset seek offset to the beginning of the file, so that the file isn't
- * re-extended later. This may happen on Open VMS. */
- if(-1 == HDlseek(file->fd, (HDoff_t)0, SEEK_SET))
- HSYS_GOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to seek to proper position")
-#endif /* H5_VMS */
- if(-1 == HDftruncate(file->fd, (HDoff_t)file->eoa))
- HSYS_GOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to extend file properly")
-#endif /* H5_HAVE_WIN32_API */
- } /* end if */
-
- /* Don't let any proc return until all have extended the file.
- * (Prevents race condition where some processes go ahead and write
- * more data to the file before all the processes have finished making
- * it the shorter length, potentially truncating the file and dropping
- * the new data written)
- */
- if(MPI_SUCCESS != (mpi_code = MPI_Barrier(file->comm)))
- HMPI_GOTO_ERROR(FAIL, "MPI_Barrier failed", mpi_code)
-
- /* Update the 'last' eoa and eof values */
- file->last_eoa = file->eoa;
- file->eof = file->eoa;
-
- /* Reset last file I/O information */
- file->pos = HADDR_UNDEF;
- file->op = OP_UNKNOWN;
- } /* end if */
-
-done:
- FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5FD_mpiposix_truncate() */
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_mpiposix_mpi_rank
- *
- * Purpose: Returns the MPI rank for a process
- *
- * Return: MPI rank. Cannot report failure.
- *
- * Programmer: Quincey Koziol
- * Thursday, July 11, 2002
- *
- *-------------------------------------------------------------------------
- */
-static int
-H5FD_mpiposix_mpi_rank(const H5FD_t *_file)
-{
- const H5FD_mpiposix_t *file = (const H5FD_mpiposix_t*)_file;
-
- FUNC_ENTER_NOAPI_NOINIT_NOERR
-
- HDassert(file);
- HDassert(H5FD_MPIPOSIX == file->pub.driver_id);
-
- FUNC_LEAVE_NOAPI(file->mpi_rank)
-} /* end H5FD_mpiposix_mpi_rank() */
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_mpiposix_mpi_size
- *
- * Purpose: Returns the number of MPI processes
- *
- * Return: The number of MPI processes. Cannot report failure.
- *
- * Programmer: Quincey Koziol
- * Thursday, July 11, 2002
- *
- *-------------------------------------------------------------------------
- */
-static int
-H5FD_mpiposix_mpi_size(const H5FD_t *_file)
-{
- const H5FD_mpiposix_t *file = (const H5FD_mpiposix_t*)_file;
-
- FUNC_ENTER_NOAPI_NOINIT_NOERR
-
- HDassert(file);
- HDassert(H5FD_MPIPOSIX == file->pub.driver_id);
-
- FUNC_LEAVE_NOAPI(file->mpi_size)
-} /* end H5FD_mpiposix_mpi_size() */
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_mpiposix_communicator
- *
- * Purpose: Returns the MPI communicator for the file.
- *
- * Return: The MPI communicator. Cannot report failure.
- *
- * Programmer: Quincey Koziol
- * Thursday, July 11, 2002
- *
- *-------------------------------------------------------------------------
- */
-static MPI_Comm
-H5FD_mpiposix_communicator(const H5FD_t *_file)
-{
- const H5FD_mpiposix_t *file = (const H5FD_mpiposix_t*)_file;
-
- FUNC_ENTER_NOAPI_NOINIT_NOERR
-
- HDassert(file);
- HDassert(H5FD_MPIPOSIX == file->pub.driver_id);
-
- FUNC_LEAVE_NOAPI(file->comm)
-} /* end H5FD_mpi_posix_communicator() */
-
-#endif /*H5_HAVE_PARALLEL*/
diff --git a/src/H5FDmpiposix.h b/src/H5FDmpiposix.h
deleted file mode 100644
index fdf30a1..0000000
--- a/src/H5FDmpiposix.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * Copyright by The HDF Group. *
- * Copyright by the Board of Trustees of the University of Illinois. *
- * All rights reserved. *
- * *
- * This file is part of HDF5. The full HDF5 copyright notice, including *
- * terms governing use, modification, and redistribution, is contained in *
- * the files COPYING and Copyright.html. COPYING can be found at the root *
- * of the source code distribution tree; Copyright.html can be found at the *
- * root level of an installed copy of the electronic HDF5 document set and *
- * is linked from the top-level documents page. It can also be found at *
- * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from help@hdfgroup.org. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-/*
- * Programmer: Quincey Koziol <koziol@hdfgroup.org>
- * Thursday, July 11, 2002
- *
- * Purpose: The public header file for the mpiposix driver.
- */
-
-#ifndef __H5FDmpiposix_H
-#define __H5FDmpiposix_H
-
-#ifdef H5_HAVE_PARALLEL
-# define H5FD_MPIPOSIX (H5FD_mpiposix_init())
-#else
-# define H5FD_MPIPOSIX (-1)
-#endif
-
-/* Macros */
-
-#ifdef H5_HAVE_PARALLEL
-
-/* Function prototypes */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-H5_DLL hid_t H5FD_mpiposix_init(void);
-H5_DLL void H5FD_mpiposix_term(void);
-H5_DLL herr_t H5Pset_fapl_mpiposix(hid_t fapl_id, MPI_Comm comm, hbool_t use_gpfs);
-H5_DLL herr_t H5Pget_fapl_mpiposix(hid_t fapl_id, MPI_Comm *comm/*out*/, hbool_t *use_gpfs/*out*/);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /*H5_HAVE_PARALLEL*/
-
-#endif /* __H5FDmpiposix_H */
diff --git a/src/H5FDprivate.h b/src/H5FDprivate.h
index 41c6b38..cdd2023 100644
--- a/src/H5FDprivate.h
+++ b/src/H5FDprivate.h
@@ -43,12 +43,9 @@
#define IS_H5FD_MPIO(f) /* (H5F_t *f) */ \
(H5FD_MPIO==H5F_DRIVER_ID(f))
-#define IS_H5FD_MPIPOSIX(f) /* (H5F_t *f) */ \
- (H5FD_MPIPOSIX==H5F_DRIVER_ID(f))
-
/* Single macro to check for all file drivers that use MPI */
#define IS_H5FD_MPI(file) \
- (IS_H5FD_MPIO(file) || IS_H5FD_MPIPOSIX(file))
+ (IS_H5FD_MPIO(file))
#ifdef H5_HAVE_PARALLEL
/* ======== Temporary data transfer properties ======== */
diff --git a/src/H5Ppublic.h b/src/H5Ppublic.h
index 54999b9..10fa782 100644
--- a/src/H5Ppublic.h
+++ b/src/H5Ppublic.h
@@ -158,11 +158,10 @@ typedef enum H5D_mpio_no_collective_cause_t {
H5D_MPIO_SET_INDEPENDENT = 0x01,
H5D_MPIO_DATATYPE_CONVERSION = 0x02,
H5D_MPIO_DATA_TRANSFORMS = 0x04,
- H5D_MPIO_SET_MPIPOSIX = 0x08,
+ H5D_MPIO_MPI_OPT_TYPES_ENV_VAR_DISABLED = 0x08,
H5D_MPIO_NOT_SIMPLE_OR_SCALAR_DATASPACES = 0x10,
- H5D_MPIO_POINT_SELECTIONS = 0x20,
- H5D_MPIO_NOT_CONTIGUOUS_OR_CHUNKED_DATASET = 0x40,
- H5D_MPIO_FILTERS = 0x80
+ H5D_MPIO_NOT_CONTIGUOUS_OR_CHUNKED_DATASET = 0x20,
+ H5D_MPIO_FILTERS = 0x40
} H5D_mpio_no_collective_cause_t;
/********************/
diff --git a/src/H5S.c b/src/H5S.c
index 1ba0248..65588bc 100644
--- a/src/H5S.c
+++ b/src/H5S.c
@@ -67,10 +67,6 @@ static H5S_t *H5S_decode(const unsigned char *buf);
/*****************************/
/* Library Private Variables */
/*****************************/
-#ifdef H5_HAVE_PARALLEL
-/* Global vars whose value can be set from environment variable also */
-hbool_t H5S_mpi_opt_types_g = TRUE;
-#endif /* H5_HAVE_PARALLEL */
/*******************/
@@ -119,15 +115,6 @@ H5S_init_interface(void)
if(H5I_register_type(H5I_DATASPACE_CLS) < 0)
HGOTO_ERROR(H5E_DATASPACE, H5E_CANTINIT, FAIL, "unable to initialize interface")
-#ifdef H5_HAVE_PARALLEL
- {
- /* Allow MPI buf-and-file-type optimizations? */
- const char *s = HDgetenv ("HDF5_MPI_OPT_TYPES");
- if (s && HDisdigit(*s))
- H5S_mpi_opt_types_g = (hbool_t)HDstrtol (s, NULL, 0);
- }
-#endif /* H5_HAVE_PARALLEL */
-
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5S_init_interface() */
diff --git a/src/H5Sprivate.h b/src/H5Sprivate.h
index be8a28f..44cd6c3 100644
--- a/src/H5Sprivate.h
+++ b/src/H5Sprivate.h
@@ -268,10 +268,6 @@ H5_DLL herr_t H5S_select_iter_next(H5S_sel_iter_t *sel_iter, size_t nelem);
H5_DLL herr_t H5S_select_iter_release(H5S_sel_iter_t *sel_iter);
#ifdef H5_HAVE_PARALLEL
-/* Global vars whose value comes from environment variable */
-/* (Defined in H5S.c) */
-H5_DLLVAR hbool_t H5S_mpi_opt_types_g;
-
H5_DLL herr_t H5S_mpio_space_type(const H5S_t *space, size_t elmt_size,
/* out: */ MPI_Datatype *new_type,
int *count,
diff --git a/src/H5config.h.in b/src/H5config.h.in
index 02bafd8..76de6c6 100644
--- a/src/H5config.h.in
+++ b/src/H5config.h.in
@@ -174,12 +174,6 @@
/* Define to 1 if you have the `get_fpc_csr' function. */
#undef HAVE_GET_FPC_CSR
-/* Define if we have GPFS support */
-#undef HAVE_GPFS
-
-/* Define to 1 if you have the <gpfs.h> header file. */
-#undef HAVE_GPFS_H
-
/* Define if library will contain instrumentation to detect correct
optimization operation */
#undef HAVE_INSTRUMENTED_LIBRARY
diff --git a/src/H5trace.c b/src/H5trace.c
index f7d48c7..b8f0b6a 100644
--- a/src/H5trace.c
+++ b/src/H5trace.c
@@ -544,48 +544,45 @@ H5_trace(const double *returning, const char *func, const char *type, ...)
} /* end if */
else {
H5D_mpio_no_collective_cause_t nocol_cause_mode = (H5D_mpio_no_collective_cause_t)va_arg(ap, int);
+ hbool_t flag_already_displayed = FALSE;
- switch(nocol_cause_mode) {
- case H5D_MPIO_COLLECTIVE:
- fprintf(out, "H5D_MPIO_COLLECTIVE");
- break;
-
- case H5D_MPIO_SET_INDEPENDENT:
- fprintf(out, "H5D_MPIO_SET_INDEPENDENT");
- break;
-
- case H5D_MPIO_DATATYPE_CONVERSION:
- fprintf(out, "H5D_MPIO_DATATYPE_CONVERSION");
- break;
-
- case H5D_MPIO_DATA_TRANSFORMS:
- fprintf(out, "H5D_MPIO_DATA_TRANSFORMS");
- break;
-
- case H5D_MPIO_SET_MPIPOSIX:
- fprintf(out, "H5D_MPIO_SET_MPIPOSIX");
- break;
-
- case H5D_MPIO_NOT_SIMPLE_OR_SCALAR_DATASPACES:
- fprintf(out, "H5D_MPIO_NOT_SIMPLE_OR_SCALAR_DATASPACES");
- break;
-
- case H5D_MPIO_POINT_SELECTIONS:
- fprintf(out, "H5D_MPIO_POINT_SELECTIONS");
- break;
-
- case H5D_MPIO_NOT_CONTIGUOUS_OR_CHUNKED_DATASET:
- fprintf(out, "H5D_MPIO_NOT_CONTIGUOUS_OR_CHUNKED_DATASET");
- break;
-
- case H5D_MPIO_FILTERS:
- fprintf(out, "H5D_MPIO_FILTERS");
- break;
+ /* Check for all bit-flags which might be set */
+ if(nocol_cause_mode & H5D_MPIO_COLLECTIVE) {
+ fprintf(out, "H5D_MPIO_COLLECTIVE");
+ flag_already_displayed = TRUE;
+ } /* end if */
+ if(nocol_cause_mode & H5D_MPIO_SET_INDEPENDENT) {
+ fprintf(out, "%sH5D_MPIO_SET_INDEPENDENT", flag_already_displayed ? " | " : "");
+ flag_already_displayed = TRUE;
+ } /* end if */
+ if(nocol_cause_mode & H5D_MPIO_DATATYPE_CONVERSION) {
+ fprintf(out, "%sH5D_MPIO_DATATYPE_CONVERSION", flag_already_displayed ? " | " : "");
+ flag_already_displayed = TRUE;
+ } /* end if */
+ if(nocol_cause_mode & H5D_MPIO_DATA_TRANSFORMS) {
+ fprintf(out, "%sH5D_MPIO_DATA_TRANSFORMS", flag_already_displayed ? " | " : "");
+ flag_already_displayed = TRUE;
+ } /* end if */
+ if(nocol_cause_mode & H5D_MPIO_MPI_OPT_TYPES_ENV_VAR_DISABLED) {
+ fprintf(out, "%sH5D_MPIO_MPI_OPT_TYPES_ENV_VAR_DISABLED", flag_already_displayed ? " | " : "");
+ flag_already_displayed = TRUE;
+ } /* end if */
+ if(nocol_cause_mode & H5D_MPIO_NOT_SIMPLE_OR_SCALAR_DATASPACES) {
+ fprintf(out, "%sH5D_MPIO_NOT_SIMPLE_OR_SCALAR_DATASPACES", flag_already_displayed ? " | " : "");
+ flag_already_displayed = TRUE;
+ } /* end if */
+ if(nocol_cause_mode & H5D_MPIO_NOT_CONTIGUOUS_OR_CHUNKED_DATASET) {
+ fprintf(out, "%sH5D_MPIO_NOT_CONTIGUOUS_OR_CHUNKED_DATASET", flag_already_displayed ? " | " : "");
+ flag_already_displayed = TRUE;
+ } /* end if */
+ if(nocol_cause_mode & H5D_MPIO_FILTERS) {
+ fprintf(out, "%sH5D_MPIO_FILTERS", flag_already_displayed ? " | " : "");
+ flag_already_displayed = TRUE;
+ } /* end if */
- default:
- fprintf(out, "%ld", (long)nocol_cause_mode);
- break;
- } /* end switch */
+ /* Display '<none>' if there's no flags set */
+ if(!flag_already_displayed)
+ fprintf(out, "<none>");
} /* end else */
break;
diff --git a/src/Makefile.am b/src/Makefile.am
index e7c1968..b19f205 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -56,7 +56,7 @@ libhdf5_la_SOURCES= H5.c H5checksum.c H5dbg.c H5system.c H5timer.c H5trace.c \
H5Fsfile.c H5Fsuper.c H5Fsuper_cache.c H5Ftest.c \
H5FD.c H5FDcore.c \
H5FDdirect.c H5FDfamily.c H5FDint.c H5FDlog.c H5FDmpi.c H5FDmpio.c \
- H5FDmpiposix.c H5FDmulti.c H5FDsec2.c H5FDspace.c H5FDstdio.c \
+ H5FDmulti.c H5FDsec2.c H5FDspace.c H5FDstdio.c \
H5FL.c H5FO.c H5FS.c H5FScache.c H5FSdbg.c H5FSsection.c H5FSstat.c H5FStest.c \
H5G.c H5Gbtree2.c H5Gcache.c \
H5Gcompact.c H5Gdense.c H5Gdeprec.c H5Gent.c \
@@ -108,8 +108,9 @@ libhdf5_la_SOURCES= H5.c H5checksum.c H5dbg.c H5system.c H5timer.c H5trace.c \
include_HEADERS = hdf5.h H5api_adpt.h H5overflow.h H5pubconf.h H5public.h H5version.h \
H5Apublic.h H5ACpublic.h \
H5Cpublic.h H5Dpublic.h \
- H5Epubgen.h H5Epublic.h H5Fpublic.h H5FDpublic.h H5FDcore.h H5FDdirect.h \
- H5FDfamily.h H5FDlog.h H5FDmpi.h H5FDmpio.h H5FDmpiposix.h \
+ H5Epubgen.h H5Epublic.h H5Fpublic.h \
+ H5FDpublic.h H5FDcore.h H5FDdirect.h \
+ H5FDfamily.h H5FDlog.h H5FDmpi.h H5FDmpio.h \
H5FDmulti.h H5FDsec2.h H5FDstdio.h \
H5Gpublic.h H5Ipublic.h H5Lpublic.h \
H5MMpublic.h H5Opublic.h H5Ppublic.h \
diff --git a/src/Makefile.in b/src/Makefile.in
index 110d6de..4a2e5e1 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -132,13 +132,13 @@ am_libhdf5_la_OBJECTS = H5.lo H5checksum.lo H5dbg.lo H5system.lo \
H5Fmpi.lo H5Fquery.lo H5Fsfile.lo H5Fsuper.lo \
H5Fsuper_cache.lo H5Ftest.lo H5FD.lo H5FDcore.lo H5FDdirect.lo \
H5FDfamily.lo H5FDint.lo H5FDlog.lo H5FDmpi.lo H5FDmpio.lo \
- H5FDmpiposix.lo H5FDmulti.lo H5FDsec2.lo H5FDspace.lo \
- H5FDstdio.lo H5FL.lo H5FO.lo H5FS.lo H5FScache.lo H5FSdbg.lo \
- H5FSsection.lo H5FSstat.lo H5FStest.lo H5G.lo H5Gbtree2.lo \
- H5Gcache.lo H5Gcompact.lo H5Gdense.lo H5Gdeprec.lo H5Gent.lo \
- H5Gint.lo H5Glink.lo H5Gloc.lo H5Gname.lo H5Gnode.lo H5Gobj.lo \
- H5Goh.lo H5Groot.lo H5Gstab.lo H5Gtest.lo H5Gtraverse.lo \
- H5HF.lo H5HFbtree2.lo H5HFcache.lo H5HFdbg.lo H5HFdblock.lo \
+ H5FDmulti.lo H5FDsec2.lo H5FDspace.lo H5FDstdio.lo H5FL.lo \
+ H5FO.lo H5FS.lo H5FScache.lo H5FSdbg.lo H5FSsection.lo \
+ H5FSstat.lo H5FStest.lo H5G.lo H5Gbtree2.lo H5Gcache.lo \
+ H5Gcompact.lo H5Gdense.lo H5Gdeprec.lo H5Gent.lo H5Gint.lo \
+ H5Glink.lo H5Gloc.lo H5Gname.lo H5Gnode.lo H5Gobj.lo H5Goh.lo \
+ H5Groot.lo H5Gstab.lo H5Gtest.lo H5Gtraverse.lo H5HF.lo \
+ H5HFbtree2.lo H5HFcache.lo H5HFdbg.lo H5HFdblock.lo \
H5HFdtable.lo H5HFhdr.lo H5HFhuge.lo H5HFiblock.lo H5HFiter.lo \
H5HFman.lo H5HFsection.lo H5HFspace.lo H5HFstat.lo H5HFtest.lo \
H5HFtiny.lo H5HG.lo H5HGcache.lo H5HGdbg.lo H5HGquery.lo \
@@ -302,7 +302,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -546,7 +545,7 @@ libhdf5_la_SOURCES = H5.c H5checksum.c H5dbg.c H5system.c H5timer.c H5trace.c \
H5Fsfile.c H5Fsuper.c H5Fsuper_cache.c H5Ftest.c \
H5FD.c H5FDcore.c \
H5FDdirect.c H5FDfamily.c H5FDint.c H5FDlog.c H5FDmpi.c H5FDmpio.c \
- H5FDmpiposix.c H5FDmulti.c H5FDsec2.c H5FDspace.c H5FDstdio.c \
+ H5FDmulti.c H5FDsec2.c H5FDspace.c H5FDstdio.c \
H5FL.c H5FO.c H5FS.c H5FScache.c H5FSdbg.c H5FSsection.c H5FSstat.c H5FStest.c \
H5G.c H5Gbtree2.c H5Gcache.c \
H5Gcompact.c H5Gdense.c H5Gdeprec.c H5Gent.c \
@@ -598,8 +597,9 @@ libhdf5_la_SOURCES = H5.c H5checksum.c H5dbg.c H5system.c H5timer.c H5trace.c \
include_HEADERS = hdf5.h H5api_adpt.h H5overflow.h H5pubconf.h H5public.h H5version.h \
H5Apublic.h H5ACpublic.h \
H5Cpublic.h H5Dpublic.h \
- H5Epubgen.h H5Epublic.h H5Fpublic.h H5FDpublic.h H5FDcore.h H5FDdirect.h \
- H5FDfamily.h H5FDlog.h H5FDmpi.h H5FDmpio.h H5FDmpiposix.h \
+ H5Epubgen.h H5Epublic.h H5Fpublic.h \
+ H5FDpublic.h H5FDcore.h H5FDdirect.h \
+ H5FDfamily.h H5FDlog.h H5FDmpi.h H5FDmpio.h \
H5FDmulti.h H5FDsec2.h H5FDstdio.h \
H5Gpublic.h H5Ipublic.h H5Lpublic.h \
H5MMpublic.h H5Opublic.h H5Ppublic.h \
@@ -791,7 +791,6 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5FDlog.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5FDmpi.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5FDmpio.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5FDmpiposix.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5FDmulti.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5FDsec2.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5FDspace.Plo@am__quote@
diff --git a/src/hdf5.lnt b/src/hdf5.lnt
index 28d8807..f3e81f8 100644
--- a/src/hdf5.lnt
+++ b/src/hdf5.lnt
@@ -92,6 +92,5 @@
macros cleaned up, but have not been linted
due to their dependencies on features that we don't support on Windows:
H5FDmpio.c
- H5FDmpiposix.c
H5FDstream.c
*/
diff --git a/src/libhdf5.settings.in b/src/libhdf5.settings.in
index 343fa34..0402ffa 100644
--- a/src/libhdf5.settings.in
+++ b/src/libhdf5.settings.in
@@ -69,7 +69,6 @@ Features:
Clear file buffers before write: @CLEARFILEBUF@
Using memory checker: @USINGMEMCHECKER@
Function Stack Tracing: @CODESTACK@
- GPFS: @GPFS@
Strict File Format Checks: @STRICT_FORMAT_CHECKS@
Optimization Instrumentation: @INSTRUMENT@
Large File Support (LFS): @LARGEFILE@
diff --git a/test/Makefile.in b/test/Makefile.in
index c650ace..dcf5959 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -609,7 +609,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
diff --git a/test/h5test.c b/test/h5test.c
index 7ae6cb0..d3fdc8d 100644
--- a/test/h5test.c
+++ b/test/h5test.c
@@ -273,7 +273,7 @@ h5_fixname(const char *base_name, hid_t fapl, char *fullname, size_t size)
char *ptr, last = '\0';
size_t i, j;
hid_t driver = -1;
- int isppdriver = 0; /* if the driver is MPI parallel */
+ int isppdriver = 0; /* if the driver is MPI parallel */
if (!base_name || !fullname || size < 1)
return NULL;
@@ -294,7 +294,7 @@ h5_fixname(const char *base_name, hid_t fapl, char *fullname, size_t size)
/* Must first check fapl is not H5P_DEFAULT (-1) because H5FD_XXX
* could be of value -1 if it is not defined.
*/
- isppdriver = H5P_DEFAULT != fapl && (H5FD_MPIO==driver || H5FD_MPIPOSIX==driver);
+ isppdriver = H5P_DEFAULT != fapl && (H5FD_MPIO==driver);
/* Check HDF5_NOCLEANUP environment setting.
* (The #ifdef is needed to prevent compile failure in case MPI is not
@@ -863,7 +863,7 @@ h5_get_file_size(const char *filename, hid_t fapl)
/* Check for simple cases */
if(driver == H5FD_SEC2 || driver == H5FD_STDIO || driver == H5FD_CORE ||
#ifdef H5_HAVE_PARALLEL
- driver == H5FD_MPIO || driver == H5FD_MPIPOSIX ||
+ driver == H5FD_MPIO ||
#endif /* H5_HAVE_PARALLEL */
#ifdef H5_HAVE_WINDOWS
driver == H5FD_WINDOWS ||
diff --git a/test/links.c b/test/links.c
index 3a7f465..ef854f4 100644
--- a/test/links.c
+++ b/test/links.c
@@ -4145,11 +4145,10 @@ external_set_elink_cb(hid_t fapl, hbool_t new_format)
op_data.target_file = filename2;
/* Core file driver has issues when used as the member file driver for a family file */
/* Family file driver cannot be used with family or multi drivers for member files */
- /* Also disable parellel member drivers, because IS_H5FD_MPI whould report FALSE, causing problems */
+ /* Also disable parallel member drivers, because IS_H5FD_MPI whould report FALSE, causing problems */
base_driver = H5Pget_driver(fapl);
op_data.base_fapl = (base_driver == H5FD_FAMILY || base_driver == H5FD_MULTI
- || base_driver == H5FD_MPIO || base_driver == H5FD_MPIPOSIX
- || base_driver == H5FD_CORE) ? H5P_DEFAULT : fapl;
+ || base_driver == H5FD_MPIO || base_driver == H5FD_CORE) ? H5P_DEFAULT : fapl;
op_data.fam_size = ELINK_CB_FAM_SIZE;
op_data.code = 0;
diff --git a/testpar/CMakeTests.cmake b/testpar/CMakeTests.cmake
index bc8fc90..9a94ed0 100644
--- a/testpar/CMakeTests.cmake
+++ b/testpar/CMakeTests.cmake
@@ -13,10 +13,6 @@ ENDFOREACH (testp ${H5P_TESTS})
SET_TESTS_PROPERTIES(TEST_PAR_t_pflush2 PROPERTIES DEPENDS TEST_PAR_t_pflush1)
-IF (NOT WIN32)
- ADD_TEST (NAME TEST_PAR_t_posix_compliant COMMAND ${MPIEXEC} ${MPIEXEC_PREFLAGS} ${MPIEXEC_NUMPROC_FLAG} ${MPIEXEC_MAX_NUMPROCS} ${MPIEXEC_POSTFLAGS} $<TARGET_FILE:t_posix_compliant>)
-ENDIF (NOT WIN32)
-
IF (HDF5_TEST_VFD)
SET (VFD_LIST
diff --git a/testpar/Makefile.am b/testpar/Makefile.am
index b2fb97c..a6f5fa3 100644
--- a/testpar/Makefile.am
+++ b/testpar/Makefile.am
@@ -23,13 +23,11 @@ include $(top_srcdir)/config/commence.am
INCLUDES=-I$(top_srcdir)/src -I$(top_srcdir)/test
-# Test programs and scripts. These are our main targets.
+# Test programs. These are our main targets.
#
-TEST_PROG_PARA=t_mpi t_posix_compliant testphdf5 t_cache t_pflush1 t_pflush2 t_shapesame
-TEST_SCRIPT_PARA=testph5.sh
+TEST_PROG_PARA=t_mpi testphdf5 t_cache t_pflush1 t_pflush2 t_shapesame
check_PROGRAMS = $(TEST_PROG_PARA)
-check_SCRIPTS= $(TEST_SCRIPT)
testphdf5_SOURCES=testphdf5.c t_dset.c t_file.c t_file_image.c t_mdset.c \
t_ph5basic.c t_coll_chunk.c t_span_tree.c t_chunk_alloc.c t_filter_read.c
@@ -42,6 +40,5 @@ LDADD = $(LIBH5TEST) $(LIBHDF5)
# Para*.h5 are from testphdf
# go is used for debugging. See testphdf5.c.
CHECK_CLEANFILES+=MPItest.h5 Para*.h5 CacheTestDummy.h5 go
-DISTCLEANFILES=testph5.sh
include $(top_srcdir)/config/conclude.am
diff --git a/testpar/Makefile.in b/testpar/Makefile.in
index 8434f0f..28ca786 100644
--- a/testpar/Makefile.in
+++ b/testpar/Makefile.in
@@ -67,8 +67,7 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
- $(srcdir)/testph5.sh.in $(top_srcdir)/bin/depcomp \
- $(top_srcdir)/bin/mkinstalldirs \
+ $(top_srcdir)/bin/depcomp $(top_srcdir)/bin/mkinstalldirs \
$(top_srcdir)/config/commence.am \
$(top_srcdir)/config/conclude.am COPYING
check_PROGRAMS = $(am__EXEEXT_1)
@@ -80,11 +79,10 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/src/H5config.h
-CONFIG_CLEAN_FILES = testph5.sh
+CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
-am__EXEEXT_1 = t_mpi$(EXEEXT) t_posix_compliant$(EXEEXT) \
- testphdf5$(EXEEXT) t_cache$(EXEEXT) t_pflush1$(EXEEXT) \
- t_pflush2$(EXEEXT) t_shapesame$(EXEEXT)
+am__EXEEXT_1 = t_mpi$(EXEEXT) testphdf5$(EXEEXT) t_cache$(EXEEXT) \
+ t_pflush1$(EXEEXT) t_pflush2$(EXEEXT) t_shapesame$(EXEEXT)
t_cache_SOURCES = t_cache.c
t_cache_OBJECTS = t_cache.$(OBJEXT)
t_cache_LDADD = $(LDADD)
@@ -105,10 +103,6 @@ t_pflush2_SOURCES = t_pflush2.c
t_pflush2_OBJECTS = t_pflush2.$(OBJEXT)
t_pflush2_LDADD = $(LDADD)
t_pflush2_DEPENDENCIES = $(LIBH5TEST) $(LIBHDF5)
-t_posix_compliant_SOURCES = t_posix_compliant.c
-t_posix_compliant_OBJECTS = t_posix_compliant.$(OBJEXT)
-t_posix_compliant_LDADD = $(LDADD)
-t_posix_compliant_DEPENDENCIES = $(LIBH5TEST) $(LIBHDF5)
t_shapesame_SOURCES = t_shapesame.c
t_shapesame_OBJECTS = t_shapesame.$(OBJEXT)
t_shapesame_LDADD = $(LDADD)
@@ -155,10 +149,10 @@ AM_V_CCLD = $(am__v_CCLD_@AM_V@)
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
-SOURCES = t_cache.c t_mpi.c t_pflush1.c t_pflush2.c \
- t_posix_compliant.c t_shapesame.c $(testphdf5_SOURCES)
-DIST_SOURCES = t_cache.c t_mpi.c t_pflush1.c t_pflush2.c \
- t_posix_compliant.c t_shapesame.c $(testphdf5_SOURCES)
+SOURCES = t_cache.c t_mpi.c t_pflush1.c t_pflush2.c t_shapesame.c \
+ $(testphdf5_SOURCES)
+DIST_SOURCES = t_cache.c t_mpi.c t_pflush1.c t_pflush2.c t_shapesame.c \
+ $(testphdf5_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
@@ -241,7 +235,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
@@ -458,18 +451,15 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog MPItest.h5 Para*.h5 \
CacheTestDummy.h5 go
INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/test
-# Test programs and scripts. These are our main targets.
+# Test programs. These are our main targets.
#
-TEST_PROG_PARA = t_mpi t_posix_compliant testphdf5 t_cache t_pflush1 t_pflush2 t_shapesame
-TEST_SCRIPT_PARA = testph5.sh
-check_SCRIPTS = $(TEST_SCRIPT)
+TEST_PROG_PARA = t_mpi testphdf5 t_cache t_pflush1 t_pflush2 t_shapesame
testphdf5_SOURCES = testphdf5.c t_dset.c t_file.c t_file_image.c t_mdset.c \
t_ph5basic.c t_coll_chunk.c t_span_tree.c t_chunk_alloc.c t_filter_read.c
# The tests all depend on the hdf5 library and the test library
LDADD = $(LIBH5TEST) $(LIBHDF5)
-DISTCLEANFILES = testph5.sh
# Automake needs to be taught how to build lib, progs, and tests targets.
# These will be filled in automatically for the most part (e.g.,
@@ -525,8 +515,6 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
-testph5.sh: $(top_builddir)/config.status $(srcdir)/testph5.sh.in
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
clean-checkPROGRAMS:
@list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
@@ -548,9 +536,6 @@ t_pflush1$(EXEEXT): $(t_pflush1_OBJECTS) $(t_pflush1_DEPENDENCIES) $(EXTRA_t_pfl
t_pflush2$(EXEEXT): $(t_pflush2_OBJECTS) $(t_pflush2_DEPENDENCIES) $(EXTRA_t_pflush2_DEPENDENCIES)
@rm -f t_pflush2$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(t_pflush2_OBJECTS) $(t_pflush2_LDADD) $(LIBS)
-t_posix_compliant$(EXEEXT): $(t_posix_compliant_OBJECTS) $(t_posix_compliant_DEPENDENCIES) $(EXTRA_t_posix_compliant_DEPENDENCIES)
- @rm -f t_posix_compliant$(EXEEXT)
- $(AM_V_CCLD)$(LINK) $(t_posix_compliant_OBJECTS) $(t_posix_compliant_LDADD) $(LIBS)
t_shapesame$(EXEEXT): $(t_shapesame_OBJECTS) $(t_shapesame_DEPENDENCIES) $(EXTRA_t_shapesame_DEPENDENCIES)
@rm -f t_shapesame$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(t_shapesame_OBJECTS) $(t_shapesame_LDADD) $(LIBS)
@@ -576,7 +561,6 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t_pflush1.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t_pflush2.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t_ph5basic.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t_posix_compliant.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t_shapesame.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t_span_tree.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testphdf5.Po@am__quote@
@@ -705,7 +689,7 @@ distdir: $(DISTFILES)
fi; \
done
check-am: all-am
- $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(check_SCRIPTS)
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
$(MAKE) $(AM_MAKEFLAGS) check-TESTS
check: check-am
all-am: Makefile all-local
@@ -736,7 +720,6 @@ clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
- -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
diff --git a/testpar/t_coll_chunk.c b/testpar/t_coll_chunk.c
index 85ea931..133b91d 100644
--- a/testpar/t_coll_chunk.c
+++ b/testpar/t_coll_chunk.c
@@ -613,7 +613,6 @@ coll_chunktest(const char* filename,
unsigned prop_value;
#endif /* H5_HAVE_INSTRUMENTED_LIBRARY */
- hbool_t use_gpfs = FALSE;
int mpi_size,mpi_rank;
herr_t status;
@@ -631,7 +630,7 @@ coll_chunktest(const char* filename,
/* Create the data space */
- acc_plist = create_faccess_plist(comm,info,facc_type,use_gpfs);
+ acc_plist = create_faccess_plist(comm,info,facc_type);
VRFY((acc_plist >= 0),"");
file = H5Fcreate(filename,H5F_ACC_TRUNC,H5P_DEFAULT,acc_plist);
@@ -918,7 +917,7 @@ coll_chunktest(const char* filename,
data_origin1 = (int *)malloc(dims[0]*dims[1]*sizeof(int));
VRFY((data_origin1 != NULL), "data_origin1 malloc succeeded");
- acc_plist = create_faccess_plist(comm, info, facc_type, use_gpfs);
+ acc_plist = create_faccess_plist(comm, info, facc_type);
VRFY((acc_plist >= 0),"MPIO creation property list succeeded");
file = H5Fopen(filename,H5F_ACC_RDONLY,acc_plist);
diff --git a/testpar/t_dset.c b/testpar/t_dset.c
index 4870eb6..96d3836 100644
--- a/testpar/t_dset.c
+++ b/testpar/t_dset.c
@@ -279,7 +279,6 @@ dataset_writeInd(void)
hid_t file_dataspace; /* File dataspace ID */
hid_t mem_dataspace; /* memory dataspace ID */
hid_t dataset1, dataset2; /* Dataset ID */
- hbool_t use_gpfs = FALSE; /* Use GPFS hints */
hsize_t dims[RANK]; /* dataset dim sizes */
DATATYPE *data_array1 = NULL; /* data buffer */
const char *filename;
@@ -310,7 +309,7 @@ dataset_writeInd(void)
* CREATE AN HDF5 FILE WITH PARALLEL ACCESS
* ---------------------------------------*/
/* setup file access template */
- acc_tpl = create_faccess_plist(comm, info, facc_type, use_gpfs);
+ acc_tpl = create_faccess_plist(comm, info, facc_type);
VRFY((acc_tpl >= 0), "");
/* create the file collectively */
@@ -425,7 +424,6 @@ dataset_readInd(void)
hid_t file_dataspace; /* File dataspace ID */
hid_t mem_dataspace; /* memory dataspace ID */
hid_t dataset1, dataset2; /* Dataset ID */
- hbool_t use_gpfs = FALSE; /* Use GPFS hints */
DATATYPE *data_array1 = NULL; /* data buffer */
DATATYPE *data_origin1 = NULL; /* expected data buffer */
const char *filename;
@@ -455,7 +453,7 @@ dataset_readInd(void)
VRFY((data_origin1 != NULL), "data_origin1 malloc succeeded");
/* setup file access template */
- acc_tpl = create_faccess_plist(comm, info, facc_type, use_gpfs);
+ acc_tpl = create_faccess_plist(comm, info, facc_type);
VRFY((acc_tpl >= 0), "");
/* open the file collectively */
@@ -552,7 +550,6 @@ dataset_writeAll(void)
hid_t dataset1, dataset2, dataset3, dataset4; /* Dataset ID */
hid_t dataset5, dataset6, dataset7; /* Dataset ID */
hid_t datatype; /* Datatype ID */
- hbool_t use_gpfs = FALSE; /* Use GPFS hints */
hsize_t dims[RANK]; /* dataset dim sizes */
DATATYPE *data_array1 = NULL; /* data buffer */
const char *filename;
@@ -593,7 +590,7 @@ dataset_writeAll(void)
* START AN HDF5 FILE
* -------------------*/
/* setup file access template */
- acc_tpl = create_faccess_plist(comm, info, facc_type, use_gpfs);
+ acc_tpl = create_faccess_plist(comm, info, facc_type);
VRFY((acc_tpl >= 0), "");
/* create the file collectively */
@@ -1085,7 +1082,6 @@ dataset_readAll(void)
hid_t file_dataspace; /* File dataspace ID */
hid_t mem_dataspace; /* memory dataspace ID */
hid_t dataset1, dataset2, dataset5, dataset6, dataset7; /* Dataset ID */
- hbool_t use_gpfs = FALSE; /* Use GPFS hints */
DATATYPE *data_array1 = NULL; /* data buffer */
DATATYPE *data_origin1 = NULL; /* expected data buffer */
const char *filename;
@@ -1128,7 +1124,7 @@ dataset_readAll(void)
* OPEN AN HDF5 FILE
* -------------------*/
/* setup file access template */
- acc_tpl = create_faccess_plist(comm, info, facc_type, use_gpfs);
+ acc_tpl = create_faccess_plist(comm, info, facc_type);
VRFY((acc_tpl >= 0), "");
/* open the file collectively */
@@ -1499,7 +1495,6 @@ extend_writeInd(void)
hid_t file_dataspace; /* File dataspace ID */
hid_t mem_dataspace; /* memory dataspace ID */
hid_t dataset1, dataset2; /* Dataset ID */
- hbool_t use_gpfs = FALSE; /* Use GPFS hints */
const char *filename;
hsize_t dims[RANK]; /* dataset dim sizes */
hsize_t max_dims[RANK] =
@@ -1539,7 +1534,7 @@ extend_writeInd(void)
* START AN HDF5 FILE
* -------------------*/
/* setup file access template */
- acc_tpl = create_faccess_plist(comm, info, facc_type, use_gpfs);
+ acc_tpl = create_faccess_plist(comm, info, facc_type);
VRFY((acc_tpl >= 0), "");
/* Reduce the number of metadata cache slots, so that there are cache
@@ -1730,7 +1725,6 @@ extend_writeInd2(void)
hid_t fs; /* File dataspace ID */
hid_t ms; /* Memory dataspace ID */
hid_t dataset; /* Dataset ID */
- hbool_t use_gpfs = FALSE; /* Use GPFS hints */
hsize_t orig_size=10; /* Original dataset dim size */
hsize_t new_size=20; /* Extended dataset dim size */
hsize_t one=1;
@@ -1755,7 +1749,7 @@ extend_writeInd2(void)
* START AN HDF5 FILE
* -------------------*/
/* setup file access template */
- fapl = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type, use_gpfs);
+ fapl = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type);
VRFY((fapl >= 0), "create_faccess_plist succeeded");
/* create the file collectively */
@@ -1892,7 +1886,6 @@ extend_readInd(void)
hid_t file_dataspace; /* File dataspace ID */
hid_t mem_dataspace; /* memory dataspace ID */
hid_t dataset1, dataset2; /* Dataset ID */
- hbool_t use_gpfs = FALSE; /* Use GPFS hints */
hsize_t dims[RANK]; /* dataset dim sizes */
DATATYPE *data_array1 = NULL; /* data buffer */
DATATYPE *data_array2 = NULL; /* data buffer */
@@ -1929,7 +1922,7 @@ extend_readInd(void)
* OPEN AN HDF5 FILE
* -------------------*/
/* setup file access template */
- acc_tpl = create_faccess_plist(comm, info, facc_type, use_gpfs);
+ acc_tpl = create_faccess_plist(comm, info, facc_type);
VRFY((acc_tpl >= 0), "");
/* open the file collectively */
@@ -2073,7 +2066,6 @@ extend_writeAll(void)
hid_t file_dataspace; /* File dataspace ID */
hid_t mem_dataspace; /* memory dataspace ID */
hid_t dataset1, dataset2; /* Dataset ID */
- hbool_t use_gpfs = FALSE; /* Use GPFS hints */
const char *filename;
hsize_t dims[RANK]; /* dataset dim sizes */
hsize_t max_dims[RANK] =
@@ -2113,7 +2105,7 @@ extend_writeAll(void)
* START AN HDF5 FILE
* -------------------*/
/* setup file access template */
- acc_tpl = create_faccess_plist(comm, info, facc_type, use_gpfs);
+ acc_tpl = create_faccess_plist(comm, info, facc_type);
VRFY((acc_tpl >= 0), "");
/* Reduce the number of metadata cache slots, so that there are cache
@@ -2324,7 +2316,6 @@ extend_readAll(void)
hid_t file_dataspace; /* File dataspace ID */
hid_t mem_dataspace; /* memory dataspace ID */
hid_t dataset1, dataset2; /* Dataset ID */
- hbool_t use_gpfs = FALSE; /* Use GPFS hints */
const char *filename;
hsize_t dims[RANK]; /* dataset dim sizes */
DATATYPE *data_array1 = NULL; /* data buffer */
@@ -2361,7 +2352,7 @@ extend_readAll(void)
* OPEN AN HDF5 FILE
* -------------------*/
/* setup file access template */
- acc_tpl = create_faccess_plist(comm, info, facc_type, use_gpfs);
+ acc_tpl = create_faccess_plist(comm, info, facc_type);
VRFY((acc_tpl >= 0), "");
/* open the file collectively */
@@ -2525,7 +2516,6 @@ compress_readAll(void)
int rank=1; /* Dataspace rank */
hsize_t dim=dim0; /* Dataspace dimensions */
unsigned u; /* Local index variable */
- hbool_t use_gpfs = FALSE; /* Use GPFS hints */
DATATYPE *data_read = NULL; /* data buffer */
DATATYPE *data_orig = NULL; /* expected data buffer */
const char *filename;
@@ -2606,7 +2596,7 @@ compress_readAll(void)
* -------------------*/
/* setup file access template */
- acc_tpl = create_faccess_plist(comm, info, facc_type, use_gpfs);
+ acc_tpl = create_faccess_plist(comm, info, facc_type);
VRFY((acc_tpl >= 0), "");
/* open the file collectively */
@@ -2691,7 +2681,6 @@ none_selection_chunk(void)
hid_t file_dataspace; /* File dataspace ID */
hid_t mem_dataspace; /* memory dataspace ID */
hid_t dataset1, dataset2; /* Dataset ID */
- hbool_t use_gpfs = FALSE; /* Use GPFS hints */
const char *filename;
hsize_t dims[RANK]; /* dataset dim sizes */
DATATYPE *data_origin = NULL; /* data buffer */
@@ -2727,7 +2716,7 @@ none_selection_chunk(void)
* START AN HDF5 FILE
* -------------------*/
/* setup file access template */
- acc_tpl = create_faccess_plist(comm, info, facc_type, use_gpfs);
+ acc_tpl = create_faccess_plist(comm, info, facc_type);
VRFY((acc_tpl >= 0), "");
/* create the file collectively */
@@ -2982,7 +2971,6 @@ test_actual_io_mode(int selection_mode) {
hsize_t stride[RANK];
hsize_t count[RANK];
hsize_t block[RANK];
- hbool_t use_gpfs = FALSE;
char message[256];
herr_t ret;
@@ -3022,7 +3010,7 @@ test_actual_io_mode(int selection_mode) {
HDassert(filename != NULL);
/* Setup the file access template */
- fapl = create_faccess_plist(mpi_comm, mpi_info, facc_type, use_gpfs);
+ fapl = create_faccess_plist(mpi_comm, mpi_info, facc_type);
VRFY((fapl >= 0), "create_faccess_plist() succeeded");
/* Create the file */
@@ -3213,13 +3201,6 @@ test_actual_io_mode(int selection_mode) {
break;
}
- /* Reset the expected values to defulats if the MPI_POSIX driver is in use.
- * This property is defined only for mpio, not MPI POSIX. */
- if (facc_type == FACC_MPIPOSIX) {
- actual_chunk_opt_mode_expected = H5D_MPIO_NO_CHUNK_OPTIMIZATION;
- actual_io_mode_expected = H5D_MPIO_NO_COLLECTIVE;
- }
-
ret = H5Sselect_hyperslab(file_space, H5S_SELECT_SET, start, stride, count, block);
VRFY((ret >= 0), "H5Sset_hyperslab succeeded");
@@ -3450,9 +3431,6 @@ actual_io_mode_tests(void) {
* TEST_DATA_TRANSFORMS:
* Test for Data Transfrom feature as the cause of breaking collective I/O.
*
- * TEST_SET_MPIPOSIX:
- * Test for MPI Posix as the cause of breaking collective I/O.
- *
* TEST_NOT_SIMPLE_OR_SCALAR_DATASPACES:
* Test for NULL dataspace as the cause of breaking collective I/O.
*
@@ -3508,7 +3486,6 @@ test_no_collective_cause_mode(int selection_mode)
hid_t mem_space = -1;
hid_t file_space = -1;
hsize_t chunk_dims[RANK];
- hbool_t use_gpfs = FALSE;
herr_t ret;
#ifdef H5_HAVE_FILTER_FLETCHER32
H5Z_filter_t filter_info;
@@ -3532,35 +3509,30 @@ test_no_collective_cause_mode(int selection_mode)
dcpl = H5Pcreate(H5P_DATASET_CREATE);
VRFY((dcpl >= 0), "dataset creation plist created successfully");
- if (selection_mode & TEST_SET_MPIPOSIX) {
- l_facc_type = FACC_MPIPOSIX;
+ if (selection_mode & TEST_NOT_CONTIGUOUS_OR_CHUNKED_DATASET_COMPACT) {
+ ret = H5Pset_layout (dcpl, H5D_COMPACT);
+ VRFY((ret >= 0),"set COMPACT layout succeeded");
+ is_chunked = 0;
}
- else {
- if (selection_mode & TEST_NOT_CONTIGUOUS_OR_CHUNKED_DATASET_COMPACT) {
- ret = H5Pset_layout (dcpl, H5D_COMPACT);
- VRFY((ret >= 0),"set COMPACT layout succeeded");
- is_chunked = 0;
- }
- if (selection_mode & TEST_NOT_CONTIGUOUS_OR_CHUNKED_DATASET_EXTERNAL) {
- ret = H5Pset_external (dcpl, FILE_EXTERNAL, (off_t) 0, H5F_UNLIMITED);
- VRFY((ret >= 0),"set EXTERNAL file layout succeeded");
- is_chunked = 0;
- }
+ if (selection_mode & TEST_NOT_CONTIGUOUS_OR_CHUNKED_DATASET_EXTERNAL) {
+ ret = H5Pset_external (dcpl, FILE_EXTERNAL, (off_t) 0, H5F_UNLIMITED);
+ VRFY((ret >= 0),"set EXTERNAL file layout succeeded");
+ is_chunked = 0;
+ }
#ifdef H5_HAVE_FILTER_FLETCHER32
- if (selection_mode & TEST_FILTERS) {
- ret = H5Zfilter_avail(H5Z_FILTER_FLETCHER32);
- VRFY ((ret >=0 ), "Fletcher32 filter is available.\n");
+ if (selection_mode & TEST_FILTERS) {
+ ret = H5Zfilter_avail(H5Z_FILTER_FLETCHER32);
+ VRFY ((ret >=0 ), "Fletcher32 filter is available.\n");
- ret = H5Zget_filter_info (H5Z_FILTER_FLETCHER32, &filter_info);
- VRFY ( ( (filter_info & H5Z_FILTER_CONFIG_ENCODE_ENABLED) || (filter_info & H5Z_FILTER_CONFIG_DECODE_ENABLED) ) , "Fletcher32 filter encoding and decoding available.\n");
+ ret = H5Zget_filter_info (H5Z_FILTER_FLETCHER32, &filter_info);
+ VRFY ( ( (filter_info & H5Z_FILTER_CONFIG_ENCODE_ENABLED) || (filter_info & H5Z_FILTER_CONFIG_DECODE_ENABLED) ) , "Fletcher32 filter encoding and decoding available.\n");
- ret = H5Pset_fletcher32(dcpl);
- VRFY((ret >= 0),"set filter (flecher32) succeeded");
- }
-#endif /* H5_HAVE_FILTER_FLETCHER32 */
+ ret = H5Pset_fletcher32(dcpl);
+ VRFY((ret >= 0),"set filter (flecher32) succeeded");
}
+#endif /* H5_HAVE_FILTER_FLETCHER32 */
if (selection_mode & TEST_NOT_SIMPLE_OR_SCALAR_DATASPACES) {
sid = H5Screate(H5S_NULL);
@@ -3580,7 +3552,7 @@ test_no_collective_cause_mode(int selection_mode)
HDassert(filename != NULL);
/* Setup the file access template */
- fapl = create_faccess_plist(mpi_comm, mpi_info, l_facc_type, use_gpfs);
+ fapl = create_faccess_plist(mpi_comm, mpi_info, l_facc_type);
VRFY((fapl >= 0), "create_faccess_plist() succeeded");
/* Create the file */
@@ -3642,12 +3614,6 @@ test_no_collective_cause_mode(int selection_mode)
}
#endif /* H5_HAVE_FILTER_FLETCHER32 */
- if (selection_mode & TEST_SET_MPIPOSIX) {
- test_name = "Broken Collective I/O - MPIO POSIX";
- no_collective_cause_local_expected |= H5D_MPIO_SET_MPIPOSIX;
- no_collective_cause_global_expected |= H5D_MPIO_SET_MPIPOSIX;
- }
-
if (selection_mode & TEST_COLLECTIVE) {
test_name = "Broken Collective I/O - Not Broken";
no_collective_cause_local_expected = H5D_MPIO_COLLECTIVE;
@@ -3662,13 +3628,6 @@ test_no_collective_cause_mode(int selection_mode)
is_independent = 1;
}
- /* Add MPIPOSIX cause to expected cause if MPI_POSIX driver is in use '-p'.
- * Exception to the independent cause.*/
- if (facc_type == FACC_MPIPOSIX && !(selection_mode & TEST_SET_INDEPENDENT)) {
- no_collective_cause_local_expected |= H5D_MPIO_SET_MPIPOSIX;
- no_collective_cause_global_expected |= H5D_MPIO_SET_MPIPOSIX;
- }
-
/* use all spaces for certain tests */
if (selection_mode & TEST_NOT_SIMPLE_OR_SCALAR_DATASPACES ||
selection_mode & TEST_NOT_CONTIGUOUS_OR_CHUNKED_DATASET_EXTERNAL) {
@@ -3841,7 +3800,6 @@ test_no_collective_cause_mode_filter(int selection_mode)
hid_t mem_space = -1;
hid_t file_space = -1;
hsize_t chunk_dims[RANK];
- hbool_t use_gpfs = FALSE;
herr_t ret;
#ifdef H5_HAVE_FILTER_FLETCHER32
H5Z_filter_t filter_info;
@@ -3890,7 +3848,7 @@ test_no_collective_cause_mode_filter(int selection_mode)
HDassert(filename != NULL);
/* Setup the file access template */
- fapl_write = create_faccess_plist(mpi_comm, mpi_info, FACC_DEFAULT, use_gpfs);
+ fapl_write = create_faccess_plist(mpi_comm, mpi_info, FACC_DEFAULT);
VRFY((fapl_write >= 0), "create_faccess_plist() succeeded");
fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl_write);
@@ -3918,13 +3876,6 @@ test_no_collective_cause_mode_filter(int selection_mode)
no_collective_cause_global_expected = H5D_MPIO_FILTERS;
#endif
- /* Ignore above expected cause and reset cause to MPIPOSIX if
- * the MPI_POSIX driver is in use.*/
- if (facc_type == FACC_MPIPOSIX) {
- no_collective_cause_local_expected = H5D_MPIO_SET_MPIPOSIX;
- no_collective_cause_global_expected = H5D_MPIO_SET_MPIPOSIX;
- }
-
/* Get the file dataspace */
file_space = H5Dget_space(dataset);
VRFY((file_space >= 0), "H5Dget_space succeeded");
@@ -3983,7 +3934,7 @@ test_no_collective_cause_mode_filter(int selection_mode)
*---------------------*/
/* Setup the file access template */
- fapl_read = create_faccess_plist(mpi_comm, mpi_info, facc_type, use_gpfs);
+ fapl_read = create_faccess_plist(mpi_comm, mpi_info, facc_type);
VRFY((fapl_read >= 0), "create_faccess_plist() succeeded");
fid = H5Fopen (filename, H5F_ACC_RDONLY, fapl_read);
@@ -4049,7 +4000,6 @@ no_collective_cause_tests(void)
test_no_collective_cause_mode (TEST_SET_INDEPENDENT);
test_no_collective_cause_mode (TEST_DATATYPE_CONVERSION);
test_no_collective_cause_mode (TEST_DATA_TRANSFORMS);
- test_no_collective_cause_mode (TEST_SET_MPIPOSIX);
test_no_collective_cause_mode (TEST_NOT_SIMPLE_OR_SCALAR_DATASPACES);
test_no_collective_cause_mode (TEST_NOT_CONTIGUOUS_OR_CHUNKED_DATASET_COMPACT);
test_no_collective_cause_mode (TEST_NOT_CONTIGUOUS_OR_CHUNKED_DATASET_EXTERNAL);
@@ -4064,9 +4014,9 @@ no_collective_cause_tests(void)
/*
* Test combined causes
*/
- test_no_collective_cause_mode (TEST_SET_MPIPOSIX | TEST_DATATYPE_CONVERSION);
+ test_no_collective_cause_mode (TEST_NOT_CONTIGUOUS_OR_CHUNKED_DATASET_EXTERNAL | TEST_DATATYPE_CONVERSION);
test_no_collective_cause_mode (TEST_DATATYPE_CONVERSION | TEST_DATA_TRANSFORMS);
- test_no_collective_cause_mode (TEST_SET_MPIPOSIX | TEST_DATATYPE_CONVERSION | TEST_DATA_TRANSFORMS);
+ test_no_collective_cause_mode (TEST_NOT_CONTIGUOUS_OR_CHUNKED_DATASET_EXTERNAL | TEST_DATATYPE_CONVERSION | TEST_DATA_TRANSFORMS);
return;
}
@@ -4089,7 +4039,6 @@ dataset_atomicity(void)
hid_t acc_tpl; /* File access templates */
hid_t sid; /* Dataspace ID */
hid_t dataset1; /* Dataset IDs */
- hbool_t use_gpfs = FALSE; /* Use GPFS hints */
hsize_t dims[RANK]; /* dataset dim sizes */
int *write_buf = NULL; /* data buffer */
int *read_buf = NULL; /* data buffer */
@@ -4131,7 +4080,7 @@ dataset_atomicity(void)
VRFY((read_buf != NULL), "read_buf malloc succeeded");
/* setup file access template */
- acc_tpl = create_faccess_plist(comm, info, facc_type, use_gpfs);
+ acc_tpl = create_faccess_plist(comm, info, facc_type);
VRFY((acc_tpl >= 0), "");
/* create the file collectively */
@@ -4194,7 +4143,7 @@ dataset_atomicity(void)
MPI_Barrier (comm);
/* setup file access template */
- acc_tpl = create_faccess_plist(comm, info, facc_type, use_gpfs);
+ acc_tpl = create_faccess_plist(comm, info, facc_type);
VRFY((acc_tpl >= 0), "");
/* open the file collectively */
diff --git a/testpar/t_file.c b/testpar/t_file.c
index 5cd3e9d..70ca60e 100644
--- a/testpar/t_file.c
+++ b/testpar/t_file.c
@@ -40,7 +40,6 @@ test_split_comm_access(void)
int newrank, newprocs;
hid_t fid; /* file IDs */
hid_t acc_tpl; /* File access properties */
- hbool_t use_gpfs = FALSE; /* Use GPFS hints */
herr_t ret; /* generic return value */
const char *filename;
@@ -68,7 +67,7 @@ test_split_comm_access(void)
MPI_Comm_rank(comm,&sub_mpi_rank);
/* setup file access template */
- acc_tpl = create_faccess_plist(comm, info, facc_type, use_gpfs);
+ acc_tpl = create_faccess_plist(comm, info, facc_type);
VRFY((acc_tpl >= 0), "");
/* create the file collectively */
diff --git a/testpar/t_mdset.c b/testpar/t_mdset.c
index 516cc2f..fa1a980 100644
--- a/testpar/t_mdset.c
+++ b/testpar/t_mdset.c
@@ -88,7 +88,6 @@ void multiple_dset_write(void)
int i, j, n, mpi_size, mpi_rank, size;
hid_t iof, plist, dataset, memspace, filespace;
hid_t dcpl; /* Dataset creation property list */
- hbool_t use_gpfs = FALSE; /* Use GPFS hints */
hsize_t chunk_origin [DIM];
hsize_t chunk_dims [DIM], file_dims [DIM];
hsize_t count[DIM]={1,1};
@@ -112,7 +111,7 @@ void multiple_dset_write(void)
outme = HDmalloc((size_t)(size * size * sizeof(double)));
VRFY((outme != NULL), "HDmalloc succeeded for outme");
- plist = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type, use_gpfs);
+ plist = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type);
VRFY((plist>=0), "create_faccess_plist succeeded");
iof = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, plist);
VRFY((iof>=0), "H5Fcreate succeeded");
@@ -175,7 +174,6 @@ void multiple_dset_write(void)
void compact_dataset(void)
{
int i, j, mpi_size, mpi_rank, size, err_num=0;
- hbool_t use_gpfs = FALSE;
hid_t iof, plist, dcpl, dxpl, dataset, filespace;
hsize_t file_dims [DIM];
double * outme;
@@ -201,7 +199,7 @@ void compact_dataset(void)
filename = GetTestParameters();
VRFY((mpi_size <= size), "mpi_size <= size");
- plist = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type, use_gpfs);
+ plist = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type);
iof = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, plist);
/* Define data space */
@@ -244,7 +242,7 @@ void compact_dataset(void)
H5Fclose(iof);
/* Open the file and dataset, read and compare the data. */
- plist = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type, use_gpfs);
+ plist = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type);
iof = H5Fopen(filename, H5F_ACC_RDONLY, plist);
VRFY((iof >= 0), "H5Fopen succeeded");
@@ -295,7 +293,6 @@ void compact_dataset(void)
void null_dataset(void)
{
int mpi_size, mpi_rank;
- hbool_t use_gpfs = FALSE;
hid_t iof, plist, dxpl, dataset, attr, sid;
unsigned uval=2; /* Buffer for writing to dataset */
int val=1; /* Buffer for writing to attribute */
@@ -310,8 +307,7 @@ void null_dataset(void)
filename = GetTestParameters();
- plist = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL,
- facc_type, use_gpfs);
+ plist = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type);
iof = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, plist);
/* Define data space */
@@ -355,7 +351,7 @@ void null_dataset(void)
H5Fclose(iof);
/* Open the file and dataset, read and compare the data. */
- plist = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type, use_gpfs);
+ plist = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type);
iof = H5Fopen(filename, H5F_ACC_RDONLY, plist);
VRFY((iof >= 0), "H5Fopen succeeded");
@@ -409,7 +405,6 @@ void null_dataset(void)
void big_dataset(void)
{
int mpi_size, mpi_rank; /* MPI info */
- hbool_t use_gpfs = FALSE; /* Don't use GPFS stuff for this test */
hid_t iof, /* File ID */
fapl, /* File access property list ID */
dataset, /* Dataset ID */
@@ -428,7 +423,7 @@ void big_dataset(void)
filename = GetTestParameters();
- fapl = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type, use_gpfs);
+ fapl = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type);
VRFY((fapl >= 0), "create_faccess_plist succeeded");
/*
@@ -540,7 +535,6 @@ void big_dataset(void)
void dataset_fillvalue(void)
{
int mpi_size, mpi_rank; /* MPI info */
- hbool_t use_gpfs = FALSE; /* Don't use GPFS stuff for this test */
int err_num; /* Number of errors */
hid_t iof, /* File ID */
fapl, /* File access property list ID */
@@ -575,7 +569,7 @@ void dataset_fillvalue(void)
wdata=HDmalloc((size_t)(dset_size*sizeof(int)));
VRFY((wdata != NULL), "HDmalloc succeeded for write buffer");
- fapl = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type, use_gpfs);
+ fapl = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type);
VRFY((fapl >= 0), "create_faccess_plist succeeded");
/*
@@ -656,7 +650,7 @@ void dataset_fillvalue(void)
ret = H5Dwrite(dataset, H5T_NATIVE_INT, memspace, filespace, dxpl, wdata);
VRFY((ret >= 0), "H5Dwrite succeeded");
- /* Barrier here, to allow MPI-posix I/O to sync */
+ /* Barrier here, to allow processes to sync */
MPI_Barrier(MPI_COMM_WORLD);
/*
@@ -731,7 +725,6 @@ void collective_group_write(void)
{
int mpi_rank, mpi_size, size;
int i, j, m;
- hbool_t use_gpfs = FALSE;
char gname[64], dname[32];
hid_t fid, gid, did, plist, dcpl, memspace, filespace;
DATATYPE * outme = NULL;
@@ -758,7 +751,7 @@ void collective_group_write(void)
outme = HDmalloc((size_t)(size * size * sizeof(DATATYPE)));
VRFY((outme != NULL), "HDmalloc succeeded for outme");
- plist = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type, use_gpfs);
+ plist = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type);
fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, plist);
H5Pclose(plist);
@@ -827,7 +820,6 @@ void independent_group_read(void)
{
int mpi_rank, m;
hid_t plist, fid;
- hbool_t use_gpfs = FALSE;
const H5Ptest_param_t *pt;
char *filename;
int ngroups;
@@ -838,7 +830,7 @@ void independent_group_read(void)
MPI_Comm_rank(MPI_COMM_WORLD, &mpi_rank);
- plist = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type, use_gpfs);
+ plist = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type);
fid = H5Fopen(filename, H5F_ACC_RDONLY, plist);
H5Pclose(plist);
@@ -950,7 +942,6 @@ void multiple_group_write(void)
{
int mpi_rank, mpi_size, size;
int m;
- hbool_t use_gpfs = FALSE;
char gname[64];
hid_t fid, gid, plist, memspace, filespace;
hsize_t chunk_origin[DIM];
@@ -969,7 +960,7 @@ void multiple_group_write(void)
size = get_size();
- plist = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type, use_gpfs);
+ plist = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type);
fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, plist);
H5Pclose(plist);
@@ -1120,7 +1111,6 @@ void multiple_group_read(void)
{
int mpi_rank, mpi_size, error_num, size;
int m;
- hbool_t use_gpfs = FALSE;
char gname[64];
hid_t plist, fid, gid, memspace, filespace;
hsize_t chunk_origin[DIM];
@@ -1138,7 +1128,7 @@ void multiple_group_read(void)
size = get_size();
- plist = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type, use_gpfs);
+ plist = create_faccess_plist(MPI_COMM_WORLD, MPI_INFO_NULL, facc_type);
fid = H5Fopen(filename, H5F_ACC_RDONLY, plist);
H5Pclose(plist);
diff --git a/testpar/t_ph5basic.c b/testpar/t_ph5basic.c
index 1e5d3b3..76eeaef 100644
--- a/testpar/t_ph5basic.c
+++ b/testpar/t_ph5basic.c
@@ -191,117 +191,3 @@ test_fapl_mpio_dup(void)
}
}
-
-/*-------------------------------------------------------------------------
- * Function: test_fapl_mpiposix_dup
- *
- * Purpose: Test if fapl_mpiposix property list keeps a duplicate of the
- * communicator object given when set; and returns a duplicate
- * of its component when H5Pget_fapl_mpiposix is called.
- * Note that fapl_mpiposix does not use INFO object.
- *
- * Return: Success: None
- *
- * Failure: Abort
- *
- * Programmer: Albert Cheng
- * January 9, 2003
- *
- * Modifications:
- *-------------------------------------------------------------------------
- */
-void
-test_fapl_mpiposix_dup(void)
-{
- int mpi_size, mpi_rank;
- MPI_Comm comm, comm_tmp;
- int mpi_size_old, mpi_rank_old;
- int mpi_size_tmp, mpi_rank_tmp;
- int mrc; /* MPI return value */
- hid_t acc_pl; /* File access properties */
- hbool_t use_gpfs = FALSE;
- herr_t ret; /* hdf5 return value */
-
- if (VERBOSE_MED)
- printf("Verify fapl_mpiposix duplicates communicator object\n");
-
- /* set up MPI parameters */
- MPI_Comm_size(MPI_COMM_WORLD,&mpi_size);
- MPI_Comm_rank(MPI_COMM_WORLD,&mpi_rank);
- if (VERBOSE_MED)
- printf("rank/size of MPI_COMM_WORLD are %d/%d\n", mpi_rank, mpi_size);
-
- /* Create a new communicator that has the same processes as MPI_COMM_WORLD.
- * Use MPI_Comm_split because it is simplier than MPI_Comm_create
- */
- mrc = MPI_Comm_split(MPI_COMM_WORLD, 0, 0, &comm);
- VRFY((mrc==MPI_SUCCESS), "MPI_Comm_split");
- MPI_Comm_size(comm,&mpi_size_old);
- MPI_Comm_rank(comm,&mpi_rank_old);
- if (VERBOSE_MED)
- printf("rank/size of comm are %d/%d\n", mpi_rank_old, mpi_size_old);
-
- acc_pl = H5Pcreate (H5P_FILE_ACCESS);
- VRFY((acc_pl >= 0), "H5P_FILE_ACCESS");
-
- ret = H5Pset_fapl_mpiposix(acc_pl, comm, use_gpfs);
- VRFY((ret >= 0), "");
-
- /* Case 1:
- * Free the created communicator object.
- * Check if the access property list is still valid and can return
- * valid communicator object.
- */
- mrc = MPI_Comm_free(&comm);
- VRFY((mrc==MPI_SUCCESS), "MPI_Comm_free");
-
- ret = H5Pget_fapl_mpiposix(acc_pl, &comm_tmp, &use_gpfs);
- VRFY((ret >= 0), "H5Pget_fapl_mpiposix");
- MPI_Comm_size(comm_tmp,&mpi_size_tmp);
- MPI_Comm_rank(comm_tmp,&mpi_rank_tmp);
- if (VERBOSE_MED)
- printf("After H5Pget_fapl_mpiposix: rank/size of comm are %d/%d\n",
- mpi_rank_tmp, mpi_size_tmp);
- VRFY((mpi_size_tmp==mpi_size), "MPI_Comm_size");
- VRFY((mpi_rank_tmp==mpi_rank), "MPI_Comm_rank");
-
- /* Case 2:
- * Free the retrieved communicator object.
- * Check if the access property list is still valid and can return
- * valid communicator object.
- * Also verify the NULL argument option.
- */
- mrc = MPI_Comm_free(&comm_tmp);
- VRFY((mrc==MPI_SUCCESS), "MPI_Comm_free");
-
- /* check NULL argument options. */
- ret = H5Pget_fapl_mpiposix(acc_pl, NULL, NULL);
- VRFY((ret >= 0), "H5Pget_fapl_mpiposix neither");
-
- /* now get it again and check validity too. */
- /* Don't free the returned object which is used in the next case. */
- ret = H5Pget_fapl_mpiposix(acc_pl, &comm_tmp, &use_gpfs);
- VRFY((ret >= 0), "H5Pget_fapl_mpiposix");
- MPI_Comm_size(comm_tmp,&mpi_size_tmp);
- MPI_Comm_rank(comm_tmp,&mpi_rank_tmp);
- if (VERBOSE_MED)
- printf("After second H5Pget_fapl_mpiposix: rank/size of comm are %d/%d\n",
- mpi_rank_tmp, mpi_size_tmp);
- VRFY((mpi_size_tmp==mpi_size), "MPI_Comm_size");
- VRFY((mpi_rank_tmp==mpi_rank), "MPI_Comm_rank");
-
- /* Case 3:
- * Close the property list and verify the retrieved communicator
- * object is still valid.
- */
- H5Pclose(acc_pl);
- MPI_Comm_size(comm_tmp,&mpi_size_tmp);
- MPI_Comm_rank(comm_tmp,&mpi_rank_tmp);
- if (VERBOSE_MED)
- printf("After Property list closed: rank/size of comm are %d/%d\n",
- mpi_rank_tmp, mpi_size_tmp);
-
- /* clean up */
- mrc = MPI_Comm_free(&comm_tmp);
- VRFY((mrc==MPI_SUCCESS), "MPI_Comm_free");
-}
diff --git a/testpar/t_posix_compliant.c b/testpar/t_posix_compliant.c
deleted file mode 100644
index 5ea089d..0000000
--- a/testpar/t_posix_compliant.c
+++ /dev/null
@@ -1,927 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * Copyright by The HDF Group. *
- * Copyright by the Board of Trustees of the University of Illinois. *
- * All rights reserved. *
- * *
- * This file is part of HDF5. The full HDF5 copyright notice, including *
- * terms governing use, modification, and redistribution, is contained in *
- * the files COPYING and Copyright.html. COPYING can be found at the root *
- * of the source code distribution tree; Copyright.html can be found at the *
- * root level of an installed copy of the electronic HDF5 document set and *
- * is linked from the top-level documents page. It can also be found at *
- * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from help@hdfgroup.org. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-/* A series of tests for posix compliance
- *
- * These tests do increasingly complicated sets of writes followed by reads.
- * POSIX standards say that any read that can be proven to occur after a write
- * must include the data in that write. These tests attempt to verify whether the
- * underlying filesystem and i/o layer provide such guarantees.
- *
- * There are two sets of tests, one which uses POSIX i/o (fread, fwrite) and one which
- * uses MPI I/O (MPI_File_read, MPI_File_write). Each set has multiple sub-tests, which
- * test varying patters of writes and reads.
- *
- *
- * TODO:
- * Add corresponding posix i/o tests for each MPI i/o test. Currently, not all of the
- * MPI IO tests are implemented using fwrite/fread.
- *
- * Leon Arber
- * larber@ncsa.uiuc.edu
-*/
-
-/* To compile this outside of the HDF5 library, you can do so by defining the
- * macro STANDALONE. E.g.,
- * mpicc -DSTANDALONE t_posix_compliant.c -o t_posix_compliant
- * then run it as an MPI application. E.g.,
- * mpiexec -np 3 ./t_posix_compliant
- */
-
-#ifdef H5_HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <mpi.h>
-#ifndef STANDALONE
-#include "h5test.h"
-#else
-#define HDmalloc(sz) malloc(sz)
-#define HDfree(p) free(p)
-#define getenv_all(comm, root, name) getenv(name)
-#endif
-#define TESTFNAME "posix_test" /* test file name */
-
-static char* testfile = NULL;
-static int err_flag = 0;
-static int max_err_print = 5;
-int nmismatches = 0; /* warnings encountered */
-
-/* globals needed for getopt
- * Although they *should* be defined in unistd.h */
-extern char *optarg;
-extern int optind, opterr;
-
-
-#define CHECK_SUCCESS(res) \
-{ \
- char err_got[MPI_MAX_ERROR_STRING]; \
- int err_len; \
- if(res != MPI_SUCCESS) \
- { \
- MPI_Error_string(res, err_got, &err_len); \
- fprintf(stderr, "Line %d, Error: %s\n", __LINE__, err_got); \
- MPI_Abort(MPI_COMM_WORLD, -2); \
- } \
-}
-
-#define PRINT_RESULT() \
-{ \
- int err_result; \
- MPI_Reduce(&err_flag, &err_result, 1, MPI_INT, MPI_MIN, 0, MPI_COMM_WORLD); \
- if( (rank == 0) && (err_result == 0) ) \
- printf("PASSED\n"); \
- fflush(stdout); \
- fflush(stderr); \
- err_flag = 0; \
-}
-
-static void vrfy_elements(int* a, int* b, int size, int rank);
-static int find_writesize(int rank, int numprocs, int write_size);
-
-
-/* All writes are to non-overlapping locations in the file
- * Then, each task reads another tasks' data
- * */
-
-static int allwrite_allread_blocks(int numprocs, int rank, int write_size)
-{
- MPI_File fh = MPI_FILE_NULL;
- int mpio_result;
- int amode, i;
- MPI_Offset offset = rank*write_size*sizeof(int);
- MPI_Status Status;
- int* writebuf = (int*)malloc(write_size*sizeof(int));
- int* readbuf = (int*)malloc (write_size*sizeof(int));
-
- for(i=0; i<write_size; i++)
- writebuf[i] = i;
-
- amode = MPI_MODE_CREATE | MPI_MODE_RDWR | MPI_MODE_DELETE_ON_CLOSE;
-
- mpio_result = MPI_File_open(MPI_COMM_WORLD, testfile, amode,
- MPI_INFO_NULL, &fh);
- CHECK_SUCCESS(mpio_result);
-
- mpio_result = MPI_File_write_at(fh, offset, writebuf, write_size, MPI_INT, &Status);
- CHECK_SUCCESS(mpio_result);
-
- MPI_Barrier(MPI_COMM_WORLD);
-
- offset = ( (rank+(numprocs-1)) % numprocs)*write_size*sizeof(int);
-
- mpio_result = MPI_File_read_at(fh, offset, readbuf, write_size, MPI_INT, &Status);
- CHECK_SUCCESS(mpio_result);
-
- vrfy_elements(writebuf, readbuf, write_size, rank);
-
- mpio_result = MPI_File_close(&fh);
- CHECK_SUCCESS(mpio_result);
- HDfree(writebuf);
- HDfree(readbuf);
-
- return err_flag;
-
-}
-
-static int posix_allwrite_allread_blocks(int numprocs, int rank, int write_size)
-{
- int ret;
- int i;
- int offset = rank*write_size*sizeof(int);
- int* writebuf = (int*)malloc(write_size*sizeof(int));
- int* readbuf = (int*)malloc (write_size*sizeof(int));
- FILE* file = NULL;
-
- for(i=0; i<write_size; i++)
- writebuf[i] = i;
-
- if(rank==0)
- file = fopen(testfile, "w+");
- MPI_Barrier(MPI_COMM_WORLD);
- if(rank != 0)
- file = fopen(testfile, "r+");
-
- if(file == NULL)
- {
- fprintf(stderr, "Could not create testfile\n");
- MPI_Abort(MPI_COMM_WORLD, 1);
- }
-
- ret = fseek(file, offset, SEEK_SET);
- if(ret == -1)
- {
- perror("fseek");
- MPI_Abort(MPI_COMM_WORLD, 1);
- }
-
-
- ret = fwrite(writebuf, sizeof(int), write_size, file);
- if(ret != write_size)
- {
- perror("fwrite");
- MPI_Abort(MPI_COMM_WORLD, 1);
- }
-
- MPI_Barrier(MPI_COMM_WORLD);
-
- offset = ( (rank+(numprocs-1)) % numprocs)*write_size*sizeof(int);
-
- ret = fseek(file, offset, SEEK_SET);
- if(ret == -1)
- {
- perror("fseek");
- MPI_Abort(MPI_COMM_WORLD, 1);
- }
-
- ret = fread(readbuf, sizeof(int), write_size, file);
- if( (ret == 0) && feof(file))
- printf("Process %d: Error. Prematurely reached end of file\n", rank);
- else if( (ret != write_size) && ferror(file))
- {
- perror("Error encountered in fread");
- MPI_Abort(MPI_COMM_WORLD, 1);
- }
-
- vrfy_elements(writebuf, readbuf, write_size, rank);
-
- fclose(file);
-
- MPI_Barrier(MPI_COMM_WORLD);
- if(rank == 0)
- unlink(testfile);
-
- HDfree(writebuf);
- HDfree(readbuf);
- return err_flag;
-
-}
-
-static int posix_onewrite_allread_blocks(int numprocs, int rank, int write_size)
-{
- int ret;
- int i;
- int offset = rank*write_size*sizeof(int);
- int* writebuf = (int*)malloc(write_size*sizeof(int));
- int* readbuf = (int*)malloc (write_size*sizeof(int));
- FILE* file = NULL;
-
- for(i=0; i<write_size; i++)
- writebuf[i] = i;
-
- if(rank==0)
- file = fopen(testfile, "w+");
- MPI_Barrier(MPI_COMM_WORLD);
- if(rank != 0)
- file = fopen(testfile, "r+");
-
- if(file == NULL)
- {
- fprintf(stderr, "Could not create testfile\n");
- MPI_Abort(MPI_COMM_WORLD, 1);
- }
-
- if(rank == 0)
- {
- for(offset = 0; offset<numprocs*write_size*sizeof(int); offset+=(write_size*sizeof(int)))
- {
- ret = fseek(file, offset, SEEK_SET);
- if(ret == -1)
- {
- perror("fseek");
- MPI_Abort(MPI_COMM_WORLD, 1);
- }
-
-
- ret = fwrite(writebuf, sizeof(int), write_size, file);
- if(ret != write_size)
- {
- perror("fwrite");
- MPI_Abort(MPI_COMM_WORLD, 1);
- }
- }
-
- }
- MPI_Barrier(MPI_COMM_WORLD);
-
- offset = rank*write_size*sizeof(int);
-
- ret = fseek(file, offset, SEEK_SET);
- if(ret == -1)
- {
- perror("fseek");
- MPI_Abort(MPI_COMM_WORLD, 1);
- }
-
- ret = fread(readbuf, sizeof(int), write_size, file);
- if( (ret == 0) && feof(file))
- printf("Process %d: Error. Prematurely reached end of file\n", rank);
- else if( (ret != write_size) && ferror(file))
- {
- perror("Error encountered in fread");
- MPI_Abort(MPI_COMM_WORLD, 1);
- }
-
- vrfy_elements(writebuf, readbuf, write_size, rank);
-
- fclose(file);
-
- MPI_Barrier(MPI_COMM_WORLD);
- if(rank == 0)
- unlink(testfile);
-
- HDfree(writebuf);
- HDfree(readbuf);
- return err_flag;
-
-}
-
-static int posix_onewrite_allread_interlaced(int numprocs, int rank, int write_size)
-{
- int ret;
- int i, fill, index;
- int offset = rank*write_size*sizeof(int);
- int* writebuf = (int*)malloc(write_size*sizeof(int));
- int* readbuf = (int*)malloc (write_size*sizeof(int));
- FILE* file = NULL;
-
- if(rank==0)
- file = fopen(testfile, "w+");
- MPI_Barrier(MPI_COMM_WORLD);
- if(rank != 0)
- file = fopen(testfile, "r+");
-
- if(file == NULL)
- {
- fprintf(stderr, "Could not create testfile\n");
- MPI_Abort(MPI_COMM_WORLD, 1);
- }
-
- if(rank == 0)
- {
- for(offset = 0; offset<numprocs*write_size*sizeof(int); offset+=(numprocs*sizeof(int)))
- {
- ret = fseek(file, offset, SEEK_SET);
- if(ret == -1)
- {
- perror("fseek");
- MPI_Abort(MPI_COMM_WORLD, 1);
- }
-
- fill = offset / (numprocs*sizeof(int));
- for(i=0; i<numprocs; i++)
- writebuf[i] = fill;
-
-
- ret = fwrite(writebuf, sizeof(int), numprocs, file);
- if(ret != numprocs)
- {
- perror("fwrite");
- MPI_Abort(MPI_COMM_WORLD, 1);
- }
- }
-
- }
- MPI_Barrier(MPI_COMM_WORLD);
-
- index = 0;
- for(offset = rank*sizeof(int); offset<numprocs*write_size*sizeof(int); offset+=(numprocs*sizeof(int)))
- {
-
- ret = fseek(file, offset, SEEK_SET);
- if(ret == -1)
- {
- perror("fseek");
- MPI_Abort(MPI_COMM_WORLD, 1);
- }
-
- ret = fread(readbuf+index, sizeof(int), 1, file);
- if( (ret == 0) && feof(file))
- printf("Process %d: Error. Prematurely reached end of file\n", rank);
- else if( (ret != 1) && ferror(file))
- {
- perror("Error encountered in fread");
- MPI_Abort(MPI_COMM_WORLD, 1);
- }
-
- index++;
- }
-
- for(i=0; i<write_size; i++)
- writebuf[i] = i;
-
- vrfy_elements(writebuf, readbuf, write_size, rank);
-
- fclose(file);
-
- MPI_Barrier(MPI_COMM_WORLD);
- if(rank == 0)
- unlink(testfile);
-
- HDfree(writebuf);
- HDfree(readbuf);
- return err_flag;
-
-}
-/* Each proc wites out 0 1 2 3 with displacement i, so file contents are:
- * 0000 1111 2222 3333 etc. (with 4 procs)
- *
- * Each proc then reads in the whole file and verifies that the data is what it is supposed to be*/
-
-static int allwrite_allread_interlaced(int numprocs, int rank, int write_size)
-{
- MPI_File fh = MPI_FILE_NULL;
- int mpio_result;
- int amode, i, counter = 0;
- MPI_Datatype filetype;
- MPI_Status Status;
- int* writebuf = (int*)malloc(write_size*sizeof(int));
- int* readbuf = (int*) malloc(numprocs*sizeof(int));
- int offset=0;
-
- for(i=0; i<write_size; i++)
- writebuf[i] = i;
-
-
- amode = MPI_MODE_CREATE | MPI_MODE_RDWR | MPI_MODE_DELETE_ON_CLOSE;
- mpio_result = MPI_File_open(MPI_COMM_WORLD, testfile, amode, MPI_INFO_NULL, &fh);
- CHECK_SUCCESS(mpio_result);
-
- mpio_result = MPI_Type_vector(write_size, 1, numprocs, MPI_INT, &filetype);
- CHECK_SUCCESS(mpio_result);
-
- mpio_result = MPI_Type_commit(&filetype);
- CHECK_SUCCESS(mpio_result);
-
- mpio_result = MPI_File_set_view(fh, rank*sizeof(int), MPI_INT, filetype, "native", MPI_INFO_NULL);
- CHECK_SUCCESS(mpio_result);
-
- mpio_result = MPI_File_write(fh, writebuf, write_size, MPI_INT, &Status);
- CHECK_SUCCESS(mpio_result);
-
- MPI_Barrier(MPI_COMM_WORLD);
-
- mpio_result = MPI_File_set_view(fh, 0, MPI_BYTE, MPI_BYTE, "native", MPI_INFO_NULL);
- CHECK_SUCCESS(mpio_result);
-
- for(offset = 0; offset<(write_size*numprocs*sizeof(int)); offset+=(numprocs*sizeof(int)))
- {
- mpio_result = MPI_File_read_at(fh, offset, readbuf, numprocs, MPI_INT, &Status);
- CHECK_SUCCESS(mpio_result);
-
- for(i=0; i<numprocs; i++)
- {
- if(writebuf[offset/(numprocs*sizeof(int))] != readbuf[i])
- {
- if( (rank == 0) && (counter == 0))
- printf("\n");
- if(counter++ < max_err_print)
- fprintf(stderr, "Arrays do not match! Prcoess %d, element %d: [%d, %d]\n", rank, i, writebuf[offset/(numprocs*sizeof(int))], readbuf[i]);
- else if(counter++ == max_err_print+1)
- fprintf(stderr, "Printed %d errors. Omitting the rest\n", max_err_print);
- err_flag = -1;
- }
-
- }
- }
- nmismatches += counter;
- mpio_result = MPI_File_close(&fh);
- CHECK_SUCCESS(mpio_result);
-
- HDfree(writebuf);
- HDfree(readbuf);
- return err_flag;
-
-
-}
-
-/* Overlapping pattern works as follows (this test requires at least 2 procs:
- * Writes:
- * Task 0: 0 2 4 6 etc...
- * Task 1: 1 3 5 7 etc...
- * Task 2: 0 3 6 etc..
- * Task 3: 0 4 8 etc...
- *
- * The above describes only the pattern of the elements being written. The actual
- * number of elements written is going to be:
- *
- * Task i where i=(numprocs-1) writes write_size elements. All other tasks do:
- * x = ((write_size-1)*numprocs)
- * Task i's write_size is the smallest multiple of i<=x divided by i, with the exception
- * of tasks 0 and 1, for whom i is 2, since they are writing the even and odd multiples.
- *
- * So, if there are 5 tasks with write_size=4, the resulting pattern of writes is:
- *
- * Task 0: 0 2 4 6 8 10 12 14
- * Task 1: 1 3 5 7 9 11 13 15
- * Task 2: 0 3 6 9 12 15
- * Task 3: 0 4 8 12
- * Task 4: 0 5 10 15
- *
- *
- *
- * * * All the entires that overlap will therefore be writing the same value
- *
- * At the end, all tasks read in the file and verify that it is correct should be
- * (1,2...((numprocs-1)*WRTE_SIZE).
- * */
-
-static int allwrite_allread_overlap(int numprocs, int rank, int write_size)
-{
-
- MPI_File fh = MPI_FILE_NULL;
- int mpio_result;
- int amode, i, counter = 0;
- MPI_Datatype filetype;
- MPI_Status Status;
- int* writebuf = (int*) malloc(write_size*(numprocs-1)*sizeof(int)); /* An upper bound...not all the elements will be written */
- int* readbuf = (int*) malloc(write_size*(numprocs-1)*sizeof(int));
-
- if(numprocs < 2)
- {
- fprintf(stderr, "The allwrite_allread_overlap test requires at least 2 procs\n");
- return -1;
- }
-
- if(rank == 0)
- {
- for(i=0; i<write_size*(numprocs-1); i++)
- writebuf[i] = 2*i;
- }
- else if(rank == 1)
- {
- for(i=0; i<write_size*(numprocs-1); i++)
- writebuf[i] = (2*i)+1;
- }
- else
- {
- for(i=0; i<write_size*(numprocs-1); i++)
- writebuf[i] = (rank+1)*i;
- }
-
- amode = MPI_MODE_CREATE | MPI_MODE_RDWR | MPI_MODE_DELETE_ON_CLOSE;
- mpio_result = MPI_File_open(MPI_COMM_WORLD, testfile, amode, MPI_INFO_NULL, &fh);
- CHECK_SUCCESS(mpio_result);
-
- if( (rank == 0) || (rank == 1) )
- mpio_result = MPI_Type_vector(write_size*(numprocs-1), 1, 2, MPI_INT, &filetype);
- else
- mpio_result = MPI_Type_vector(write_size*(numprocs-1), 1, rank+1, MPI_INT, &filetype);
- CHECK_SUCCESS(mpio_result);
-
- mpio_result = MPI_Type_commit(&filetype);
- CHECK_SUCCESS(mpio_result);
-
- if( rank == 1)
- mpio_result = MPI_File_set_view(fh, sizeof(int), MPI_INT, filetype, "native", MPI_INFO_NULL);
- else
- mpio_result = MPI_File_set_view(fh, 0, MPI_INT, filetype, "native", MPI_INFO_NULL);
- CHECK_SUCCESS(mpio_result);
-
- if( rank == (numprocs - 1))
- mpio_result = MPI_File_write(fh, writebuf, write_size, MPI_INT, &Status);
- else
- mpio_result = MPI_File_write(fh, writebuf, find_writesize(rank, numprocs, write_size), MPI_INT, &Status);
-
- CHECK_SUCCESS(mpio_result);
-
- MPI_Barrier(MPI_COMM_WORLD);
- mpio_result = MPI_File_set_view(fh, 0, MPI_BYTE, MPI_BYTE, "native", MPI_INFO_NULL);
- CHECK_SUCCESS(mpio_result);
-
- mpio_result = MPI_File_read_at(fh, 0, readbuf, write_size*(numprocs-1), MPI_INT, &Status);
- CHECK_SUCCESS(mpio_result);
-
- for(i=0; i<write_size*(numprocs-1); i++)
- {
- if(i != readbuf[i])
- {
- if( (rank == 0) && (counter == 0))
- printf("\n");
- if(counter++ < max_err_print)
- fprintf(stderr, "Arrays do not match! Prcoess %d, element %d: [%d, %d]\n", rank, i, i, readbuf[i]);
- else if(counter++ == max_err_print+1)
- fprintf(stderr, "Printed %d errors. Omitting the rest\n", max_err_print);
- err_flag = -1;
- }
- }
-
- nmismatches += counter;
- mpio_result = MPI_File_close(&fh);
- CHECK_SUCCESS(mpio_result);
- HDfree(writebuf);
- HDfree(readbuf);
-
- return err_flag;
-
-}
-
-/* A random process writes out the following to the file:
- * 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 (assuming write_size=5, and numprocs=3)
- *
- * Process i read's in write_size bytes at offset=i*write_size
- */
-static int onewrite_allread_blocks(int numprocs, int rank, int write_size)
-{
- MPI_File fh = MPI_FILE_NULL;
- int mpio_result;
- int amode, i;
- MPI_Status Status;
- int* writebuf = (int*)malloc(write_size*sizeof(int));
- int* readbuf = (int*)malloc (write_size*sizeof(int));
-
- for(i=0; i<write_size; i++)
- writebuf[i] = i;
-
- amode = MPI_MODE_CREATE | MPI_MODE_RDWR | MPI_MODE_DELETE_ON_CLOSE;
-
- mpio_result = MPI_File_open(MPI_COMM_WORLD, testfile, amode,
- MPI_INFO_NULL, &fh);
- CHECK_SUCCESS(mpio_result);
-
- /* A random process writes out all the data */
- if(rank == (rand() % numprocs))
- {
- for(i=0; i<numprocs; i++)
- {
- mpio_result = MPI_File_write_at(fh, write_size*i*sizeof(int), writebuf, write_size, MPI_INT, &Status);
- CHECK_SUCCESS(mpio_result);
- }
- }
-
- MPI_Barrier(MPI_COMM_WORLD);
-
- mpio_result = MPI_File_read_at(fh, write_size*rank*sizeof(int), readbuf, write_size, MPI_INT, &Status);
- CHECK_SUCCESS(mpio_result);
-
- vrfy_elements(writebuf, readbuf, write_size, rank);
-
- mpio_result = MPI_File_close(&fh);
- CHECK_SUCCESS(mpio_result);
- HDfree(writebuf);
- HDfree(readbuf);
-
- return err_flag;
-
-
-
-}
-
-/* Process zero writes out:
- * 0000 1111 2222 3333 etc. (with 4 procs)
- *
- * Each proc reads out 0 1 2 3 starting at displacement i */
-static int onewrite_allread_interlaced(int numprocs, int rank, int write_size)
-{
- MPI_File fh = MPI_FILE_NULL;
- int mpio_result;
- int amode, i;
- MPI_Datatype filetype;
- MPI_Status Status;
- int* writebuf = (int*) malloc(numprocs*write_size*sizeof(int)); /* Upper bound, not all used */
- int* readbuf = (int*)malloc (write_size*sizeof(int));
-
-
- amode = MPI_MODE_CREATE | MPI_MODE_RDWR;
- amode = MPI_MODE_CREATE | MPI_MODE_RDWR | MPI_MODE_DELETE_ON_CLOSE;
- mpio_result = MPI_File_open(MPI_COMM_WORLD, testfile, amode, MPI_INFO_NULL, &fh);
- CHECK_SUCCESS(mpio_result);
-
- mpio_result = MPI_Type_vector(write_size, 1, numprocs, MPI_INT, &filetype);
- CHECK_SUCCESS(mpio_result);
-
- mpio_result = MPI_Type_commit(&filetype);
- CHECK_SUCCESS(mpio_result);
-
- if(rank == (rand() % numprocs))
- {
- for(i=0; i<write_size; i++)
- {
- int j;
- for(j=0; j<numprocs; j++)
- writebuf[j] = i;
-
- mpio_result = MPI_File_write_at(fh, i*numprocs*sizeof(int), writebuf, numprocs, MPI_INT, &Status);
- CHECK_SUCCESS(mpio_result);
- }
- }
-
- MPI_Barrier(MPI_COMM_WORLD);
-
- mpio_result = MPI_File_set_view(fh, rank*sizeof(int), MPI_INT, filetype, "native", MPI_INFO_NULL);
- CHECK_SUCCESS(mpio_result);
-
- mpio_result = MPI_File_read_at(fh, 0, readbuf, write_size, MPI_INT, &Status);
- CHECK_SUCCESS(mpio_result);
-
- for(i=0; i<write_size; i++)
- writebuf[i] = i;
-
- vrfy_elements(writebuf, readbuf, write_size, rank);
-
- mpio_result = MPI_File_close(&fh);
- CHECK_SUCCESS(mpio_result);
- HDfree(writebuf);
- HDfree(readbuf);
-
- return err_flag;
-
-}
-
-static int find_writesize(int rank, int numprocs, int size)
-{
- /* Largest number in the file */
- int tmp = (size-1)*numprocs;
- int x = 0;
- int write_size = 0;
-
- /* Find largest multiple not greater than tmp */
- while(x <= tmp)
- {
- if( (rank == 0) || (rank == 1) )
- x+=2;
- else
- x += (rank+1);
-
- write_size++;
- }
-
- return write_size;
-}
-
-static void
-vrfy_elements(int* a, int* b, int size, int rank)
-{
- int i, counter = 0;
-
- for(i=0; i<size; i++)
- {
- if(a[i] != b[i])
- {
- if( (rank == 0) && (counter == 0))
- printf("\n");
- if(counter++ < max_err_print)
- fprintf(stderr, "Arrays do not match! Prcoess %d, element %d: [%d, %d]\n", rank, i, a[i], b[i]);
- else if(counter++ == max_err_print+1)
- fprintf(stderr, "Printed %d errors. Omitting the rest\n", max_err_print);
- err_flag = -1;
- }
- }
- nmismatches += counter;
- fflush(stderr);
- fflush(stdout);
-}
-
-/* print an explanation message by MAIN (0) process.
- */
-static void
-header_msg(void)
-{
- printf(
-"Purpose:\n"
-"This tests if the file system is posix compliant when POSIX and MPI IO APIs\n"
-"are used. This is for information only and always exits with 0 even when\n"
-"non-compliance errors are encounter. This is to prevent this test from\n"
-"aborting the remaining parallel HDF5 tests unnecessarily.\n\n"
- );
-}
-
-int
-main(int argc, char* argv[])
-{
-
- int numprocs, rank, opt, mpi_tests=1, posix_tests=1;
- int lb, ub, inc;
- int write_size = 0;
- char optstring[] = "h x m p: s: v:";
- char *prefix;
-
- err_flag = 0;
-
- MPI_Init(&argc, &argv);
- MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
- MPI_Comm_rank(MPI_COMM_WORLD, &rank);
-
- if (rank == 0)
- header_msg();
- while((opt = getopt(argc, argv, optstring)) != -1)
- {
- switch(opt)
- {
- case 'h':
- if(rank == 0)
- printf("Usage: %s [options]\n"
- "-h prints this help message\n"
- "-x run the posix i/o tests ONLY (default: posix and MPI)\n"
- "-m run the mpi i/o tests ONLY (default: posix and MPI)\n"
- "-s size Run the test for the specific size. Default is 1024, 4096, 16384, ..., 1048576\n"
- "-p path specifies path for test file. Default is current directory\n"
- "-v num Specifies number of unmatching entries to print (default 10, pass -1 for all)\n", argv[0]);
- goto done;
- case 'x':
- mpi_tests = 0;
- posix_tests = 1;
- break;
- case 'm':
- mpi_tests = 1;
- posix_tests = 0;
- break;
- case 'p':
- /* need 2 extra--1 for the / and 1 for the terminating NULL. */
- testfile = (char*) HDmalloc(strlen(optarg) + 2 + strlen(TESTFNAME));
- strcpy(testfile, optarg);
- /* Append a / just in case they didn't end their path with one */
- strcat(testfile, "/" TESTFNAME);
- break;
- case 's':
- write_size = atoi(optarg);
- break;
- case 'v':
- max_err_print = atoi(optarg);
- break;
- }
- }
-
- if( (optind < argc) && (rank == 0))
- fprintf(stderr, "Unkown command-line argument passed. Continuing anyway...\n");
-
- if (!testfile){
- /* Try environment variable if not given as option. */
- prefix = getenv_all(MPI_COMM_WORLD, 0, "HDF5_PARAPREFIX");
- if (prefix)
- {
- /* need 2 extra--1 for the / and 1 for the terminating NULL. */
- testfile = (char*) HDmalloc(strlen(prefix) + 2 + strlen(TESTFNAME));
- strcpy(testfile, prefix);
- /* Append a / just in case they didn't end their path with one */
- strcat(testfile, "/" TESTFNAME);
- }
- else
- {
- testfile = strdup(TESTFNAME);
- }
- }
- printf("Process %d: testfile=%s\n", rank, testfile);
- fflush(stdout);
- MPI_Barrier(MPI_COMM_WORLD);
-
- if(write_size == 0)
- {
- lb = 16*numprocs*sizeof(int);
- /* 1MB MPIO-IO overlapping is failing in copper. Lower it now pending
- permenant fix for copper.*/
- /* ub = 1024*1024;*/
- ub = lb*128;
- inc = 4;
- }
- else
- {
- lb = write_size;
- ub = write_size+1;
- inc = 2;
- }
-
-#ifndef STANDALONE
- /* set alarm. */
- ALARM_ON;
-#endif
-
- for(write_size = lb; write_size <= ub; write_size*=inc)
- {
- if(rank == 0)
- printf("\nTesting size %d\n", write_size);
-
- if(mpi_tests)
- {
- if(rank == 0)
- printf("Testing allwrite_allread_blocks with MPI IO\t\t"); fflush(stdout);
- allwrite_allread_blocks(numprocs, rank, write_size/(numprocs*sizeof(int)));
- PRINT_RESULT();
- MPI_Barrier(MPI_COMM_WORLD);
-
- if(rank == 0)
- printf("Testing allwrite_allread_interlaced with MPI IO\t\t"); fflush(stdout);
- allwrite_allread_interlaced(numprocs, rank, write_size/(numprocs*sizeof(int)));
- PRINT_RESULT();
- MPI_Barrier(MPI_COMM_WORLD);
-
- if(rank == 0)
- printf("Testing allwrite_allread_overlap with MPI IO\t\t"); fflush(stdout);
- allwrite_allread_overlap(numprocs, rank, write_size);
- PRINT_RESULT();
- MPI_Barrier(MPI_COMM_WORLD);
-
- if(rank == 0)
- printf("Testing onewrite_allread_blocks with MPI IO\t\t"); fflush(stdout);
- onewrite_allread_blocks(numprocs, rank, write_size/(numprocs*sizeof(int)));
- PRINT_RESULT();
- MPI_Barrier(MPI_COMM_WORLD);
-
- if(rank == 0)
- printf("Testing onewrite_allread_interlaced with MPI IO\t\t"); fflush(stdout);
- onewrite_allread_interlaced(numprocs, rank, write_size/(numprocs*sizeof(int)));
- PRINT_RESULT();
- MPI_Barrier(MPI_COMM_WORLD);
- }
-
- if(posix_tests)
- {
- if(rank == 0)
- printf("Testing allwrite_allread_blocks with POSIX IO\t\t"); fflush(stdout);
- posix_allwrite_allread_blocks(numprocs, rank, write_size/(numprocs*sizeof(int)));
- PRINT_RESULT();
- MPI_Barrier(MPI_COMM_WORLD);
-
- if(rank == 0)
- printf("Testing onewrite_allread_blocks with POSIX IO\t\t"); fflush(stdout);
- posix_onewrite_allread_blocks(numprocs, rank, write_size/(numprocs*sizeof(int)));
- PRINT_RESULT();
- MPI_Barrier(MPI_COMM_WORLD);
-
- if(rank == 0)
- printf("Testing onewrite_allread_interlaced with POSIX IO\t"); fflush(stdout);
- posix_onewrite_allread_interlaced(numprocs, rank, write_size/(numprocs*sizeof(int)));
- PRINT_RESULT();
- MPI_Barrier(MPI_COMM_WORLD);
-
- /* if(rank == 0)
- printf("Testing allwrite_allread_overlap with POSIX IO\t\t"); fflush(stdout);
- posix_allwrite_allread_overlap(numprocs, rank, write_size);
- PRINT_RESULT();
- MPI_Barrier(MPI_COMM_WORLD);
-*/
- }
- }
-
-#ifndef STANDALONE
- /* turn off alarm */
- ALARM_OFF;
-#endif
-
-done:
- if (testfile)
- HDfree(testfile);
- if (rank == 0){
- printf("\nSummary:\n");
- fflush(stdout);
- }
- MPI_Barrier(MPI_COMM_WORLD);
- printf("Process %d: encountered %d mismatches.\n", rank, nmismatches);
- MPI_Finalize();
-
- return 0;
-}
diff --git a/testpar/t_shapesame.c b/testpar/t_shapesame.c
index 2d379d6..1a74295 100644
--- a/testpar/t_shapesame.c
+++ b/testpar/t_shapesame.c
@@ -139,7 +139,6 @@ hs_dr_pio_test__setup(const int test_num,
const char *fcnName = "hs_dr_pio_test__setup()";
#endif /* CONTIG_HS_DR_PIO_TEST__SETUP__DEBUG */
const char *filename;
- hbool_t use_gpfs = FALSE; /* Use GPFS hints */
hbool_t mis_match = FALSE;
int i;
int mrc;
@@ -282,7 +281,7 @@ hs_dr_pio_test__setup(const int test_num,
* CREATE AN HDF5 FILE WITH PARALLEL ACCESS
* ---------------------------------------*/
/* setup file access template */
- acc_tpl = create_faccess_plist(tv_ptr->mpi_comm, tv_ptr->mpi_info, facc_type, use_gpfs);
+ acc_tpl = create_faccess_plist(tv_ptr->mpi_comm, tv_ptr->mpi_info, facc_type);
VRFY((acc_tpl >= 0), "create_faccess_plist() succeeded");
/* set the alignment -- need it large so that we aren't always hitting the
@@ -4789,7 +4788,6 @@ usage(void)
"\tset number of groups for the multiple group test\n");
printf("\t-f <prefix>\tfilename prefix\n");
printf("\t-2\t\tuse Split-file together with MPIO\n");
- printf("\t-p\t\tuse combo MPI-POSIX driver\n");
printf("\t-d <factor0> <factor1>\tdataset dimensions factors. Defaults (%d,%d)\n",
ROW_FACTOR, COL_FACTOR);
printf("\t-c <dim0> <dim1>\tdataset chunk dimensions. Defaults (dim0/10,dim1/10)\n");
@@ -4840,9 +4838,6 @@ parse_options(int argc, char **argv)
}
paraprefix = *argv;
break;
- case 'p': /* Use the MPI-POSIX driver access */
- facc_type = FACC_MPIPOSIX;
- break;
case 'i': /* Collective MPI-IO access with independent IO */
dxfer_coll_type = DXFER_INDEPENDENT_IO;
break;
@@ -4928,8 +4923,7 @@ parse_options(int argc, char **argv)
* Create the appropriate File access property list
*/
hid_t
-create_faccess_plist(MPI_Comm comm, MPI_Info info, int l_facc_type,
- hbool_t use_gpfs)
+create_faccess_plist(MPI_Comm comm, MPI_Info info, int l_facc_type)
{
hid_t ret_pl = -1;
herr_t ret; /* generic return value */
@@ -4970,13 +4964,6 @@ create_faccess_plist(MPI_Comm comm, MPI_Info info, int l_facc_type,
return(ret_pl);
}
- if (l_facc_type == FACC_MPIPOSIX) {
- /* set Parallel access with communicator */
- ret = H5Pset_fapl_mpiposix(ret_pl, comm, use_gpfs);
- VRFY((ret >= 0), "H5Pset_fapl_mpiposix succeeded");
- return(ret_pl);
- }
-
/* unknown file access types */
return (ret_pl);
}
@@ -5108,12 +5095,6 @@ int main(int argc, char **argv)
/* Parse command line arguments */
TestParseCmdLine(argc, argv);
- if (facc_type == FACC_MPIPOSIX && MAINPROCESS){
- printf("===================================\n"
- " Using MPIPOSIX driver\n"
- "===================================\n");
- }
-
if (dxfer_coll_type == DXFER_INDEPENDENT_IO && MAINPROCESS){
printf("===================================\n"
" Using Independent I/O with file set view to replace collective I/O \n"
diff --git a/testpar/t_span_tree.c b/testpar/t_span_tree.c
index 2730ea2..6e233a9 100644
--- a/testpar/t_span_tree.c
+++ b/testpar/t_span_tree.c
@@ -261,7 +261,6 @@ void coll_write_test(int chunk_factor)
int *matrix_out, *matrix_out1, *vector;
- hbool_t use_gpfs = FALSE;
int mpi_size,mpi_rank;
MPI_Comm comm = MPI_COMM_WORLD;
@@ -293,7 +292,7 @@ void coll_write_test(int chunk_factor)
for (i = 1; i < MSPACE1_DIM*mpi_size - 1; i++) vector[i] = i;
/* Grab file access property list */
- facc_plist = create_faccess_plist(comm, info, facc_type, use_gpfs);
+ facc_plist = create_faccess_plist(comm, info, facc_type);
VRFY((facc_plist >= 0),"");
/*
@@ -474,7 +473,7 @@ void coll_write_test(int chunk_factor)
***/
/* Obtain file access property list with MPI-IO driver */
- facc_plist = create_faccess_plist(comm, info, facc_type, use_gpfs);
+ facc_plist = create_faccess_plist(comm, info, facc_type);
VRFY((facc_plist >= 0),"");
file = H5Fopen(filename, H5F_ACC_RDONLY, facc_plist);
@@ -724,7 +723,6 @@ coll_read_test(int chunk_factor)
dataset */
#endif
- hbool_t use_gpfs = FALSE;
int mpi_size,mpi_rank;
MPI_Comm comm = MPI_COMM_WORLD;
@@ -749,7 +747,7 @@ coll_read_test(int chunk_factor)
/*** For testing collective hyperslab selection read ***/
/* Obtain file access property list */
- facc_plist = create_faccess_plist(comm, info, facc_type, use_gpfs);
+ facc_plist = create_faccess_plist(comm, info, facc_type);
VRFY((facc_plist >= 0),"");
/*
@@ -1582,7 +1580,6 @@ lower_dim_size_comp_test__run_test(const int chunk_edge_size,
hsize_t max_dims[32];
#endif /* LOWER_DIM_SIZE_COMP_TEST__RUN_TEST__DEBUG */
const char *filename;
- hbool_t use_gpfs = FALSE; /* Use GPFS hints */
hbool_t data_ok = FALSE;
hbool_t mis_match = FALSE;
int i;
@@ -1717,7 +1714,7 @@ lower_dim_size_comp_test__run_test(const int chunk_edge_size,
* CREATE AN HDF5 FILE WITH PARALLEL ACCESS
* ---------------------------------------*/
/* setup file access template */
- acc_tpl = create_faccess_plist(mpi_comm, mpi_info, facc_type, use_gpfs);
+ acc_tpl = create_faccess_plist(mpi_comm, mpi_info, facc_type);
VRFY((acc_tpl >= 0), "create_faccess_plist() succeeded");
/* create the file collectively */
@@ -2681,7 +2678,6 @@ link_chunk_collective_io_test(void)
/* const char *fcnName = "link_chunk_collective_io_test()"; */
const char *filename;
hbool_t mis_match = FALSE;
- hbool_t use_gpfs = FALSE; /* Use GPFS hints */
int i;
int mrc;
int mpi_rank;
@@ -2718,7 +2714,7 @@ link_chunk_collective_io_test(void)
HDassert( filename != NULL );
/* setup file access template */
- acc_tpl = create_faccess_plist(mpi_comm, mpi_info, facc_type, use_gpfs);
+ acc_tpl = create_faccess_plist(mpi_comm, mpi_info, facc_type);
VRFY((acc_tpl >= 0), "create_faccess_plist() succeeded");
/* create the file collectively */
diff --git a/testpar/testph5.sh.in b/testpar/testph5.sh.in
deleted file mode 100644
index 83327ca..0000000
--- a/testpar/testph5.sh.in
+++ /dev/null
@@ -1,77 +0,0 @@
-#! /bin/sh
-#
-# Copyright by The HDF Group.
-# Copyright by the Board of Trustees of the University of Illinois.
-# All rights reserved.
-#
-# This file is part of HDF5. The full HDF5 copyright notice, including
-# terms governing use, modification, and redistribution, is contained in
-# the files COPYING and Copyright.html. COPYING can be found at the root
-# of the source code distribution tree; Copyright.html can be found at the
-# root level of an installed copy of the electronic HDF5 document set and
-# is linked from the top-level documents page. It can also be found at
-# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have
-# access to either file, you may request a copy from help@hdfgroup.org.
-#
-
-# Scripts for running testphdf5 program with a variety of parameters
-top_srcdir=@top_srcdir@
-top_builddir=..
-srcdir=@srcdir@
-
-TEST_APP=testphdf5 # The tool name
-TEST_APP_BIN=`pwd`/$TEST_APP # The path of the tool binary
-
-nerrors=0
-verbose=yes
-
-# Print a line-line message left justified in a field of 70 characters
-# beginning with the word "Testing".
-#
-TESTING() {
- SPACES=" "
- echo "Testing $* $SPACES" | cut -c1-70 | tr -d '\012'
-}
-
-# Run a test. If a test fails then increment the `nerrors' global variable.
-#
-TOOLTEST() {
- # Run test.
- echo $RUNPARALLEL $TEST_APP_BIN "$@"
- eval $RUNPARALLEL $TEST_APP_BIN "$@"
-
- # Check if the command failed and increment nerrors if so.
- if test $? -ne 0 ; then
- nerrors="`expr $nerrors + 1`"
- fi
-}
-
-##############################################################################
-##############################################################################
-### T H E T E S T S ###
-##############################################################################
-##############################################################################
-
-# testphdf5 test using the MPI-POSIX VFL driver
-TOOLTEST -p
-
-# Temporary patch:
-# Run t_shapesame this way. Need more permanent solution.
-echo $RUNPARALLEL ./t_shapesame -p
-eval $RUNPARALLEL ./t_shapesame -p
-
-# Check if the command failed and increment nerrors if so.
-if test $? -ne 0 ; then
- nerrors="`expr $nerrors + 1`"
-fi
-# Temporary patch ended.
-
-# Emit message about testing status
-if test $nerrors -eq 0 ; then
- echo "All $TEST_APP tests passed."
-else
- echo "ERROR! One or more $TEST_APP tests failed."
-fi
-
-# Propagate a useful exit code
-exit $nerrors
diff --git a/testpar/testphdf5.c b/testpar/testphdf5.c
index 3c5f91d..d91c24c 100644
--- a/testpar/testphdf5.c
+++ b/testpar/testphdf5.c
@@ -118,7 +118,6 @@ usage(void)
"\tset number of groups for the multiple group test\n");
printf("\t-f <prefix>\tfilename prefix\n");
printf("\t-2\t\tuse Split-file together with MPIO\n");
- printf("\t-p\t\tuse combo MPI-POSIX driver\n");
printf("\t-d <factor0> <factor1>\tdataset dimensions factors. Defaults (%d,%d)\n",
ROW_FACTOR, COL_FACTOR);
printf("\t-c <dim0> <dim1>\tdataset chunk dimensions. Defaults (dim0/10,dim1/10)\n");
@@ -169,9 +168,6 @@ parse_options(int argc, char **argv)
}
paraprefix = *argv;
break;
- case 'p': /* Use the MPI-POSIX driver access */
- facc_type = FACC_MPIPOSIX;
- break;
case 'i': /* Collective MPI-IO access with independent IO */
dxfer_coll_type = DXFER_INDEPENDENT_IO;
break;
@@ -257,8 +253,7 @@ parse_options(int argc, char **argv)
* Create the appropriate File access property list
*/
hid_t
-create_faccess_plist(MPI_Comm comm, MPI_Info info, int l_facc_type,
- hbool_t use_gpfs)
+create_faccess_plist(MPI_Comm comm, MPI_Info info, int l_facc_type)
{
hid_t ret_pl = -1;
herr_t ret; /* generic return value */
@@ -299,13 +294,6 @@ create_faccess_plist(MPI_Comm comm, MPI_Info info, int l_facc_type,
return(ret_pl);
}
- if (l_facc_type == FACC_MPIPOSIX) {
- /* set Parallel access with communicator */
- ret = H5Pset_fapl_mpiposix(ret_pl, comm, use_gpfs);
- VRFY((ret >= 0), "H5Pset_fapl_mpiposix succeeded");
- return(ret_pl);
- }
-
/* unknown file access types */
return (ret_pl);
}
@@ -353,8 +341,6 @@ int main(int argc, char **argv)
/* Tests are generally arranged from least to most complexity... */
AddTest("mpiodup", test_fapl_mpio_dup, NULL,
"fapl_mpio duplicate", NULL);
- AddTest("posixdup", test_fapl_mpiposix_dup, NULL,
- "fapl_mpiposix duplicate", NULL);
AddTest("split", test_split_comm_access, NULL,
"dataset using split communicators", PARATESTFILE);
@@ -549,12 +535,6 @@ int main(int argc, char **argv)
/* Parse command line arguments */
TestParseCmdLine(argc, argv);
- if (facc_type == FACC_MPIPOSIX && MAINPROCESS){
- printf("===================================\n"
- " Using MPIPOSIX driver\n"
- "===================================\n");
- }
-
if (dxfer_coll_type == DXFER_INDEPENDENT_IO && MAINPROCESS){
printf("===================================\n"
" Using Independent I/O with file set view to replace collective I/O \n"
diff --git a/testpar/testphdf5.h b/testpar/testphdf5.h
index 08bbf12..100fa41 100644
--- a/testpar/testphdf5.h
+++ b/testpar/testphdf5.h
@@ -63,8 +63,6 @@ enum H5TEST_COLL_CHUNK_API {API_NONE=0,API_LINK_HARD,
#define FACC_DEFAULT 0x0 /* default */
#define FACC_MPIO 0x1 /* MPIO */
#define FACC_SPLIT 0x2 /* Split File */
-#define FACC_MULTI 0x4 /* Multi File */
-#define FACC_MPIPOSIX 0x8 /* MPIPOSIX */
#define DXFER_COLLECTIVE_IO 0x1 /* Collective IO*/
#define DXFER_INDEPENDENT_IO 0x2 /* Independent IO collectively */
@@ -186,14 +184,13 @@ enum H5TEST_COLL_CHUNK_API {API_NONE=0,API_LINK_HARD,
#define TEST_SET_INDEPENDENT 0x002
#define TEST_DATATYPE_CONVERSION 0x004
#define TEST_DATA_TRANSFORMS 0x008
-#define TEST_SET_MPIPOSIX 0x010
-#define TEST_NOT_SIMPLE_OR_SCALAR_DATASPACES 0x020
-#define TEST_NOT_CONTIGUOUS_OR_CHUNKED_DATASET_COMPACT 0x040
-#define TEST_NOT_CONTIGUOUS_OR_CHUNKED_DATASET_EXTERNAL 0x080
-#define TEST_FILTERS 0x100
+#define TEST_NOT_SIMPLE_OR_SCALAR_DATASPACES 0x010
+#define TEST_NOT_CONTIGUOUS_OR_CHUNKED_DATASET_COMPACT 0x020
+#define TEST_NOT_CONTIGUOUS_OR_CHUNKED_DATASET_EXTERNAL 0x040
+#define TEST_FILTERS 0x080
/* TEST_FILTERS will take place of this after supporting mpio + filter for
* H5Dcreate and H5Dwrite */
-#define TEST_FILTERS_READ 0x200
+#define TEST_FILTERS_READ 0x100
/* Don't erase these lines, they are put here for debugging purposes */
/*
@@ -245,7 +242,6 @@ void multiple_group_read(void);
void collective_group_write(void);
void independent_group_read(void);
void test_fapl_mpio_dup(void);
-void test_fapl_mpiposix_dup(void);
void test_split_comm_access(void);
void dataset_atomicity(void);
void dataset_writeInd(void);
@@ -297,7 +293,7 @@ void compress_readAll(void);
void test_dense_attr(void);
/* commonly used prototypes */
-hid_t create_faccess_plist(MPI_Comm comm, MPI_Info info, int l_facc_type, hbool_t use_gpfs);
+hid_t create_faccess_plist(MPI_Comm comm, MPI_Info info, int l_facc_type);
MPI_Offset h5_mpi_get_file_size(const char *filename, MPI_Comm comm, MPI_Info info);
int dataset_vrfy(hsize_t start[], hsize_t count[], hsize_t stride[],
hsize_t block[], DATATYPE *dataset, DATATYPE *original);
diff --git a/tools/Makefile.in b/tools/Makefile.in
index 5b9568a..a456113 100644
--- a/tools/Makefile.in
+++ b/tools/Makefile.in
@@ -214,7 +214,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
diff --git a/tools/h5copy/Makefile.in b/tools/h5copy/Makefile.in
index b922c9b..51b3640 100644
--- a/tools/h5copy/Makefile.in
+++ b/tools/h5copy/Makefile.in
@@ -220,7 +220,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
diff --git a/tools/h5diff/Makefile.in b/tools/h5diff/Makefile.in
index 1b732b0..e38d2e1 100644
--- a/tools/h5diff/Makefile.in
+++ b/tools/h5diff/Makefile.in
@@ -227,7 +227,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
diff --git a/tools/h5dump/Makefile.in b/tools/h5dump/Makefile.in
index 21a622d..7770b93 100644
--- a/tools/h5dump/Makefile.in
+++ b/tools/h5dump/Makefile.in
@@ -226,7 +226,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
diff --git a/tools/h5dump/h5dump_ddl.c b/tools/h5dump/h5dump_ddl.c
index 42e2c88..1227e6e 100644
--- a/tools/h5dump/h5dump_ddl.c
+++ b/tools/h5dump/h5dump_ddl.c
@@ -1203,28 +1203,24 @@ dump_fcpl(hid_t fid)
PRINTSTREAM(rawoutstream, "%s %d\n","BTREE_LEAF", sym_lk);
#ifdef SHOW_FILE_DRIVER
- if (H5FD_CORE==fdriver)
+ if(H5FD_CORE==fdriver)
HDstrcpy(dname,"H5FD_CORE");
#ifdef H5_HAVE_DIRECT
- else if (H5FD_DIRECT==fdriver)
+ else if(H5FD_DIRECT==fdriver)
HDstrcpy(dname,"H5FD_DIRECT");
#endif
- else if (H5FD_FAMILY==fdriver)
+ else if(H5FD_FAMILY==fdriver)
HDstrcpy(dname,"H5FD_FAMILY");
- else if (H5FD_LOG==fdriver)
+ else if(H5FD_LOG==fdriver)
HDstrcpy(dname,"H5FD_LOG");
- else if (H5FD_MPIO==fdriver)
+ else if(H5FD_MPIO==fdriver)
HDstrcpy(dname,"H5FD_MPIO");
- else if (H5FD_MULTI==fdriver)
+ else if(H5FD_MULTI==fdriver)
HDstrcpy(dname,"H5FD_MULTI");
- else if (H5FD_SEC2==fdriver)
+ else if(H5FD_SEC2==fdriver)
HDstrcpy(dname,"H5FD_SEC2");
- else if (H5FD_STDIO==fdriver)
+ else if(H5FD_STDIO==fdriver)
HDstrcpy(dname,"H5FD_STDIO");
-#ifdef H5_HAVE_STREAM
- else if (H5FD_STREAM==fdriver)
- HDstrcpy(dname,"H5FD_STREAM");
-#endif
else
HDstrcpy(dname,"Unknown driver");
diff --git a/tools/h5import/Makefile.in b/tools/h5import/Makefile.in
index 94910af..93e27ff 100644
--- a/tools/h5import/Makefile.in
+++ b/tools/h5import/Makefile.in
@@ -220,7 +220,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
diff --git a/tools/h5jam/Makefile.in b/tools/h5jam/Makefile.in
index 7256d6e..3f46362 100644
--- a/tools/h5jam/Makefile.in
+++ b/tools/h5jam/Makefile.in
@@ -234,7 +234,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
diff --git a/tools/h5ls/Makefile.in b/tools/h5ls/Makefile.in
index d67249f..54b73c7 100644
--- a/tools/h5ls/Makefile.in
+++ b/tools/h5ls/Makefile.in
@@ -214,7 +214,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
diff --git a/tools/h5repack/Makefile.in b/tools/h5repack/Makefile.in
index fc37649..8ea55d9 100644
--- a/tools/h5repack/Makefile.in
+++ b/tools/h5repack/Makefile.in
@@ -270,7 +270,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
diff --git a/tools/h5stat/Makefile.in b/tools/h5stat/Makefile.in
index d2c26a2..282d329 100644
--- a/tools/h5stat/Makefile.in
+++ b/tools/h5stat/Makefile.in
@@ -249,7 +249,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
diff --git a/tools/lib/Makefile.in b/tools/lib/Makefile.in
index 6f7f3b9..b41282a 100644
--- a/tools/lib/Makefile.in
+++ b/tools/lib/Makefile.in
@@ -212,7 +212,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
diff --git a/tools/lib/h5tools.c b/tools/lib/h5tools.c
index 4643804..fb12408 100644
--- a/tools/lib/h5tools.c
+++ b/tools/lib/h5tools.c
@@ -64,12 +64,8 @@ static const char *drivernames[]={
"family",
"split",
"multi",
-#ifdef H5_HAVE_STREAM
- "stream",
-#endif /* H5_HAVE_STREAM */
#ifdef H5_HAVE_PARALLEL
"mpio",
- "mpiposix"
#endif /* H5_HAVE_PARALLEL */
};
@@ -80,12 +76,8 @@ typedef enum {
,FAMILY_IDX
,SPLIT_IDX
,MULTI_IDX
-#ifdef H5_HAVE_STREAM
- ,STREAM_IDX
-#endif /* H5_HAVE_STREAM */
#ifdef H5_HAVE_PARALLEL
,MPIO_IDX
- ,MPIPOSIX_IDX
#endif /* H5_HAVE_PARALLEL */
} driver_idx;
#define NUM_DRIVERS (sizeof(drivernames) / sizeof(drivernames[0]))
@@ -521,48 +513,23 @@ h5tools_get_fapl(hid_t fapl, const char *driver, unsigned *drivernum)
if(drivernum)
*drivernum = MULTI_IDX;
-#ifdef H5_HAVE_STREAM
- }
- else if(!HDstrcmp(driver, drivernames[STREAM_IDX])) {
- /* STREAM Driver */
- if(H5Pset_fapl_stream(new_fapl, NULL) < 0)
- goto error;
-
- if(drivernum)
- *drivernum = STREAM_IDX;
-#endif /* H5_HAVE_STREAM */
-#ifdef H5_HAVE_PARALLEL
- }
- else if(!HDstrcmp(driver, drivernames[MPIO_IDX])) {
- /* MPI-I/O Driver */
- /* check if MPI has been initialized. */
- if(!h5tools_mpi_init_g)
- MPI_Initialized(&h5tools_mpi_init_g);
- if(h5tools_mpi_init_g) {
- if(H5Pset_fapl_mpio(new_fapl, MPI_COMM_WORLD, MPI_INFO_NULL) < 0)
- goto error;
-
- if(drivernum)
- *drivernum = MPIO_IDX;
- } /* end if */
}
- else if (!HDstrcmp(driver, drivernames[MPIPOSIX_IDX])) {
+#ifdef H5_HAVE_PARALLEL
+ else if(!HDstrcmp(driver, drivernames[MPIO_IDX])) {
/* MPI-I/O Driver */
/* check if MPI has been initialized. */
if(!h5tools_mpi_init_g)
MPI_Initialized(&h5tools_mpi_init_g);
if(h5tools_mpi_init_g) {
- if(H5Pset_fapl_mpiposix(new_fapl, MPI_COMM_WORLD, TRUE) < 0)
+ if(H5Pset_fapl_mpio(new_fapl, MPI_COMM_WORLD, MPI_INFO_NULL) < 0)
goto error;
-
if(drivernum)
- *drivernum = MPIPOSIX_IDX;
+ *drivernum = MPIO_IDX;
} /* end if */
-#endif /* H5_HAVE_PARALLEL */
}
- else {
+#endif /* H5_HAVE_PARALLEL */
+ else
goto error;
- }
return(new_fapl);
@@ -580,8 +547,7 @@ error:
* Loop through the various types of VFL drivers trying to open FNAME.
* If the HDF5 library is version 1.2 or less, then we have only the SEC2
* driver to try out. If the HDF5 library is greater than version 1.2,
- * then we have the FAMILY, SPLIT, and MULTI drivers to play with (and
- * the STREAM driver if H5_HAVE_STREAM is defined, that is).
+ * then we have the FAMILY, SPLIT, and MULTI drivers to play with.
*
* If DRIVER is non-NULL, then it will try to open the file with that
* driver first. We assume that the user knows what they are doing so, if
@@ -956,10 +922,9 @@ h5tools_region_simple_prefix(FILE *stream, const h5tool_format_t *info,
h5tools_str_region_prefix(&prefix, info, elmtno, ptdata, ctx->ndims, ctx->p_max_idx, ctx);
/* Write new prefix to output */
- if (ctx->indent_level >= 0) {
+ if (ctx->indent_level >= 0)
indentlevel = ctx->indent_level;
- }
- else {
+ else
/*
* This is because sometimes we don't print out all the header
* info for the data (like the tattr-2.ddl example). If that happens
@@ -967,25 +932,20 @@ h5tools_region_simple_prefix(FILE *stream, const h5tool_format_t *info,
* just print out the default indent levels.
*/
indentlevel = ctx->default_indent_level;
- }
/* when printing array indices, print the indentation before the prefix
the prefix is printed one indentation level before */
- if (info->pindex) {
+ if (info->pindex)
for (i = 0; i < indentlevel - 1; i++) {
PUTSTREAM(h5tools_str_fmt(&str, 0, info->line_indent), stream);
}
- }
if (elmtno == 0 && secnum == 0 && info->line_1st) {
PUTSTREAM(h5tools_str_fmt(&prefix, 0, info->line_1st), stream);
- }
- else if (secnum && info->line_cont) {
+ } else if (secnum && info->line_cont) {
PUTSTREAM(h5tools_str_fmt(&prefix, 0, info->line_cont), stream);
- }
- else {
+ } else
PUTSTREAM(h5tools_str_fmt(&prefix, 0, info->line_pre), stream);
- }
templength = h5tools_str_len(&prefix);
diff --git a/tools/misc/Makefile.in b/tools/misc/Makefile.in
index 47bf60d..a20b3db 100644
--- a/tools/misc/Makefile.in
+++ b/tools/misc/Makefile.in
@@ -274,7 +274,6 @@ FC_VERSION = @FC_VERSION@
FGREP = @FGREP@
FILTERS = @FILTERS@
FSEARCH_DIRS = @FSEARCH_DIRS@
-GPFS = @GPFS@
GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
diff --git a/vms/src/h5pubconf.h b/vms/src/h5pubconf.h
index b9843e7..914d720 100644
--- a/vms/src/h5pubconf.h
+++ b/vms/src/h5pubconf.h
@@ -180,12 +180,6 @@
/* Define to 1 if you have the `get_fpc_csr' function. */
/* #undef H5_HAVE_GET_FPC_CSR */
-/* Define if we have GPFS support */
-/* #undef H5_HAVE_GPFS */
-
-/* Define to 1 if you have the <gpfs.h> header file. */
-/* #undef H5_HAVE_GPFS_H */
-
/* Define if library will contain instrumentation to detect correct
optimization operation */
#define H5_HAVE_INSTRUMENTED_LIBRARY 1
diff --git a/vms/src/make.com b/vms/src/make.com
index 39bc133..be5efea 100644
--- a/vms/src/make.com
+++ b/vms/src/make.com
@@ -49,7 +49,7 @@ $ cobj= "H5, H5checksum, H5dbg, H5system, H5timer, H5trace,"+-
"H5E, H5Edeprec, H5Eint,"+-
"H5Faccum, H5F, H5Fcwfs, H5Fdbg, H5FD, H5FDcore,"+-
"H5FDdirect, H5FDfamily, H5FDint, H5FDlog, H5FDmpi, H5FDmpio,"+-
- "H5FDmpiposix, H5FDmulti, H5FDsec2, H5FDspace, H5FDstdio,"+-
+ "H5FDmulti, H5FDsec2, H5FDspace, H5FDstdio,"+-
"H5FDwindows, H5Fefc, H5Ffake, H5Fio, H5FL, H5Fmount, H5Fmpi, H5FO, H5Fquery, H5FS, "+-
"H5FScache, H5FSdbg, H5Fsfile, H5FSsection, H5FSstat, H5FStest, H5Fsuper, H5Fsuper_cache, H5Ftest,"+-
"H5Gbtree2, H5G, H5Gcache, H5Gcompact, H5Gdense, H5Gdeprec, H5Gent, H5Gint,"+-