summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaymond Lu <songyulu@hdfgroup.org>2012-12-06 16:02:01 (GMT)
committerRaymond Lu <songyulu@hdfgroup.org>2012-12-06 16:02:01 (GMT)
commitb7e1b629e96727a4fe47ff3218d94aa274974b6a (patch)
treea452013b96012f8653cd4ee7e43995d876f59802
parent6b1ef6ad02dc941507a27722666dae9a09cc11cc (diff)
downloadhdf5-b7e1b629e96727a4fe47ff3218d94aa274974b6a.zip
hdf5-b7e1b629e96727a4fe47ff3218d94aa274974b6a.tar.gz
hdf5-b7e1b629e96727a4fe47ff3218d94aa274974b6a.tar.bz2
[svn-r23081] ported revisions 22987 to 23080 from the trunk
-rw-r--r--CMakeLists.txt5
-rw-r--r--MANIFEST6
-rw-r--r--README.txt2
-rw-r--r--c++/src/Makefile.in2
-rw-r--r--config/cmake/H5pubconf.h.in18
-rw-r--r--config/cmake/prunTest.cmake24
-rw-r--r--config/cmake/runTest.cmake48
-rw-r--r--config/lt_vers.am2
-rwxr-xr-xconfigure33
-rw-r--r--configure.ac13
-rw-r--r--fortran/examples/CMakeLists.txt5
-rw-r--r--fortran/examples/Makefile.am5
-rw-r--r--fortran/examples/Makefile.in5
-rw-r--r--fortran/examples/grpit.f90215
-rw-r--r--fortran/src/CMakeLists.txt28
-rw-r--r--fortran/src/Makefile.in2
-rw-r--r--fortran/src/hdf5_fortrandll.def544
-rw-r--r--fortran/src/hdf5_fortrandll.def.in (renamed from fortran/src/phdf5_fortrandll.def)46
-rw-r--r--fortran/test/CMakeLists.txt4
-rw-r--r--hl/c++/src/Makefile.in2
-rw-r--r--hl/fortran/src/Makefile.in2
-rw-r--r--hl/src/Makefile.in2
-rw-r--r--release_docs/RELEASE.txt321
-rw-r--r--src/H5Dmpio.c302
-rw-r--r--src/H5Dprivate.h2
-rw-r--r--src/H5FDcore.c2
-rw-r--r--src/H5FDdirect.c9
-rw-r--r--src/H5FDfamily.c4
-rw-r--r--src/H5FDlog.c18
-rw-r--r--src/H5FDmpio.c4
-rw-r--r--src/H5FDmpiposix.c4
-rw-r--r--src/H5Pocpl.c5
-rw-r--r--src/H5Ppublic.h3
-rw-r--r--src/H5detect.c21
-rw-r--r--src/H5public.h4
-rw-r--r--src/H5trace.c4
-rw-r--r--src/Makefile.in2
-rw-r--r--testpar/t_coll_chunk.c36
-rw-r--r--testpar/t_dset.c104
-rw-r--r--testpar/testphdf5.c2
-rw-r--r--testpar/testphdf5.h9
-rw-r--r--tools/h5dump/CMakeLists.txt12
-rw-r--r--tools/h5dump/h5dumpgentest.c60
-rw-r--r--tools/h5dump/testh5dump.sh.in4
-rw-r--r--tools/h5stat/testh5stat.sh.in14
-rw-r--r--tools/lib/h5tools_dump.c50
-rw-r--r--tools/lib/h5tools_dump.h3
-rw-r--r--tools/testfiles/tscalarstring.ddl28
-rw-r--r--tools/testfiles/tscalarstring.h5bin0 -> 2208 bytes
-rw-r--r--vms/src/h5pubconf.h6
50 files changed, 683 insertions, 1363 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0d2db1d..d86d29e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -759,6 +759,11 @@ IF (EXISTS "${HDF5_SOURCE_DIR}/fortran" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/for
IF (HDF5_BUILD_FORTRAN)
OPTION (HDF5_ENABLE_F2003 "Enable FORTRAN 2003 Standard" OFF)
INCLUDE (${HDF5_RESOURCES_DIR}/HDF5UseFortran.cmake)
+ IF (HDF5_ENABLE_F2003)
+ IF (NOT FORTRAN_HAVE_ISO_C_BINDING)
+ SET (HDF5_ENABLE_F2003 OFF)
+ ENDIF (NOT FORTRAN_HAVE_ISO_C_BINDING)
+ ENDIF (HDF5_ENABLE_F2003)
# -----------------------------------------------------------------------
# wrapper script variables
diff --git a/MANIFEST b/MANIFEST
index 23a75fd..4eb48cf 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -246,7 +246,6 @@
./fortran/examples/fileexample.f90
./fortran/examples/groupexample.f90
./fortran/examples/grpdsetexample.f90
-./fortran/examples/grpit.f90
./fortran/examples/grpsexample.f90
./fortran/examples/hyperslab.f90
./fortran/examples/mountexample.f90
@@ -325,8 +324,7 @@
./fortran/src/README
./fortran/src/README_DEVELOPEMENT _DO_NOT_DISTRIBUTE_
./fortran/src/h5fc.in
-./fortran/src/hdf5_fortrandll.def
-./fortran/src/phdf5_fortrandll.def
+./fortran/src/hdf5_fortrandll.def.in
./fortran/test/Makefile.am
./fortran/test/Makefile.in
@@ -1481,6 +1479,8 @@
./tools/testfiles/tscalarattrintsize.h5
./tools/testfiles/tscalarintsize.ddl
./tools/testfiles/tscalarintsize.h5
+./tools/testfiles/tscalarstring.ddl
+./tools/testfiles/tscalarstring.h5
./tools/testfiles/tscaleoffset.ddl
./tools/testfiles/tslink-1.ddl
./tools/testfiles/tslink-2.ddl
diff --git a/README.txt b/README.txt
index 2a17830..40b5adb 100644
--- a/README.txt
+++ b/README.txt
@@ -1,4 +1,4 @@
-HDF5 version 1.9.132 currently under development
+HDF5 version 1.9.136 currently under development
Please refer to the release_docs/INSTALL file for installation instructions.
------------------------------------------------------------------------------
diff --git a/c++/src/Makefile.in b/c++/src/Makefile.in
index 7a4d3ee..52e32ff 100644
--- a/c++/src/Makefile.in
+++ b/c++/src/Makefile.in
@@ -467,7 +467,7 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog
# Add libtool shared library version numbers to the HDF5 library
# See libtool versioning documentation online.
LT_VERS_INTERFACE = 6
-LT_VERS_REVISION = 122
+LT_VERS_REVISION = 126
LT_VERS_AGE = 0
# Include src directory
diff --git a/config/cmake/H5pubconf.h.in b/config/cmake/H5pubconf.h.in
index 71e8c10..6fca1ae 100644
--- a/config/cmake/H5pubconf.h.in
+++ b/config/cmake/H5pubconf.h.in
@@ -15,6 +15,24 @@
/* Define if using a Windows compiler (i.e. Visual Studio) */
#cmakedefine H5_HAVE_VISUAL_STUDIO @H5_HAVE_VISUAL_STUDIO@
+/* Defined if HDF5 was built with CMake AND build as a shared library */
+#cmakedefine H5_BUILT_AS_DYNAMIC_LIB @H5_BUILT_AS_DYNAMIC_LIB@
+
+/* Defined if HDF5 was built with CMake AND build as a static library */
+#cmakedefine H5_BUILT_AS_STATIC_LIB @H5_BUILT_AS_STATIC_LIB@
+
+/* Defined if HDF5 CPP was built with CMake AND build as a shared library */
+#cmakedefine H5_CPP_BUILT_AS_DYNAMIC_LIB @H5_CPP_BUILT_AS_DYNAMIC_LIB@
+
+/* Defined if HDF5 CPP was built with CMake AND build as a static library */
+#cmakedefine H5_CPP_BUILT_AS_STATIC_LIB @H5_CPP_BUILT_AS_STATIC_LIB@
+
+/* Defined if HDF5 HL was built with CMake AND build as a shared library */
+#cmakedefine H5_HL_BUILT_AS_DYNAMIC_LIB @H5_HL_BUILT_AS_DYNAMIC_LIB@
+
+/* Defined if HDF5 HL was built with CMake AND build as a static library */
+#cmakedefine H5_HL_BUILT_AS_STATIC_LIB @H5_HL_BUILT_AS_STATIC_LIB@
+
/* Define if building universal (internal helper macro) */
#cmakedefine H5_AC_APPLE_UNIVERSAL_BUILD @H5_AC_APPLE_UNIVERSAL_BUILD@
diff --git a/config/cmake/prunTest.cmake b/config/cmake/prunTest.cmake
index 8bcf729..261f8a4 100644
--- a/config/cmake/prunTest.cmake
+++ b/config/cmake/prunTest.cmake
@@ -103,16 +103,30 @@ IF (NOT TEST_SKIP_COMPARE)
ENDIF (WIN32 AND NOT MINGW)
# now compare the output with the reference
- EXECUTE_PROCESS (
- COMMAND ${CMAKE_COMMAND} -E compare_files ${TEST_FOLDER}/${TEST_OUTPUT} ${TEST_FOLDER}/P_${TEST_REFERENCE}
- RESULT_VARIABLE TEST_RESULT
- )
+ SET (TEST_RESULT 0)
+ FILE (STRINGS ${TEST_FOLDER}/${TEST_OUTPUT} test_act)
+ LIST (LENGTH "${test_act}" len_act)
+ FILE (STRINGS ${TEST_FOLDER}/P_${TEST_REFERENCE} test_ref)
+ LIST (LENGTH "${test_ref}" len_ref)
+ MATH (EXPR _FP_LEN "${len_ref} - 1")
+ FOREACH (line RANGE 0 ${_FP_LEN})
+ LIST (GET "${test_act}" ${line} str_act)
+ LIST (GET "${test_ref}" ${line} str_ref)
+ STRING (COMPARE NOTEQUAL ${str_act} ${str_ref} str_res)
+ IF (${str_res})
+ SET (TEST_RESULT 1)
+ MESSAGE ("line = ${line}\n***ACTUAL: ${str_act}\n****REFER: ${str_ref}")
+ ENDIF (${str_res})
+ ENDFOREACH (line RANGE 0 ${_FP_LEN})
+ IF (NOT ${len_act} STREQUAL ${len_ref})
+ SET (TEST_RESULT 1)
+ ENDIF (NOT ${len_act} STREQUAL ${len_ref})
MESSAGE (STATUS "COMPARE Result: ${TEST_RESULT}")
# again, if return value is !=0 scream and shout
IF (NOT ${TEST_RESULT} STREQUAL 0)
- MESSAGE (FATAL_ERROR "Failed: The output of ${TEST_PROGRAM} did not match P_${TEST_REFERENCE}")
+ MESSAGE (FATAL_ERROR "Failed: The output of ${TEST_OUTPUT} did not match P_${TEST_REFERENCE}")
ENDIF (NOT ${TEST_RESULT} STREQUAL 0)
ENDIF (NOT TEST_SKIP_COMPARE)
diff --git a/config/cmake/runTest.cmake b/config/cmake/runTest.cmake
index 4738523..78ccf9f 100644
--- a/config/cmake/runTest.cmake
+++ b/config/cmake/runTest.cmake
@@ -108,16 +108,30 @@ IF (NOT TEST_SKIP_COMPARE)
ENDIF (WIN32 AND NOT MINGW)
# now compare the output with the reference
- EXECUTE_PROCESS (
- COMMAND ${CMAKE_COMMAND} -E compare_files ${TEST_FOLDER}/${TEST_OUTPUT} ${TEST_FOLDER}/${TEST_REFERENCE}
- RESULT_VARIABLE TEST_RESULT
- )
+ SET (TEST_RESULT 0)
+ FILE (STRINGS ${TEST_FOLDER}/${TEST_OUTPUT} test_act)
+ LIST (LENGTH "${test_act}" len_act)
+ FILE (STRINGS ${TEST_FOLDER}/${TEST_REFERENCE} test_ref)
+ LIST (LENGTH "${test_ref}" len_ref)
+ MATH (EXPR _FP_LEN "${len_ref} - 1")
+ FOREACH (line RANGE 0 ${_FP_LEN})
+ LIST (GET "${test_act}" ${line} str_act)
+ LIST (GET "${test_ref}" ${line} str_ref)
+ STRING (COMPARE NOTEQUAL ${str_act} ${str_ref} str_res)
+ IF (${str_res})
+ SET (TEST_RESULT 1)
+ MESSAGE ("line = ${line}\n***ACTUAL: ${str_act}\n****REFER: ${str_ref}")
+ ENDIF (${str_res})
+ ENDFOREACH (line RANGE 0 ${_FP_LEN})
+ IF (NOT ${len_act} STREQUAL ${len_ref})
+ SET (TEST_RESULT 1)
+ ENDIF (NOT ${len_act} STREQUAL ${len_ref})
MESSAGE (STATUS "COMPARE Result: ${TEST_RESULT}")
# again, if return value is !=0 scream and shout
IF (NOT ${TEST_RESULT} STREQUAL 0)
- MESSAGE (FATAL_ERROR "Failed: The output of ${TEST_PROGRAM} did not match ${TEST_REFERENCE}")
+ MESSAGE (FATAL_ERROR "Failed: The output of ${TEST_OUTPUT} did not match ${TEST_REFERENCE}")
ENDIF (NOT ${TEST_RESULT} STREQUAL 0)
IF (TEST_ERRREF)
@@ -127,16 +141,30 @@ IF (NOT TEST_SKIP_COMPARE)
ENDIF (WIN32 AND NOT MINGW)
# now compare the error output with the error reference
- EXECUTE_PROCESS (
- COMMAND ${CMAKE_COMMAND} -E compare_files ${TEST_FOLDER}/${TEST_OUTPUT}.err ${TEST_FOLDER}/${TEST_ERRREF}
- RESULT_VARIABLE TEST_RESULT
- )
+ SET (TEST_RESULT 0)
+ FILE (STRINGS ${TEST_FOLDER}/${TEST_OUTPUT}.err test_act)
+ LIST (LENGTH "${test_act}" len_act)
+ FILE (STRINGS ${TEST_FOLDER}/${TEST_ERRREF} test_ref)
+ LIST (LENGTH "${test_ref}" len_ref)
+ MATH (EXPR _FP_LEN "${len_ref} - 1")
+ FOREACH (line RANGE 0 ${_FP_LEN})
+ LIST (GET "${test_act}" ${line} str_act)
+ LIST (GET "${test_ref}" ${line} str_ref)
+ STRING (COMPARE NOTEQUAL ${str_act} ${str_ref} str_res)
+ IF (${str_res})
+ SET (TEST_RESULT 1)
+ MESSAGE ("line = ${line}\n***ACTUAL: ${str_act}\n****REFER: ${str_ref}")
+ ENDIF (${str_res})
+ ENDFOREACH (line RANGE 0 ${_FP_LEN})
+ IF (NOT ${len_act} STREQUAL ${len_ref})
+ SET (TEST_RESULT 1)
+ ENDIF (NOT ${len_act} STREQUAL ${len_ref})
MESSAGE (STATUS "COMPARE Result: ${TEST_RESULT}")
# again, if return value is !=0 scream and shout
IF (NOT ${TEST_RESULT} STREQUAL 0)
- MESSAGE (FATAL_ERROR "Failed: The error output of ${TEST_PROGRAM} did not match ${TEST_ERRREF}")
+ MESSAGE (FATAL_ERROR "Failed: The error output of ${TEST_OUTPUT}.err did not match ${TEST_ERRREF}")
ENDIF (NOT ${TEST_RESULT} STREQUAL 0)
ENDIF (TEST_ERRREF)
ENDIF (NOT TEST_SKIP_COMPARE)
diff --git a/config/lt_vers.am b/config/lt_vers.am
index 53af6ed..d0944fa 100644
--- a/config/lt_vers.am
+++ b/config/lt_vers.am
@@ -17,7 +17,7 @@
# Add libtool shared library version numbers to the HDF5 library
# See libtool versioning documentation online.
LT_VERS_INTERFACE = 6
-LT_VERS_REVISION = 122
+LT_VERS_REVISION = 126
LT_VERS_AGE = 0
## If the API changes *at all*, increment LT_VERS_INTERFACE and
diff --git a/configure b/configure
index 1180d09..9b37513 100755
--- a/configure
+++ b/configure
@@ -1,7 +1,7 @@
#! /bin/sh
# From configure.ac Id: configure.ac 22697 2012-08-19 14:35:47Z hdftest .
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for HDF5 1.9.132.
+# Generated by GNU Autoconf 2.69 for HDF5 1.9.136.
#
# Report bugs to <help@hdfgroup.org>.
#
@@ -591,8 +591,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='HDF5'
PACKAGE_TARNAME='hdf5'
-PACKAGE_VERSION='1.9.132'
-PACKAGE_STRING='HDF5 1.9.132'
+PACKAGE_VERSION='1.9.136'
+PACKAGE_STRING='HDF5 1.9.136'
PACKAGE_BUGREPORT='help@hdfgroup.org'
PACKAGE_URL=''
@@ -1484,7 +1484,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures HDF5 1.9.132 to adapt to many kinds of systems.
+\`configure' configures HDF5 1.9.136 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1554,7 +1554,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of HDF5 1.9.132:";;
+ short | recursive ) echo "Configuration of HDF5 1.9.136:";;
esac
cat <<\_ACEOF
@@ -1750,7 +1750,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-HDF5 configure 1.9.132
+HDF5 configure 1.9.136
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2844,7 +2844,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by HDF5 $as_me 1.9.132, which was
+It was created by HDF5 $as_me 1.9.136, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -3676,7 +3676,7 @@ fi
# Define the identity of the package.
PACKAGE='hdf5'
- VERSION='1.9.132'
+ VERSION='1.9.136'
cat >>confdefs.h <<_ACEOF
@@ -27153,11 +27153,18 @@ else
echo "int main(int argc, char * argv) {return 0;}" > conftest.c
$CC $CFLAGS conftest.c > /dev/null 2> /dev/null
- echo "./a.out :" > conftest.sh
+case "`uname`" in
+ CYGWIN*)
+ echo "./a.exe :" > conftest.sh
+ ;;
+ *)
+ echo "./a.out :" > conftest.sh
+ ;;
+esac
chmod 700 conftest.sh
./conftest.sh 2> conftest.out
- rm a.out
+ rm -f a.out a.exe
TEST_OUTPUT=`cat conftest.out`
if test "X$TEST_OUTPUT" = "X"; then
@@ -31715,7 +31722,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by HDF5 $as_me 1.9.132, which was
+This file was extended by HDF5 $as_me 1.9.136, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -31781,7 +31788,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-HDF5 config.status 1.9.132
+HDF5 config.status 1.9.136
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
@@ -34554,7 +34561,7 @@ Usage: $0 [OPTIONS]
Report bugs to <bug-libtool@gnu.org>."
lt_cl_version="\
-HDF5 config.lt 1.9.132
+HDF5 config.lt 1.9.136
configured by $0, generated by GNU Autoconf 2.69.
Copyright (C) 2011 Free Software Foundation, Inc.
diff --git a/configure.ac b/configure.ac
index e40a1af..7b5cf92 100644
--- a/configure.ac
+++ b/configure.ac
@@ -26,7 +26,7 @@ AC_PREREQ([2.69])
## NOTE: Do not forget to change the version number here when we do a
## release!!!
##
-AC_INIT([HDF5], [1.9.132], [help@hdfgroup.org])
+AC_INIT([HDF5], [1.9.136], [help@hdfgroup.org])
AC_CONFIG_SRCDIR([src/H5.c])
AC_CONFIG_HEADER([src/H5config.h])
@@ -2233,11 +2233,18 @@ AC_CACHE_CHECK([if lone colon can be used as an argument],
[
echo "int main(int argc, char * argv[]) {return 0;}" > conftest.c
$CC $CFLAGS conftest.c > /dev/null 2> /dev/null
- echo "./a.out :" > conftest.sh
+case "`uname`" in
+ CYGWIN*)
+ echo "./a.exe :" > conftest.sh
+ ;;
+ *)
+ echo "./a.out :" > conftest.sh
+ ;;
+esac
chmod 700 conftest.sh
./conftest.sh 2> conftest.out
- rm a.out
+ rm -f a.out a.exe
TEST_OUTPUT=`cat conftest.out`
if test "X$TEST_OUTPUT" = "X"; then
diff --git a/fortran/examples/CMakeLists.txt b/fortran/examples/CMakeLists.txt
index 814da48..0825f81 100644
--- a/fortran/examples/CMakeLists.txt
+++ b/fortran/examples/CMakeLists.txt
@@ -23,7 +23,6 @@ SET (examples
grpdsetexample
hyperslab
selectele
- grpit
refobjexample
refregexample
mountexample
@@ -64,7 +63,7 @@ FOREACH (example ${examples})
ENDFOREACH (example ${examples})
-IF (FORTRAN_HAVE_ISO_C_BINDING AND HDF5_ENABLE_F2003)
+IF (HDF5_ENABLE_F2003)
FOREACH (example ${F2003_examples})
ADD_EXECUTABLE (f03_ex_${example} ${HDF5_F90_EXAMPLES_SOURCE_DIR}/${example}.f90)
TARGET_NAMING (f03_ex_${example} ${LIB_TYPE})
@@ -89,7 +88,7 @@ IF (FORTRAN_HAVE_ISO_C_BINDING AND HDF5_ENABLE_F2003)
SET (last_test "f03_ex_${example}")
ENDIF (BUILD_TESTING)
ENDFOREACH (example ${F2003_examples})
-ENDIF (FORTRAN_HAVE_ISO_C_BINDING AND HDF5_ENABLE_F2003)
+ENDIF (HDF5_ENABLE_F2003)
IF (H5_HAVE_PARALLEL AND MPI_Fortran_FOUND)
ADD_EXECUTABLE (f90_ex_ph5example ${HDF5_F90_EXAMPLES_SOURCE_DIR}/ph5example.f90)
diff --git a/fortran/examples/Makefile.am b/fortran/examples/Makefile.am
index 4fb4180..310c4e2 100644
--- a/fortran/examples/Makefile.am
+++ b/fortran/examples/Makefile.am
@@ -33,13 +33,13 @@ endif
# compile them with the regular fortran compiler.
EXAMPLE_PROG=dsetexample fileexample rwdsetexample attrexample groupexample \
- grpsexample grpdsetexample hyperslab selectele grpit refobjexample \
+ grpsexample grpdsetexample hyperslab selectele refobjexample \
refregexample mountexample compound
# List files to be installed here
INSTALL_FILES=dsetexample.f90 fileexample.f90 rwdsetexample.f90 \
attrexample.f90 groupexample.f90 grpsexample.f90 grpdsetexample.f90 \
- hyperslab.f90 selectele.f90 grpit.f90 refobjexample.f90 \
+ hyperslab.f90 selectele.f90 refobjexample.f90 \
refregexample.f90 mountexample.f90 compound.f90 ph5example.f90
INSTALL_SCRIPT_FILES = run-fortran-ex.sh
@@ -93,7 +93,6 @@ grpsexample: grpsexample.f90
grpdsetexample: grpdsetexample.f90
hyperslab: hyperslab.f90
selectele: selectele.f90
-grpit: grpit.f90
refobjexample: refobjexample.f90
refregexample: refregexample.f90
mountexample: mountexample.f90
diff --git a/fortran/examples/Makefile.in b/fortran/examples/Makefile.in
index 06c2632..21adf62 100644
--- a/fortran/examples/Makefile.in
+++ b/fortran/examples/Makefile.in
@@ -407,13 +407,13 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog *.h5
# compile them with the regular fortran compiler.
EXAMPLE_PROG = dsetexample fileexample rwdsetexample attrexample \
groupexample grpsexample grpdsetexample hyperslab selectele \
- grpit refobjexample refregexample mountexample compound \
+ refobjexample refregexample mountexample compound \
$(am__append_1)
# List files to be installed here
INSTALL_FILES = dsetexample.f90 fileexample.f90 rwdsetexample.f90 \
attrexample.f90 groupexample.f90 grpsexample.f90 \
- grpdsetexample.f90 hyperslab.f90 selectele.f90 grpit.f90 \
+ grpdsetexample.f90 hyperslab.f90 selectele.f90 \
refobjexample.f90 refregexample.f90 mountexample.f90 \
compound.f90 ph5example.f90 $(am__append_2)
INSTALL_SCRIPT_FILES = run-fortran-ex.sh
@@ -697,7 +697,6 @@ grpsexample: grpsexample.f90
grpdsetexample: grpdsetexample.f90
hyperslab: hyperslab.f90
selectele: selectele.f90
-grpit: grpit.f90
refobjexample: refobjexample.f90
refregexample: refregexample.f90
mountexample: mountexample.f90
diff --git a/fortran/examples/grpit.f90 b/fortran/examples/grpit.f90
deleted file mode 100644
index 9361b17..0000000
--- a/fortran/examples/grpit.f90
+++ /dev/null
@@ -1,215 +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. *
-! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-!
-!
-! In this example we iterate through the members of the groups.
-!
-
-
- PROGRAM GRPITEXAMPLE
-
- USE HDF5 ! This module contains all necessary modules
-
- IMPLICIT NONE
-
- CHARACTER(LEN=11), PARAMETER :: filename = "iteratef.h5" ! File name
- CHARACTER(LEN=7), PARAMETER :: groupname1 = "MyGroup" ! Group name
- CHARACTER(LEN=15), PARAMETER :: groupname2 = "Group_A" ! Group name
- CHARACTER(LEN=13), PARAMETER :: dsetname1 = "dset1" ! Dataset name
- CHARACTER(LEN=5), PARAMETER :: dsetname2 = "dset2" !
-
- CHARACTER(LEN=20) :: name_buffer ! Buffer to hold object's name
- INTEGER :: type ! Type of the object
- INTEGER :: nmembers ! Number of group members
-
- INTEGER(HID_T) :: file_id ! File identifier
- INTEGER(HID_T) :: dataset1_id ! Dataset1 identifier
- INTEGER(HID_T) :: dataset2_id ! Dataset2 identifier
- INTEGER(HID_T) :: dataspace1_id ! Data space identifier
- INTEGER(HID_T) :: dataspace2_id ! Data space identifier
- INTEGER(HID_T) :: group1_id, group2_id ! Group identifiers
-
- INTEGER :: i, j
-
- INTEGER :: error ! Error flag
-
- INTEGER, DIMENSION(3,3) :: dset1_data ! Arrays to hold data
- INTEGER, DIMENSION(2,10) :: dset2_data !
-
-
- INTEGER(HSIZE_T), DIMENSION(2) :: dims1 = (/3,3/) ! Dataset dimensions
- INTEGER(HSIZE_T), DIMENSION(2) :: dims2 = (/2,10/)!
- INTEGER :: rank = 2 ! Datasets rank
- INTEGER(HSIZE_T), DIMENSION(2) :: data_dims
-
- !
- ! Initialize dset1_data array.
- !
- do i = 1, 3
- do j = 1, 3
- dset1_data(i,j) = j;
- end do
- end do
-
-
- !
- ! Initialize dset2_data array.
- !
- do i = 1, 2
- do j = 1, 10
- dset2_data(i,j) = j;
- end do
- end do
-
- !
- ! Initialize FORTRAN interface.
- !
- CALL h5open_f(error)
-
- !
- ! Create a new file using default properties.
- !
- CALL h5fcreate_f(filename, H5F_ACC_TRUNC_F, file_id, error)
-
- !
- ! Create group "MyGroup" in the root group using absolute name.
- !
- CALL h5gcreate_f(file_id, groupname1, group1_id, error)
-
- !
- ! Create group "Group_A" in group "MyGroup" using relative name.
- !
- CALL h5gcreate_f(group1_id, groupname2, group2_id, error)
-
- !
- ! Create the data space for the first dataset.
- !
- CALL h5screate_simple_f(rank, dims1, dataspace1_id, error)
-
- !
- ! Create a dataset in group "MyGroup" with default properties.
- !
- CALL h5dcreate_f(group1_id, dsetname1, H5T_NATIVE_INTEGER, dataspace1_id, &
- dataset1_id, error)
-
- !
- ! Write the first dataset.
- !
- data_dims(1) = 3
- data_dims(2) = 3
- CALL h5dwrite_f(dataset1_id, H5T_NATIVE_INTEGER, dset1_data, data_dims, error)
-
- !
- ! Create the data space for the second dataset.
- !
- CALL h5screate_simple_f(rank, dims2, dataspace2_id, error)
-
- !
- ! Create the second dataset in group "Group_A" with default properties
- !
- CALL h5dcreate_f(group2_id, dsetname2, H5T_NATIVE_INTEGER, dataspace2_id, &
- dataset2_id, error)
-
- !
- ! Write the second dataset
- !
- data_dims(1) = 2
- data_dims(2) = 10
- CALL h5dwrite_f(dataset2_id, H5T_NATIVE_INTEGER, dset2_data, data_dims, error)
-
- !
- ! Get number of members in the root group.
- !
- CALL h5gn_members_f(file_id, "/", nmembers, error)
- write(*,*) "Number of root group member is " , nmembers
-
- !
- ! Print each group member's name and type.
- !
- do i = 0, nmembers - 1
- CALL h5gget_obj_info_idx_f(file_id, "/", i, name_buffer, type, &
- error)
- write(*,*) name_buffer, type
- end do
-
- !
- ! Get number of members in MyGroup.
- !
- CALL h5gn_members_f(file_id, "MyGroup", nmembers, error)
- write(*,*) "Number of group MyGroup member is ", nmembers
-
- !
- ! Print each group member's name and type in "MyGroup" group.
- !
- do i = 0, nmembers - 1
- CALL h5gget_obj_info_idx_f(file_id, groupname1, i, name_buffer, type, &
- error)
- write(*,*) name_buffer, type
- end do
-
-
- !
- ! Get number of members in MyGroup/Group_A.
- !
- CALL h5gn_members_f(file_id, "MyGroup/Group_A", nmembers, error)
- write(*,*) "Number of group MyGroup/Group_A member is ", nmembers
-
- !
- ! Print each group member's name and type in "MyGroup/Group_A" group.
- !
- do i = 0, nmembers - 1
- CALL h5gget_obj_info_idx_f(file_id,"MyGroup/Group_A" , i, name_buffer, type, &
- error)
- write(*,*) name_buffer, type
- end do
-
- !
- ! Close the dataspace for the first dataset.
- !
- CALL h5sclose_f(dataspace1_id, error)
-
- !
- ! Close the first dataset.
- !
- CALL h5dclose_f(dataset1_id, error)
-
- !
- ! Close the dataspace for the second dataset.
- !
- CALL h5sclose_f(dataspace2_id, error)
-
- !
- ! Close the second dataset.
- !
- CALL h5dclose_f(dataset2_id, error)
-
- !
- ! Close the groups.
- !
- CALL h5gclose_f(group1_id, error)
-
- CALL h5gclose_f(group2_id, error)
-
- !
- ! Close the file.
- !
- CALL h5fclose_f(file_id, error)
-
- !
- ! Close FORTRAN interface.
- !
- CALL h5close_f(error)
-
- END PROGRAM GRPITEXAMPLE
diff --git a/fortran/src/CMakeLists.txt b/fortran/src/CMakeLists.txt
index 25e14ba..374bc44 100644
--- a/fortran/src/CMakeLists.txt
+++ b/fortran/src/CMakeLists.txt
@@ -2,6 +2,22 @@ cmake_minimum_required (VERSION 2.8.6)
PROJECT (HDF5_F90_SRC C CXX Fortran)
#-----------------------------------------------------------------------------
+# configure def file for shared libs on windows
+IF (WIN32 AND NOT CYGWIN)
+ IF (BUILD_SHARED_LIBS)
+ IF (MSVC)
+ IF (NOT H5_HAVE_PARALLEL)
+ SET (H5_NOPAREXP ";")
+ ENDIF (NOT H5_HAVE_PARALLEL)
+ IF (NOT HDF5_ENABLE_F2003)
+ SET (H5_NOF03EXP ";")
+ ENDIF (NOT HDF5_ENABLE_F2003)
+ CONFIGURE_FILE (${HDF5_F90_SRC_SOURCE_DIR}/hdf5_fortrandll.def.in ${HDF5_F90_SRC_BINARY_DIR}/hdf5_fortrandll.def @ONLY)
+ ENDIF (MSVC)
+ ENDIF (BUILD_SHARED_LIBS)
+ENDIF (WIN32 AND NOT CYGWIN)
+
+#-----------------------------------------------------------------------------
# Setup the Fortran auto-detection utilities
# H5test_kind(_SIZEOF).f90 used to generate H5fortran_detect.f90
# H5fortran_detect.f90 used to generate H5fort_type_defines.h
@@ -126,13 +142,13 @@ SET_TARGET_PROPERTIES (${HDF5_F90_C_LIB_TARGET} PROPERTIES LINKER_LANGUAGE C)
#-----------------------------------------------------------------------------
# Fortran 2003 standard
#-----------------------------------------------------------------------------
-IF (FORTRAN_HAVE_ISO_C_BINDING AND HDF5_ENABLE_F2003)
+IF (HDF5_ENABLE_F2003)
# default real is 4 bytes, so include double signatures
SET (F_STATUS "_F03")
-ELSE (FORTRAN_HAVE_ISO_C_BINDING AND HDF5_ENABLE_F2003)
+ELSE (HDF5_ENABLE_F2003)
# default real is 8 bytes, so exclude double signatures
SET (F_STATUS "_F90")
-ENDIF (FORTRAN_HAVE_ISO_C_BINDING AND HDF5_ENABLE_F2003)
+ENDIF (HDF5_ENABLE_F2003)
#-----------------------------------------------------------------------------
# Fortran Real Size
@@ -208,11 +224,7 @@ IF (WIN32 AND NOT CYGWIN)
BUILD_HDF5_DLL
)
IF (MSVC)
- IF (H5_HAVE_PARALLEL)
- SET (SHARED_LINK_FLAGS "/DLL /DEF:${HDF5_F90_SRC_SOURCE_DIR}/phdf5_fortrandll.def")
- ELSE (H5_HAVE_PARALLEL)
- SET (SHARED_LINK_FLAGS "/DLL /DEF:${HDF5_F90_SRC_SOURCE_DIR}/hdf5_fortrandll.def")
- ENDIF (H5_HAVE_PARALLEL)
+ SET (SHARED_LINK_FLAGS "/DLL /DEF:${HDF5_F90_SRC_BINARY_DIR}/hdf5_fortrandll.def")
ENDIF (MSVC)
ENDIF (BUILD_SHARED_LIBS)
SET_PROPERTY (TARGET ${HDF5_F90_LIB_TARGET}
diff --git a/fortran/src/Makefile.in b/fortran/src/Makefile.in
index 572f081..ced33d9 100644
--- a/fortran/src/Makefile.in
+++ b/fortran/src/Makefile.in
@@ -517,7 +517,7 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog
# Add libtool shared library version numbers to the HDF5 library
# See libtool versioning documentation online.
LT_VERS_INTERFACE = 6
-LT_VERS_REVISION = 122
+LT_VERS_REVISION = 126
LT_VERS_AGE = 0
# Include src directory in both Fortran and C flags (C compiler is used
diff --git a/fortran/src/hdf5_fortrandll.def b/fortran/src/hdf5_fortrandll.def
deleted file mode 100644
index d317476..0000000
--- a/fortran/src/hdf5_fortrandll.def
+++ /dev/null
@@ -1,544 +0,0 @@
-EXPORTS
-; H5LIB
-H5LIB_mp_H5OPEN_F
-H5LIB_mp_H5CLOSE_F
-H5LIB_mp_H5GET_LIBVERSION_F
-H5LIB_mp_H5CHECK_VERSION_F
-H5LIB_mp_H5GARBAGE_COLLECT_F
-H5LIB_mp_H5DONT_ATEXIT_F
-; H5_DBLE_INTERFACE
-H5_DBLE_INTERFACE_mp_H5AREAD_DOUBLE_SCALAR
-H5_DBLE_INTERFACE_mp_H5AREAD_DOUBLE_1
-H5_DBLE_INTERFACE_mp_H5AREAD_DOUBLE_2
-H5_DBLE_INTERFACE_mp_H5AREAD_DOUBLE_3
-H5_DBLE_INTERFACE_mp_H5AREAD_DOUBLE_4
-H5_DBLE_INTERFACE_mp_H5AREAD_DOUBLE_5
-H5_DBLE_INTERFACE_mp_H5AREAD_DOUBLE_6
-H5_DBLE_INTERFACE_mp_H5AREAD_DOUBLE_7
-H5_DBLE_INTERFACE_mp_H5AWRITE_DOUBLE_SCALAR
-H5_DBLE_INTERFACE_mp_H5AWRITE_DOUBLE_1
-H5_DBLE_INTERFACE_mp_H5AWRITE_DOUBLE_2
-H5_DBLE_INTERFACE_mp_H5AWRITE_DOUBLE_3
-H5_DBLE_INTERFACE_mp_H5AWRITE_DOUBLE_4
-H5_DBLE_INTERFACE_mp_H5AWRITE_DOUBLE_5
-H5_DBLE_INTERFACE_mp_H5AWRITE_DOUBLE_6
-H5_DBLE_INTERFACE_mp_H5AWRITE_DOUBLE_7
-H5_DBLE_INTERFACE_mp_H5DFILL_DOUBLE
-H5_DBLE_INTERFACE_mp_H5DREAD_DOUBLE_SCALAR
-H5_DBLE_INTERFACE_mp_H5DREAD_DOUBLE_1
-H5_DBLE_INTERFACE_mp_H5DREAD_DOUBLE_2
-H5_DBLE_INTERFACE_mp_H5DREAD_DOUBLE_3
-H5_DBLE_INTERFACE_mp_H5DREAD_DOUBLE_4
-H5_DBLE_INTERFACE_mp_H5DREAD_DOUBLE_5
-H5_DBLE_INTERFACE_mp_H5DREAD_DOUBLE_6
-H5_DBLE_INTERFACE_mp_H5DREAD_DOUBLE_7
-H5_DBLE_INTERFACE_mp_H5DWRITE_DOUBLE_SCALAR
-H5_DBLE_INTERFACE_mp_H5DWRITE_DOUBLE_1
-H5_DBLE_INTERFACE_mp_H5DWRITE_DOUBLE_2
-H5_DBLE_INTERFACE_mp_H5DWRITE_DOUBLE_3
-H5_DBLE_INTERFACE_mp_H5DWRITE_DOUBLE_4
-H5_DBLE_INTERFACE_mp_H5DWRITE_DOUBLE_5
-H5_DBLE_INTERFACE_mp_H5DWRITE_DOUBLE_6
-H5_DBLE_INTERFACE_mp_H5DWRITE_DOUBLE_7
-H5_DBLE_INTERFACE_mp_H5PGET_DOUBLE
-H5_DBLE_INTERFACE_mp_H5PSET_DOUBLE
-H5_DBLE_INTERFACE_mp_H5PSET_FILL_VALUE_DOUBLE
-H5_DBLE_INTERFACE_mp_H5PGET_FILL_VALUE_DOUBLE
-H5_DBLE_INTERFACE_mp_H5PINSERT_DOUBLE
-H5_DBLE_INTERFACE_mp_H5PREGISTER_DOUBLE
-; H5A
-H5A_mp_H5ACREATE_F
-H5A_mp_H5AOPEN_NAME_F
-H5A_mp_H5AOPEN_IDX_F
-H5A_PROVISIONAL_mp_H5AWRITE_INTEGER_SCALAR
-H5A_PROVISIONAL_mp_H5AWRITE_INTEGER_1
-H5A_PROVISIONAL_mp_H5AWRITE_INTEGER_2
-H5A_PROVISIONAL_mp_H5AWRITE_INTEGER_3
-H5A_PROVISIONAL_mp_H5AWRITE_INTEGER_4
-H5A_PROVISIONAL_mp_H5AWRITE_INTEGER_5
-H5A_PROVISIONAL_mp_H5AWRITE_INTEGER_6
-H5A_PROVISIONAL_mp_H5AWRITE_INTEGER_7
-H5A_PROVISIONAL_mp_H5AWRITE_REAL_SCALAR
-H5A_PROVISIONAL_mp_H5AWRITE_REAL_1
-H5A_PROVISIONAL_mp_H5AWRITE_REAL_2
-H5A_PROVISIONAL_mp_H5AWRITE_REAL_3
-H5A_PROVISIONAL_mp_H5AWRITE_REAL_4
-H5A_PROVISIONAL_mp_H5AWRITE_REAL_5
-H5A_PROVISIONAL_mp_H5AWRITE_REAL_6
-H5A_PROVISIONAL_mp_H5AWRITE_REAL_7
-H5A_PROVISIONAL_mp_H5AWRITE_CHAR_SCALAR
-H5A_PROVISIONAL_mp_H5AWRITE_CHAR_1
-H5A_PROVISIONAL_mp_H5AWRITE_CHAR_2
-H5A_PROVISIONAL_mp_H5AWRITE_CHAR_3
-H5A_PROVISIONAL_mp_H5AWRITE_CHAR_4
-H5A_PROVISIONAL_mp_H5AWRITE_CHAR_5
-H5A_PROVISIONAL_mp_H5AWRITE_CHAR_6
-H5A_PROVISIONAL_mp_H5AWRITE_CHAR_7
-H5A_PROVISIONAL_mp_H5AREAD_INTEGER_SCALAR
-H5A_PROVISIONAL_mp_H5AREAD_INTEGER_1
-H5A_PROVISIONAL_mp_H5AREAD_INTEGER_2
-H5A_PROVISIONAL_mp_H5AREAD_INTEGER_3
-H5A_PROVISIONAL_mp_H5AREAD_INTEGER_4
-H5A_PROVISIONAL_mp_H5AREAD_INTEGER_5
-H5A_PROVISIONAL_mp_H5AREAD_INTEGER_6
-H5A_PROVISIONAL_mp_H5AREAD_INTEGER_7
-H5A_PROVISIONAL_mp_H5AREAD_REAL_SCALAR
-H5A_PROVISIONAL_mp_H5AREAD_REAL_1
-H5A_PROVISIONAL_mp_H5AREAD_REAL_2
-H5A_PROVISIONAL_mp_H5AREAD_REAL_3
-H5A_PROVISIONAL_mp_H5AREAD_REAL_4
-H5A_PROVISIONAL_mp_H5AREAD_REAL_5
-H5A_PROVISIONAL_mp_H5AREAD_REAL_6
-H5A_PROVISIONAL_mp_H5AREAD_REAL_7
-H5A_PROVISIONAL_mp_H5AREAD_CHAR_SCALAR
-H5A_PROVISIONAL_mp_H5AREAD_CHAR_1
-H5A_PROVISIONAL_mp_H5AREAD_CHAR_2
-H5A_PROVISIONAL_mp_H5AREAD_CHAR_3
-H5A_PROVISIONAL_mp_H5AREAD_CHAR_4
-H5A_PROVISIONAL_mp_H5AREAD_CHAR_5
-H5A_PROVISIONAL_mp_H5AREAD_CHAR_6
-H5A_PROVISIONAL_mp_H5AREAD_CHAR_7
-H5A_mp_H5AGET_SPACE_F
-H5A_mp_H5AGET_TYPE_F
-H5A_mp_H5AGET_NAME_F
-H5A_mp_H5AGET_NAME_BY_IDX_F
-H5A_mp_H5AGET_NUM_ATTRS_F
-H5A_mp_H5ADELETE_F
-H5A_mp_H5ACLOSE_F
-H5A_mp_H5AGET_STORAGE_SIZE_F
-H5A_mp_H5AGET_CREATE_PLIST_F
-H5A_mp_H5ARENAME_BY_NAME_F
-H5A_mp_H5AOPEN_F
-H5A_mp_H5ADELETE_BY_IDX_F
-H5A_mp_H5ADELETE_BY_NAME_F
-H5A_mp_H5AOPEN_BY_IDX_F
-H5A_mp_H5AGET_INFO_F
-H5A_mp_H5AGET_INFO_BY_IDX_F
-H5A_mp_H5AGET_INFO_BY_NAME_F
-H5A_mp_H5ACREATE_BY_NAME_F
-H5A_mp_H5AEXISTS_F
-H5A_mp_H5AEXISTS_BY_NAME_F
-H5A_mp_H5AOPEN_BY_NAME_F
-H5A_mp_H5ARENAME_F
-; H5D
-H5D_mp_H5DCREATE_F
-H5D_mp_H5DOPEN_F
-H5D_mp_H5DCLOSE_F
-H5D_PROVISIONAL_mp_H5DWRITE_REFERENCE_OBJ
-H5D_PROVISIONAL_mp_H5DWRITE_REFERENCE_DSETREG
-H5D_PROVISIONAL_mp_H5DWRITE_INTEGER_SCALAR
-H5D_PROVISIONAL_mp_H5DWRITE_INTEGER_1
-H5D_PROVISIONAL_mp_H5DWRITE_INTEGER_2
-H5D_PROVISIONAL_mp_H5DWRITE_INTEGER_3
-H5D_PROVISIONAL_mp_H5DWRITE_INTEGER_4
-H5D_PROVISIONAL_mp_H5DWRITE_INTEGER_5
-H5D_PROVISIONAL_mp_H5DWRITE_INTEGER_6
-H5D_PROVISIONAL_mp_H5DWRITE_INTEGER_7
-H5D_PROVISIONAL_mp_H5DWRITE_CHAR_SCALAR
-H5D_PROVISIONAL_mp_H5DWRITE_CHAR_1
-H5D_PROVISIONAL_mp_H5DWRITE_CHAR_2
-H5D_PROVISIONAL_mp_H5DWRITE_CHAR_3
-H5D_PROVISIONAL_mp_H5DWRITE_CHAR_4
-H5D_PROVISIONAL_mp_H5DWRITE_CHAR_5
-H5D_PROVISIONAL_mp_H5DWRITE_CHAR_6
-H5D_PROVISIONAL_mp_H5DWRITE_CHAR_7
-H5D_PROVISIONAL_mp_H5DWRITE_REAL_SCALAR
-H5D_PROVISIONAL_mp_H5DWRITE_REAL_1
-H5D_PROVISIONAL_mp_H5DWRITE_REAL_2
-H5D_PROVISIONAL_mp_H5DWRITE_REAL_3
-H5D_PROVISIONAL_mp_H5DWRITE_REAL_4
-H5D_PROVISIONAL_mp_H5DWRITE_REAL_5
-H5D_PROVISIONAL_mp_H5DWRITE_REAL_6
-H5D_PROVISIONAL_mp_H5DWRITE_REAL_7
-H5D_PROVISIONAL_mp_H5DREAD_REFERENCE_OBJ
-H5D_PROVISIONAL_mp_H5DREAD_REFERENCE_DSETREG
-H5D_PROVISIONAL_mp_H5DREAD_INTEGER_SCALAR
-H5D_PROVISIONAL_mp_H5DREAD_INTEGER_1
-H5D_PROVISIONAL_mp_H5DREAD_INTEGER_2
-H5D_PROVISIONAL_mp_H5DREAD_INTEGER_3
-H5D_PROVISIONAL_mp_H5DREAD_INTEGER_4
-H5D_PROVISIONAL_mp_H5DREAD_INTEGER_5
-H5D_PROVISIONAL_mp_H5DREAD_INTEGER_6
-H5D_PROVISIONAL_mp_H5DREAD_INTEGER_7
-H5D_PROVISIONAL_mp_H5DREAD_CHAR_SCALAR
-H5D_PROVISIONAL_mp_H5DREAD_CHAR_1
-H5D_PROVISIONAL_mp_H5DREAD_CHAR_2
-H5D_PROVISIONAL_mp_H5DREAD_CHAR_3
-H5D_PROVISIONAL_mp_H5DREAD_CHAR_4
-H5D_PROVISIONAL_mp_H5DREAD_CHAR_5
-H5D_PROVISIONAL_mp_H5DREAD_CHAR_6
-H5D_PROVISIONAL_mp_H5DREAD_CHAR_7
-H5D_PROVISIONAL_mp_H5DREAD_REAL_SCALAR
-H5D_PROVISIONAL_mp_H5DREAD_REAL_1
-H5D_PROVISIONAL_mp_H5DREAD_REAL_2
-H5D_PROVISIONAL_mp_H5DREAD_REAL_3
-H5D_PROVISIONAL_mp_H5DREAD_REAL_4
-H5D_PROVISIONAL_mp_H5DREAD_REAL_5
-H5D_PROVISIONAL_mp_H5DREAD_REAL_6
-H5D_PROVISIONAL_mp_H5DREAD_REAL_7
-H5D_mp_H5DGET_SPACE_F
-H5D_mp_H5DGET_TYPE_F
-H5D_mp_H5DSET_EXTENT_F
-H5D_mp_H5DGET_CREATE_PLIST_F
-H5D_mp_H5DGET_STORAGE_SIZE_F
-H5D_mp_H5DVLEN_GET_MAX_LEN_F
-H5D_mp_H5DWRITE_VL_INTEGER
-H5D_mp_H5DREAD_VL_INTEGER
-H5D_mp_H5DWRITE_VL_REAL
-H5D_mp_H5DREAD_VL_REAL
-H5D_mp_H5DWRITE_VL_STRING
-H5D_mp_H5DREAD_VL_STRING
-H5D_PROVISIONAL_mp_H5DFILL_INTEGER
-H5D_PROVISIONAL_mp_H5DFILL_REAL
-H5D_PROVISIONAL_mp_H5DFILL_CHAR
-H5D_mp_H5DGET_SPACE_STATUS_F
-H5D_mp_H5DCREATE_ANON_F
-H5D_mp_H5DGET_SPACE_F
-H5D_mp_H5DGET_TYPE_F
-H5D_mp_H5DSET_EXTENT_F
-H5D_mp_H5DGET_CREATE_PLIST_F
-H5D_mp_H5DGET_STORAGE_SIZE_F
-H5D_mp_H5DVLEN_GET_MAX_LEN_F
-H5D_mp_H5DGET_ACCESS_PLIST_F
-; H5E
-H5E_mp_H5ECLEAR_F
-H5E_mp_H5EPRINT_F
-H5E_mp_H5EGET_MAJOR_F
-H5E_mp_H5EGET_MINOR_F
-H5E_PROVISIONAL_mp_H5ESET_AUTO_F
-; H5F
-H5F_mp_H5FCREATE_F
-H5F_mp_H5FFLUSH_F
-H5F_mp_H5FCLOSE_F
-H5F_mp_H5FGET_OBJ_COUNT_F
-H5F_mp_H5FGET_OBJ_IDS_F
-H5F_mp_H5FGET_FREESPACE_F
-H5F_mp_H5FMOUNT_F
-H5F_mp_H5FUNMOUNT_F
-H5F_mp_H5FOPEN_F
-H5F_mp_H5FREOPEN_F
-H5F_mp_H5FGET_CREATE_PLIST_F
-H5F_mp_H5FGET_ACCESS_PLIST_F
-H5F_mp_H5FIS_HDF5_F
-H5F_mp_H5FGET_NAME_F
-H5F_mp_H5FGET_FILESIZE_F
-; H5G
-H5G_mp_H5GOPEN_F
-H5G_mp_H5GCREATE_F
-H5G_mp_H5GCLOSE_F
-H5G_mp_H5GGET_OBJ_INFO_IDX_F
-H5G_mp_H5GN_MEMBERS_F
-H5G_mp_H5GLINK_F
-H5G_mp_H5GLINK2_F
-H5G_mp_H5GUNLINK_F
-H5G_mp_H5GMOVE_F
-H5G_mp_H5GMOVE2_F
-H5G_mp_H5GGET_LINKVAL_F
-H5G_mp_H5GSET_COMMENT_F
-H5G_mp_H5GGET_COMMENT_F
-H5G_mp_H5GCREATE_ANON_F
-H5G_mp_H5GGET_CREATE_PLIST_F
-H5G_mp_H5GGET_INFO_F
-H5G_mp_H5GGET_INFO_BY_IDX_F
-H5G_mp_H5GGET_INFO_BY_NAME_F
-H5G_mp_H5GGET_OBJ_INFO_IDX_F
-; H5GLOBAL
-; PREDEFINED_TYPES DATA
-; FLOATING_TYPES DATA
-; INTEGER_TYPES DATA
-; H5F_FLAGS DATA
-; H5GENERIC_FLAGS DATA
-; H5G_FLAGS DATA
-; H5D_FLAGS DATA
-; H5FD_FLAGS DATA
-; H5FD_HID_FLAGS DATA
-; H5I_FLAGS DATA
-; H5L_FLAGS DATA
-; H5O_FLAGS DATA
-; H5P_FLAGS DATA
-; H5P_FLAGS_INT DATA
-; H5R_FLAGS DATA
-; H5S_FLAGS DATA
-; H5T_FLAGS DATA
-; H5Z_FLAGS DATA
-; H5LIB_FLAGS DATA
-; H5I
-H5I_mp_H5IGET_TYPE_F
-H5I_mp_H5IGET_NAME_F
-H5I_mp_H5IINC_REF_F
-H5I_mp_H5IDEC_REF_F
-H5I_mp_H5IGET_REF_F
-H5I_mp_H5IGET_FILE_ID_F
-H5I_mp_H5IIS_VALID_F
-; H5L
-H5L_mp_H5LCOPY_F
-H5L_mp_H5LDELETE_F
-H5L_mp_H5LCREATE_SOFT_F
-H5L_mp_H5LCREATE_HARD_F
-H5L_mp_H5LCREATE_EXTERNAL_F
-H5L_mp_H5LDELETE_BY_IDX_F
-H5L_mp_H5LEXISTS_F
-H5L_mp_H5LGET_INFO_F
-H5L_mp_H5LGET_INFO_BY_IDX_F
-H5L_mp_H5LIS_REGISTERED_F
-H5L_mp_H5LMOVE_F
-H5L_mp_H5LGET_NAME_BY_IDX_F
-; H5O
-H5O_mp_H5OCLOSE_F
-H5O_mp_H5OCOPY_F
-H5O_mp_H5ODECR_REFCOUNT_F
-H5O_mp_H5OEXISTS_BY_NAME_F
-H5O_mp_H5OGET_COMMENT_F
-H5O_mp_H5OGET_COMMENT_BY_NAME_F
-H5O_mp_H5OINCR_REFCOUNT_F
-H5O_mp_H5OLINK_F
-H5O_mp_H5OOPEN_BY_ADDR_F
-H5O_mp_H5OOPEN_BY_IDX_F
-H5O_mp_H5OOPEN_F
-H5O_mp_H5OSET_COMMENT_F
-H5O_mp_H5OSET_COMMENT_BY_NAME_F
-; These should only get compiled with option --enable-fortran2003
-;H5O_PROVISIONAL_mp_H5OGET_INFO_BY_IDX_F
-;H5O_PROVISIONAL_mp_H5OGET_INFO_BY_NAME_F
-;H5O_PROVISIONAL_mp_H5OGET_INFO_F
-;H5O_PROVISIONAL_mp_H5OVISIT_BY_NAME_F
-;H5O_PROVISIONAL_mp_H5OVISIT_F
-; H5P
-H5P_mp_H5PCREATE_F
-H5P_mp_H5PSET_PRESERVE_F
-H5P_mp_H5PGET_PRESERVE_F
-H5P_mp_H5PGET_CLASS_F
-H5P_mp_H5PCOPY_F
-H5P_mp_H5PCLOSE_F
-H5P_mp_H5PSET_CHUNK_F
-H5P_mp_H5PGET_CHUNK_F
-H5P_mp_H5PSET_DEFLATE_F
-H5P_PROVISIONAL_mp_H5PSET_FILL_VALUE_INTEGER
-H5P_PROVISIONAL_mp_H5PGET_FILL_VALUE_INTEGER
-H5P_PROVISIONAL_mp_H5PSET_FILL_VALUE_REAL
-H5P_PROVISIONAL_mp_H5PGET_FILL_VALUE_REAL
-H5P_PROVISIONAL_mp_H5PSET_FILL_VALUE_CHAR
-H5P_PROVISIONAL_mp_H5PGET_FILL_VALUE_CHAR
-H5P_mp_H5PGET_VERSION_F
-H5P_mp_H5PSET_USERBLOCK_F
-H5P_mp_H5PGET_USERBLOCK_F
-H5P_mp_H5PSET_SIZES_F
-H5P_mp_H5PGET_SIZES_F
-H5P_mp_H5PSET_SYM_K_F
-H5P_mp_H5PGET_SYM_K_F
-H5P_mp_H5PSET_ISTORE_K_F
-H5P_mp_H5PGET_ISTORE_K_F
-H5P_mp_H5PGET_DRIVER_F
-H5P_mp_H5PSET_FAPL_STDIO_F
-H5P_mp_H5PSET_FAPL_SEC2_F
-H5P_mp_H5PSET_ALIGNMENT_F
-H5P_mp_H5PGET_ALIGNMENT_F
-H5P_mp_H5PSET_FAPL_CORE_F
-H5P_mp_H5PGET_FAPL_CORE_F
-H5P_mp_H5PSET_FAPL_FAMILY_F
-H5P_mp_H5PGET_FAPL_FAMILY_F
-H5P_mp_H5PSET_CACHE_F
-H5P_mp_H5PGET_CACHE_F
-H5P_mp_H5PSET_FAPL_SPLIT_F
-H5P_mp_H5PSET_GC_REFERENCES_F
-H5P_mp_H5PGET_GC_REFERENCES_F
-H5P_mp_H5PSET_LAYOUT_F
-H5P_mp_H5PGET_LAYOUT_F
-H5P_mp_H5PSET_FILTER_F
-H5P_mp_H5PGET_NFILTERS_F
-H5P_mp_H5PGET_FILTER_F
-H5P_mp_H5PSET_EXTERNAL_F
-H5P_mp_H5PGET_EXTERNAL_COUNT_F
-H5P_mp_H5PGET_EXTERNAL_F
-H5P_mp_H5PSET_BTREE_RATIOS_F
-H5P_mp_H5PGET_BTREE_RATIOS_F
-H5P_mp_H5PGET_FCLOSE_DEGREE_F
-H5P_mp_H5PSET_FCLOSE_DEGREE_F
-H5P_mp_H5PEQUAL_F
-H5P_mp_H5PSET_BUFFER_F
-H5P_mp_H5PGET_BUFFER_F
-H5P_mp_H5PFILL_VALUE_DEFINED_F
-H5P_mp_H5PSET_ALLOC_TIME_F
-H5P_mp_H5PGET_ALLOC_TIME_F
-H5P_mp_H5PSET_FILL_TIME_F
-H5P_mp_H5PGET_FILL_TIME_F
-H5P_mp_H5PSET_META_BLOCK_SIZE_F
-H5P_mp_H5PGET_META_BLOCK_SIZE_F
-H5P_mp_H5PSET_SIEVE_BUF_SIZE_F
-H5P_mp_H5PGET_SIEVE_BUF_SIZE_F
-H5P_mp_H5PSET_SMALL_DATA_BLOCK_SIZE_F
-H5P_mp_H5PGET_SMALL_DATA_BLOCK_SIZE_F
-H5P_mp_H5PSET_HYPER_VECTOR_SIZE_F
-H5P_mp_H5PGET_HYPER_VECTOR_SIZE_F
-H5P_PROVISIONAL_mp_H5PSET_INTEGER
-H5P_PROVISIONAL_mp_H5PSET_REAL
-H5P_PROVISIONAL_mp_H5PSET_CHAR
-H5P_PROVISIONAL_mp_H5PGET_INTEGER
-H5P_PROVISIONAL_mp_H5PGET_REAL
-H5P_PROVISIONAL_mp_H5PGET_CHAR
-H5P_mp_H5PEXIST_F
-H5P_mp_H5PGET_SIZE_F
-H5P_mp_H5PGET_NPROPS_F
-H5P_mp_H5PGET_CLASS_NAME_F
-H5P_mp_H5PGET_CLASS_PARENT_F
-H5P_mp_H5PISA_CLASS_F
-H5P_mp_H5PCOPY_PROP_F
-H5P_mp_H5PREMOVE_F
-H5P_mp_H5PUNREGISTER_F
-H5P_mp_H5PCLOSE_CLASS_F
-H5P_PROVISIONAL_mp_H5PCREATE_CLASS_F
-H5P_PROVISIONAL_mp_H5PREGISTER_INTEGER
-H5P_PROVISIONAL_mp_H5PREGISTER_REAL
-H5P_PROVISIONAL_mp_H5PREGISTER_CHAR
-H5P_PROVISIONAL_mp_H5PINSERT_INTEGER
-H5P_PROVISIONAL_mp_H5PINSERT_REAL
-H5P_PROVISIONAL_mp_H5PINSERT_CHAR
-H5P_mp_H5PSET_SHUFFLE_F
-H5P_mp_H5PSET_EDC_CHECK_F
-H5P_mp_H5PGET_EDC_CHECK_F
-H5P_mp_H5PSET_FLETCHER32_F
-H5P_mp_H5PSET_FAMILY_OFFSET_F
-H5P_mp_H5PSET_FAPL_MULTI_L
-H5P_mp_H5PSET_FAPL_MULTI_S
-H5P_mp_H5PGET_FAPL_MULTI_F
-H5P_mp_H5PSET_SZIP_F
-H5P_mp_H5PALL_FILTERS_AVAIL_F
-H5P_mp_H5PGET_FILTER_BY_ID_F
-H5P_mp_H5PMODIFY_FILTER_F
-H5P_mp_H5PREMOVE_FILTER_F
-H5P_mp_H5PGET_ATTR_PHASE_CHANGE_F
-H5P_mp_H5PSET_ATTR_CREATION_ORDER_F
-H5P_mp_H5PSET_SHARED_MESG_NINDEXES_F
-H5P_mp_H5PSET_SHARED_MESG_INDEX_F
-H5P_mp_H5PGET_ATTR_CREATION_ORDER_F
-H5P_mp_H5PSET_LIBVER_BOUNDS_F
-H5P_mp_H5PSET_LINK_CREATION_ORDER_F
-H5P_mp_H5PGET_LINK_PHASE_CHANGE_F
-H5P_mp_H5PGET_OBJ_TRACK_TIMES_F
-H5P_mp_H5PSET_OBJ_TRACK_TIMES_F
-H5P_mp_H5PSET_CREATE_INTER_GROUP_F
-H5P_mp_H5PGET_LINK_CREATION_ORDER_F
-H5P_mp_H5PSET_CHAR_ENCODING_F
-H5P_mp_H5PGET_CHAR_ENCODING_F
-H5P_mp_H5PSET_COPY_OBJECT_F
-H5P_mp_H5PGET_COPY_OBJECT_F
-H5P_mp_H5PGET_DATA_TRANSFORM_F
-H5P_mp_H5PSET_DATA_TRANSFORM_F
-H5P_mp_H5PGET_LOCAL_HEAP_SIZE_HINT_F
-H5P_mp_H5PGET_EST_LINK_INFO_F
-H5P_mp_H5PSET_LOCAL_HEAP_SIZE_HINT_F
-H5P_mp_H5PSET_EST_LINK_INFO_F
-H5P_mp_H5PSET_LINK_PHASE_CHANGE_F
-H5P_mp_H5PSET_FAPL_DIRECT_F
-H5P_mp_H5PGET_FAPL_DIRECT_F
-H5P_mp_H5PSET_ATTR_PHASE_CHANGE_F
-H5P_mp_H5PSET_NBIT_F
-H5P_mp_H5PSET_SCALEOFFSET_F
-H5P_mp_H5PSET_NLINKS_F
-H5P_mp_H5PGET_NLINKS_F
-H5P_mp_H5PGET_CREATE_INTER_GROUP_F
-H5P_mp_H5PSET_CHUNK_CACHE_F
-H5P_mp_H5PGET_CHUNK_CACHE_F
-; H5R
-H5R_PROVISIONAL_mp_H5RCREATE_OBJECT_F
-H5R_PROVISIONAL_mp_H5RCREATE_REGION_F
-H5R_PROVISIONAL_mp_H5RDEREFERENCE_OBJECT_F
-H5R_PROVISIONAL_mp_H5RDEREFERENCE_REGION_F
-H5R_PROVISIONAL_mp_H5RGET_REGION_REGION_F
-
-H5R_mp_H5RGET_OBJECT_TYPE_OBJ_F
-H5R_PROVISIONAL_mp_H5RGET_NAME_OBJECT_F
-H5R_PROVISIONAL_mp_H5RGET_NAME_REGION_F
-; H5S
-H5S_mp_H5SCREATE_SIMPLE_F
-H5S_mp_H5SCLOSE_F
-H5S_mp_H5SCREATE_F
-H5S_mp_H5SCOPY_F
-H5S_mp_H5SGET_SELECT_HYPER_NBLOCKS_F
-H5S_mp_H5SGET_SELECT_HYPER_BLOCKLIST_F
-H5S_mp_H5SGET_SELECT_BOUNDS_F
-H5S_mp_H5SGET_SELECT_ELEM_NPOINTS_F
-H5S_mp_H5SGET_SELECT_ELEM_POINTLIST_F
-H5S_mp_H5SSELECT_ELEMENTS_F
-H5S_mp_H5SSELECT_ALL_F
-H5S_mp_H5SSELECT_NONE_F
-H5S_mp_H5SSELECT_VALID_F
-H5S_mp_H5SGET_SIMPLE_EXTENT_NPOINTS_F
-H5S_mp_H5SGET_SELECT_NPOINTS_F
-H5S_mp_H5SGET_SIMPLE_EXTENT_NDIMS_F
-H5S_mp_H5SGET_SIMPLE_EXTENT_DIMS_F
-H5S_mp_H5SGET_SIMPLE_EXTENT_TYPE_F
-H5S_mp_H5SSET_EXTENT_SIMPLE_F
-H5S_mp_H5SIS_SIMPLE_F
-H5S_mp_H5SOFFSET_SIMPLE_F
-H5S_mp_H5SEXTENT_COPY_F
-H5S_mp_H5SSET_EXTENT_NONE_F
-H5S_mp_H5SSELECT_HYPERSLAB_F
-H5S_mp_H5SGET_SELECT_TYPE_F
-H5S_mp_H5SDECODE_F
-H5S_mp_H5SENCODE_F
-H5S_mp_H5SEXTENT_EQUAL_F
-; H5T
-H5T_mp_H5TOPEN_F
-H5T_mp_H5TCOMMIT_F
-H5T_mp_H5TCOPY_F
-H5T_mp_H5TEQUAL_F
-H5T_mp_H5TCLOSE_F
-H5T_mp_H5TGET_CLASS_F
-H5T_mp_H5TGET_SIZE_F
-H5T_mp_H5TSET_SIZE_F
-H5T_mp_H5TGET_ORDER_F
-H5T_mp_H5TSET_ORDER_F
-H5T_mp_H5TGET_PRECISION_F
-H5T_mp_H5TSET_PRECISION_F
-H5T_mp_H5TGET_OFFSET_F
-H5T_mp_H5TSET_OFFSET_F
-H5T_mp_H5TGET_PAD_F
-H5T_mp_H5TSET_PAD_F
-H5T_mp_H5TGET_SIGN_F
-H5T_mp_H5TSET_SIGN_F
-H5T_mp_H5TGET_FIELDS_F
-H5T_mp_H5TSET_FIELDS_F
-H5T_mp_H5TGET_EBIAS_F
-H5T_mp_H5TSET_EBIAS_F
-H5T_mp_H5TGET_NORM_F
-H5T_mp_H5TSET_NORM_F
-H5T_mp_H5TGET_INPAD_F
-H5T_mp_H5TSET_INPAD_F
-H5T_mp_H5TGET_CSET_F
-H5T_mp_H5TSET_CSET_F
-H5T_mp_H5TGET_STRPAD_F
-H5T_mp_H5TSET_STRPAD_F
-H5T_mp_H5TGET_NMEMBERS_F
-H5T_mp_H5TGET_MEMBER_NAME_F
-H5T_mp_H5TGET_MEMBER_OFFSET_F
-H5T_mp_H5TGET_MEMBER_INDEX_F
-H5T_mp_H5TGET_ARRAY_DIMS_F
-H5T_mp_H5TGET_ARRAY_NDIMS_F
-H5T_mp_H5TGET_SUPER_F
-H5T_mp_H5TGET_MEMBER_TYPE_F
-H5T_mp_H5TCREATE_F
-H5T_mp_H5TINSERT_F
-H5T_mp_H5TPACK_F
-H5T_mp_H5TARRAY_CREATE_F
-H5T_mp_H5TENUM_CREATE_F
-H5T_mp_H5TENUM_INSERT_F
-H5T_mp_H5TENUM_NAMEOF_F
-H5T_mp_H5TENUM_VALUEOF_F
-H5T_mp_H5TGET_MEMBER_VALUE_F
-H5T_mp_H5TSET_TAG_F
-H5T_mp_H5TGET_TAG_F
-H5T_mp_H5TVLEN_CREATE_F
-H5T_mp_H5TIS_VARIABLE_STR_F
-H5T_mp_H5TGET_MEMBER_CLASS_F
-H5T_mp_H5TCOMMIT_ANON_F
-H5T_mp_H5TCOMMITTED_F
-H5T_mp_H5TDECODE_F
-H5T_mp_H5TENCODE_F
-H5T_mp_H5TGET_CREATE_PLIST_F
-H5T_mp_H5TCOMPILER_CONV_F
-H5T_mp_H5TGET_NATIVE_TYPE_F
-; H5Z
-H5Z_mp_H5ZUNREGISTER_F
-H5Z_mp_H5ZFILTER_AVAIL_F
-H5Z_mp_H5ZGET_FILTER_INFO_F
diff --git a/fortran/src/phdf5_fortrandll.def b/fortran/src/hdf5_fortrandll.def.in
index df61860..bf7596d 100644
--- a/fortran/src/phdf5_fortrandll.def
+++ b/fortran/src/hdf5_fortrandll.def.in
@@ -6,6 +6,7 @@ H5LIB_mp_H5GET_LIBVERSION_F
H5LIB_mp_H5CHECK_VERSION_F
H5LIB_mp_H5GARBAGE_COLLECT_F
H5LIB_mp_H5DONT_ATEXIT_F
+@H5_NOF03EXP@H5LIB_PROVISIONAL_mp_H5OFFSETOF
; H5_DBLE_INTERFACE
H5_DBLE_INTERFACE_mp_H5AREAD_DOUBLE_SCALAR
H5_DBLE_INTERFACE_mp_H5AREAD_DOUBLE_1
@@ -120,6 +121,8 @@ H5A_mp_H5AEXISTS_F
H5A_mp_H5AEXISTS_BY_NAME_F
H5A_mp_H5AOPEN_BY_NAME_F
H5A_mp_H5ARENAME_F
+@H5_NOF03EXP@H5A_PROVISIONAL_mp_H5AWRITE_PTR
+@H5_NOF03EXP@H5A_PROVISIONAL_mp_H5AREAD_PTR
; H5D
H5D_mp_H5DCREATE_F
H5D_mp_H5DOPEN_F
@@ -200,6 +203,9 @@ H5D_mp_H5DGET_CREATE_PLIST_F
H5D_mp_H5DGET_STORAGE_SIZE_F
H5D_mp_H5DVLEN_GET_MAX_LEN_F
H5D_mp_H5DGET_ACCESS_PLIST_F
+@H5_NOF03EXP@H5D_PROVISIONAL_mp_H5DWRITE_PTR
+@H5_NOF03EXP@H5D_PROVISIONAL_mp_H5DREAD_PTR
+@H5_NOF03EXP@H5D_PROVISIONAL_mp_H5DVLEN_RECLAIM_F
; H5E
H5E_mp_H5ECLEAR_F
H5E_mp_H5EPRINT_F
@@ -283,6 +289,8 @@ H5L_mp_H5LGET_INFO_BY_IDX_F
H5L_mp_H5LIS_REGISTERED_F
H5L_mp_H5LMOVE_F
H5L_mp_H5LGET_NAME_BY_IDX_F
+@H5_NOF03EXP@H5L_PROVISIONAL_mp_H5LITERATE_F
+@H5_NOF03EXP@H5L_PROVISIONAL_mp_H5LITERATE_BY_NAME_F
; H5O
H5O_mp_H5OCLOSE_F
H5O_mp_H5OCOPY_F
@@ -297,12 +305,11 @@ H5O_mp_H5OOPEN_BY_IDX_F
H5O_mp_H5OOPEN_F
H5O_mp_H5OSET_COMMENT_F
H5O_mp_H5OSET_COMMENT_BY_NAME_F
-; These should only get compiled with option --enable-fortran2003
-;H5O_PROVISIONAL_mp_H5OGET_INFO_BY_IDX_F
-;H5O_PROVISIONAL_mp_H5OGET_INFO_BY_NAME_F
-;H5O_PROVISIONAL_mp_H5OGET_INFO_F
-;H5O_PROVISIONAL_mp_H5OVISIT_BY_NAME_F
-;H5O_PROVISIONAL_mp_H5OVISIT_F
+@H5_NOF03EXP@H5O_PROVISIONAL_mp_H5OGET_INFO_BY_IDX_F
+@H5_NOF03EXP@H5O_PROVISIONAL_mp_H5OGET_INFO_BY_NAME_F
+@H5_NOF03EXP@H5O_PROVISIONAL_mp_H5OGET_INFO_F
+@H5_NOF03EXP@H5O_PROVISIONAL_mp_H5OVISIT_BY_NAME_F
+@H5_NOF03EXP@H5O_PROVISIONAL_mp_H5OVISIT_F
; H5P
H5P_mp_H5PCREATE_F
H5P_mp_H5PSET_PRESERVE_F
@@ -439,16 +446,26 @@ H5P_mp_H5PGET_NLINKS_F
H5P_mp_H5PGET_CREATE_INTER_GROUP_F
H5P_mp_H5PSET_CHUNK_CACHE_F
H5P_mp_H5PGET_CHUNK_CACHE_F
+@H5_NOF03EXP@H5P_PROVISIONAL_mp_H5PSET_FILL_VALUE_PTR
+@H5_NOF03EXP@H5P_PROVISIONAL_mp_H5PGET_FILL_VALUE_PTR
+@H5_NOF03EXP@H5P_PROVISIONAL_mp_H5PSET_PTR
+@H5_NOF03EXP@H5P_PROVISIONAL_mp_H5PGET_PTR
+@H5_NOF03EXP@H5P_PROVISIONAL_mp_H5PREGISTER_PTR
+@H5_NOF03EXP@H5P_PROVISIONAL_mp_H5PINSERT_PTR
; H5R
H5R_PROVISIONAL_mp_H5RCREATE_OBJECT_F
H5R_PROVISIONAL_mp_H5RCREATE_REGION_F
H5R_PROVISIONAL_mp_H5RDEREFERENCE_OBJECT_F
H5R_PROVISIONAL_mp_H5RDEREFERENCE_REGION_F
H5R_PROVISIONAL_mp_H5RGET_REGION_REGION_F
-
H5R_mp_H5RGET_OBJECT_TYPE_OBJ_F
H5R_PROVISIONAL_mp_H5RGET_NAME_OBJECT_F
H5R_PROVISIONAL_mp_H5RGET_NAME_REGION_F
+@H5_NOF03EXP@H5R_PROVISIONAL_mp_H5RGET_REGION_PTR_F
+@H5_NOF03EXP@H5R_PROVISIONAL_mp_H5RCREATE_PTR_F
+@H5_NOF03EXP@H5R_PROVISIONAL_mp_H5RDEREFERENCE_PTR_F
+@H5_NOF03EXP@H5R_PROVISIONAL_mp_H5RGET_NAME_PTR_F
+@H5_NOF03EXP@H5R_PROVISIONAL_mp_H5RGET_OBJ_TYPE_F
; H5S
H5S_mp_H5SCREATE_SIMPLE_F
H5S_mp_H5SCLOSE_F
@@ -538,15 +555,16 @@ H5T_mp_H5TENCODE_F
H5T_mp_H5TGET_CREATE_PLIST_F
H5T_mp_H5TCOMPILER_CONV_F
H5T_mp_H5TGET_NATIVE_TYPE_F
+@H5_NOF03EXP@H5T_PROVISIONAL_mp_H5TCONVERT_F
; H5Z
H5Z_mp_H5ZUNREGISTER_F
H5Z_mp_H5ZFILTER_AVAIL_F
H5Z_mp_H5ZGET_FILTER_INFO_F
; Parallel
-H5FDMPIO_mp_H5PSET_FAPL_MPIO_F
-H5FDMPIO_mp_H5PGET_FAPL_MPIO_F
-H5FDMPIO_mp_H5PSET_DXPL_MPIO_F
-H5FDMPIO_mp_H5PGET_DXPL_MPIO_F
-H5FDMPIO_mp_H5PSET_FAPL_MPIPOSIX_F
-H5FDMPIO_mp_H5PGET_FAPL_MPIPOSIX_F
-H5FDMPIO_mp_H5PGET_MPIO_ACTUAL_IO_MODE_F \ No newline at end of file
+@H5_NOPAREXP@H5FDMPIO_mp_H5PSET_FAPL_MPIO_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/CMakeLists.txt b/fortran/test/CMakeLists.txt
index 3a3d084..92ba651 100644
--- a/fortran/test/CMakeLists.txt
+++ b/fortran/test/CMakeLists.txt
@@ -100,7 +100,7 @@ ADD_TEST (NAME testhdf5_fortran_1_8 COMMAND $<TARGET_FILE:testhdf5_fortran_1_8>)
SET_TESTS_PROPERTIES(testhdf5_fortran_1_8 PROPERTIES PASS_REGULAR_EXPRESSION "[ ]*0 error.s")
#-- Adding test for fortranlib_test_F03
-IF (FORTRAN_HAVE_ISO_C_BINDING AND HDF5_ENABLE_F2003)
+IF (HDF5_ENABLE_F2003)
ADD_EXECUTABLE (fortranlib_test_F03
fortranlib_test_F03.f90
tH5F.f90
@@ -125,7 +125,7 @@ IF (FORTRAN_HAVE_ISO_C_BINDING AND HDF5_ENABLE_F2003)
ADD_TEST (NAME fortranlib_test_F03 COMMAND $<TARGET_FILE:fortranlib_test_F03>)
SET_TESTS_PROPERTIES(fortranlib_test_F03 PROPERTIES PASS_REGULAR_EXPRESSION "[ ]*0 error.s")
-ENDIF (FORTRAN_HAVE_ISO_C_BINDING AND HDF5_ENABLE_F2003)
+ENDIF (HDF5_ENABLE_F2003)
#-- Adding test for fflush1
ADD_EXECUTABLE (fflush1 fflush1.f90)
diff --git a/hl/c++/src/Makefile.in b/hl/c++/src/Makefile.in
index 93e3942..4dceeb2 100644
--- a/hl/c++/src/Makefile.in
+++ b/hl/c++/src/Makefile.in
@@ -458,7 +458,7 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog
# Add libtool shared library version numbers to the HDF5 library
# See libtool versioning documentation online.
LT_VERS_INTERFACE = 6
-LT_VERS_REVISION = 122
+LT_VERS_REVISION = 126
LT_VERS_AGE = 0
# Include src directory
diff --git a/hl/fortran/src/Makefile.in b/hl/fortran/src/Makefile.in
index d2e60b8..3cd2b38 100644
--- a/hl/fortran/src/Makefile.in
+++ b/hl/fortran/src/Makefile.in
@@ -474,7 +474,7 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog
# Add libtool shared library version numbers to the HDF5 library
# See libtool versioning documentation online.
LT_VERS_INTERFACE = 6
-LT_VERS_REVISION = 122
+LT_VERS_REVISION = 126
LT_VERS_AGE = 0
INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/hl/src -I$(top_builddir)/hl/src \
-I$(top_srcdir)/fortran/src -I$(top_builddir)/fortran/src
diff --git a/hl/src/Makefile.in b/hl/src/Makefile.in
index 0dcbc55..84ff1ef 100644
--- a/hl/src/Makefile.in
+++ b/hl/src/Makefile.in
@@ -457,7 +457,7 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog
# Add libtool shared library version numbers to the HDF5 library
# See libtool versioning documentation online.
LT_VERS_INTERFACE = 6
-LT_VERS_REVISION = 122
+LT_VERS_REVISION = 126
LT_VERS_AGE = 0
# This library is our main target.
diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt
index 13889de..a2b226a 100644
--- a/release_docs/RELEASE.txt
+++ b/release_docs/RELEASE.txt
@@ -1,4 +1,4 @@
-HDF5 version 1.9.132 currently under development
+HDF5 version 1.9.136 currently under development
================================================================================
@@ -30,7 +30,9 @@ CONTENTS
- New Features
- Support for new platforms and languages
- Bug Fixes since HDF5-1.8.0
-- Platforms Tested
+- Supported Platforms
+- Tested Configuration Features Summary
+- More Tested Platforms
- Known Problems
@@ -1052,147 +1054,236 @@ Bug Fixes since HDF5-1.8.0 release
-Platforms Tested
-================
-
+Supported Platforms
+===================
AIX 5.3 xlc 10.1.0.5
(NASA G-ADA) xlC 10.1.0.5
xlf90 12.1.0.6
- FreeBSD 8.2-STABLE i386 gcc 4.2.1 [FreeBSD] 20070719
- (loyalty) gcc 4.6.1 20110422
- g++ 4.6.1 20110422
- gfortran 4.6.1 20110422
-
- FreeBSD 8.2-STABLE amd64 gcc 4.2.1 [FreeBSD] 20070719
- (freedom) gcc 4.6.1 20110422
- g++ 4.6.1 20110422
- gfortran 4.6.1 20110422
-
- Linux 2.6.18-194.3.1.el5PAE gcc (GCC) 4.1.2 and 4.4.2
- #1 SMP i686 i686 i386 GNU Fortran (GCC) 4.1.2 20080704
- (jam) (Red Hat 4.1.2-48) and 4.4.2
- PGI C, Fortran, C++ 10.4-0 32-bit
- PGI C, Fortran, C++ 10.6-0 32-bit
- Intel(R) C Compiler for 32-bit
- applications, Version 11.1
- Intel(R) C++ Compiler for 32-bit
- applications, Version 11.1
- Intel(R) Fortran Compiler for 32-bit
- applications, Version 11.1
- MPICH mpich2-1.3.1 compiled with
+ Linux 2.6.18-308.13.1.el5PAE GNU C (gcc), Fortran (gfortran), C++ (g++)
+ #1 SMP i686 i686 i386 compilers for 32-bit applications;
+ (jam) Version 4.1.2 20080704 (Red Hat 4.1.2-52)
+ Version 4.6.3
+ PGI C, Fortran, C++ Compilers for 32-bit
+ applications;
+ Version 11.9-0
+ Intel(R) C, C++, Fortran Compiler for 32-bit
+ applications;
+ Version 12.1
+ MPICH mpich2-1.4.1p1 compiled with
gcc 4.1.2 and gfortran 4.1.2
- Linux 2.6.18-238.12.1.el5 gcc 4.1.2 and 4.4.2
- #1 SMP x86_64 GNU/Linux GNU Fortran (GCC) 4.1.2 20080704
- (koala) (Red Hat 4.1.2-46) and 4.4.2
- tested for both 32- and 64-bit binaries
- Intel(R) C, C++, Fortran Compilers for
- applications running on Intel(R) 64,
- Version 11.1.
- PGI C, Fortran, C++ Version 9.0-4
- for 64-bit target on x86-64
- MPICH mpich2-1.3.1 compiled with
+ Linux 2.6.18-308.16.1.el5 GNU C (gcc), Fortran (gfortran), C++ (g++)
+ #1 SMP x86_64 GNU/Linux compilers for 32-bit applications;
+ (koala) Version 4.1.2 20080704 (Red Hat 4.1.2-52)
+ Version 4.6.3
+ PGI C, Fortran, C++ for 64-bit target on
+ x86-64;
+ Version 11.9-0
+ Version 12.5-0
+ Intel(R) C, C++, Fortran Compilers for
+ applications running on Intel(R) 64;
+ Version 12.1 (Build 20110811)
+ Version 12.1 (Build 20120212)
+ MPICH mpich2-1.4.1p1 compiled with
gcc 4.1.2 and gfortran 4.1.2
- SGI ProPack 7 Linux Intel(R) C++ Version 11.1 20100806
- 2.6.32.19-0.3.1.1982.0.PTF- Intel(R) Fortran Version 11.1 20100806
- default #1 SMP SGI MPT 2.01
- SGI Altix UV
- (NCSA ember)
+ Linux 2.6.32-220.7.1.el6.ppc64 gcc (GCC) 4.4.6 20120305 (Red Hat 4.4.6-4)
+ #1 SMP ppc64 GNU/Linux g++ (GCC) 4.4.6 20120305 (Red Hat 4.4.6-4)
+ (ostrich) GNU Fortran (GCC) 4.4.6 20120305 (Red Hat 4.4.6-4)
+
+ Linux 2.6.32-220.23.1.1chaos Intel C, C++, Fortran Compilers
+ ch5.x86_64 GNU/Linux Version 12.1.5.339
+ (LLNL Aztec)
+
+ IBM Blue Gene/P XL C for Blue Gene/P, bgxlc V9.0
+ (LLNL uDawn) XL C++ for Blue Gene/P, bgxlC V9.0
+ XL Fortran for Blue Gene/P, bgxlf90 V11.1
SunOS 5.10 32- and 64-bit Sun C 5.9 Sun OS_sparc Patch 124867-16
- (linew) Sun Fortran 95 8.3 Sun OS_sparc Patch
-127000-13
- Sun C++ 5.9 Sun OS_sparc Patch 124863-62
- Sun C 5.10 SunOS_sparc Patch 141861-07
- Sun Fortran 95 8.4 SunOS_sparc Patch
-128231-06
- Sun C++ 5.10 SunOS_sparc 128228-11
+ (linew) Sun Fortran 95 8.3 Sun OS_sparc Patch 127000-13
+ Sun C++ 5.9 Sun OS_sparc Patch 124863-26
+ Sun C 5.11 SunOS_sparc
+ Sun Fortran 95 8.5 SunOS_sparc
+ Sun C++ 5.11 SunOS_sparc
+
+ Windows XP Visual Studio 2008 w/ Intel Fortran 10.1 (project files)
+
+ Windows XP x64 Visual Studio 2008 w/ Intel Fortran 10.1 (project files)
Windows 7 Visual Studio 2008 w/ Intel Fortran 11.1 (cmake)
Visual Studio 2010 w/ Intel Fortran 12 (cmake)
- Cygwin(1.7.9 native gcc(4.5.3) compiler and gfortran)
+ Cygwin(CYGWIN_NT-6.1 1.7.15(0.260/5/3) gcc(4.5.3) compiler and gfortran)
+ (cmake and autotools)
Windows 7 x64 Visual Studio 2008 w/ Intel Fortran 11.1 (cmake)
Visual Studio 2010 w/ Intel Fortran 12 (cmake)
- Cygwin(1.7.9 native gcc(4.5.3) compiler and gfortran)
+ Cygwin(CYGWIN_NT-6.1 1.7.15(0.260/5/3) gcc(4.5.3) compiler and gfortran)
+ (cmake and autotools)
+
+ Mac OS X Snow Leopard 10.6.8 gcc i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 from Xcode 3.2.6
+ Darwin Kernel Version 10.8.0 g++ i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 from Xcode 3.2.6
+ (fred) gfortran GNU Fortran (GCC) 4.6.2
+ Intel C (icc), Fortran (ifort), C++ (icpc)
+ 12.1.0.038 Build 20110811
- MAC OS 10.5 (Intel) gcc i686-apple-darwin8-gcc-4.0.1 (GCC) 4.0.1
- G95 (GCC 4.0.3 (g95 0.91!) Nov 21 2006)
- GNU Fortran (GCC) 4.3.0 20070810
- Alpha Open VMS 7.3
+ Mac OS X Snow Leopard 10.6.8 gcc i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 from Xcode 3.2.6
+ Darwin Kernel Version 10.8.0 g++ i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 from Xcode 3.2.6
+ Intel 32-bit gfortran GNU Fortran (GCC) 4.6.1
+ (tejeda) Intel C (icc), Fortran (ifort), C++ (icpc)
+ 12.1.0.038 Build 20110811
+ Mac OS X Lion 10.7.3 gcc i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 from Xcode 4.2.1
+ 32- and 64-bit g++ i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 from Xcode 4.2.1
+ (duck) gfortran GNU Fortran (GCC) 4.6.2
-Supported Configuration Features Summary
-========================================
+ Mac OS X Mountain Lion 10.8.1 cc Apple clang version 4.0 from Xcode 4.5.1
+ (owl) c++ Apple clang version 4.0 from Xcode 4.5.1
+ gcc i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 from Xcode 4.5.1
+ g++ i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 from Xcode 4.5.1
+ gfortran GNU Fortran (GCC) 4.6.2
+
+
+Tested Configuration Features Summary
+=====================================
In the tables below
- y = tested and supported
- n = not supported or not tested in this release
+ y = tested
+ n = not tested in this release
+ C = Cluster
+ W = Workstation
x = not working in this release
+ dna = does not apply
( ) = footnote appears below second table
- <blank> = testing incomplete on this feature or platform
- W or C indicates workstation or cluster, respectively.
-
-Platform C F90 F90 C++ zlib SZIP
- parallel parallel
-SunOS5.10 64-bit n y n y y y
-SunOS5.10 32-bit n y n y y y
-Windows 7 y y n y y y
-Windows 7 x64 y y n y y y
-Mac OS X 10.5 Intel n y n y y y
-FreeBSD 8.2 32- and 64-bit n y n y y y
-RedHat EL4 2.6.9 i686 GNU W y(2) y(4) y(2) y y y
-RedHat EL4 2.6.9 i686 Intel W n y n y y n
-RedHat EL4 2.6.9 i686 PGI W n y n y y n
-SuSe Linux 2.6.16 x86_64 GNU (5) W y(2) y n y y y
-SuSe Linux 2.6.16 x86_64 Int (5) W n y n y n n
-SuSe Linux 2.6.16 x86_64 PGI (5) W n y n y n n
-RHL9 Linux 2.4 Xeon Lustre Intel C n y n y y n
-RHEL3 Linux 2.4 Xeon Intel W n y n n y n
-RHEL4 Linux 2.6 Xeon Lustre Int C n y n y y n
-SuSE Linux 2.4 ia64 Intel C y(1) y y y y y
-SuSe Linux 2.6.5
- SGI Altix ia64 Intel C n y n y n y
-Alpha OpenVMS 7.3.2 n y n y n n
-
-
-Platform Shared Shared Shared static- Thread-
- C libs F90 libs C++ libs exec safe
-SunOS 5.10 32-bit y y y x y
-SunOS 5.10 64-bit y y y x y
-Windows XP y y(3) y y n
-Windows XP x64 y y(3) y y n
-Windows Vista y y(3) y y y
-Windows Vista x64 y y(3) y y y
-Mac OS X 10.5 Intel y y y x n
-FreeBSD 8.2 32- and 64-bit y y y y y
-RHEL4 2.6.9 i686 GNU W y y(4) y x y
-RHEL4 2.6.9 i686 Intel W y y y x n
-RHEL4 2.6.9 i686 PGI W y y y x n
-SuSE Linux 2.6.16 x86_64 GNU (5) W y y y x y
-SuSE Linux 2.6.16 x86_64 Intel(5) W y y y x n
-SuSE Linux 2.6.16 x86_64 PGI(5) W y y y x n
-RHL9 Linux 2.4 Xeon Lustre Intel C y y y x n
-RHEL3 Linux 2.4 Xeon Intel W y n n x n
-RHEL4 Linux 2.6 Xeon Lustre Intel C y y y x n
-SuSE Linux 2.4 ia64 Intel C y y y x n
-SuSe Linux 2.6.5
- SGI Altix ia64 Intel C n n n x n
-
- Notes: (1) Using mpich 1.2.6.
- (2) Using mpich2 1.0.6.
- (3) Using Visual Studio 2008 (Cygwin shared libraries are not supported)
- (4) With PGI and Absoft compilers.
- (5) AMD Opteron x86_64
- Compiler versions for each platform are listed in the preceding
- "Platforms Tested" table.
+ <blank> = testing incomplete on this feature or platform
+
+Platform C F90/ F90 C++ zlib SZIP
+ parallel F2003 parallel
+Solaris2.10 32-bit n y/y n y y y
+Solaris2.10 64-bit n y/n n y y y
+Windows 7 y y/n n y y y
+Windows 7 x64 y y/n n y y y
+Mac OS X Snow Leopard 10.6.8 32-bit n y/y n y y n
+Mac OS X Snow Leopard 10.6.8 64-bit n y/y n y y y
+Mac OS X Lion 10.7.3 32-bit n y/y n y y n
+Mac OS X Lion 10.7.3 64-bit n y/y n y y y
+Mac OS X Mountain Lion 10.8.1 64-bit n y/n n y y n
+AIX 5.3 32- and 64-bit y y/n y y y y
+CentOS 5.5 Linux 2.6.18-308 i686 GNU y y/y y y y y
+CentOS 5.5 Linux 2.6.18-308 i686 Intel n y/y n y y y
+CentOS 5.5 Linux 2.6.18-308 i686 PGI n y/y n y y y
+CentOS 5.5 Linux 2.6.18 x86_64 GNU y y/y y y y y
+CentOS 5.5 Linux 2.6.18 x86_64 Intel n y/y n y y y
+CentOS 5.5 Linux 2.6.18 x86_64 PGI n y/y n y y y
+Linux 2.6.32-220.7.1.el6.ppc64 n y/n n y y y
+
+
+Platform Shared Shared Shared Thread-
+ C libs F90 libs C++ libs safe
+Solaris2.10 32-bit y y y y
+Solaris2.10 64-bit n n n n
+Windows 7 y y y y
+Windows 7 x64 y y y y
+Mac OS X Snow Leopard 10.6.8 32-bit y n y n
+Mac OS X Snow Leopard 10.6.8 64-bit y n y n
+Mac OS X Lion 10.7.3 32-bit y n y y
+Mac OS X Lion 10.7.3 64-bit y n y y
+Mac OS X Mountain Lion 10.8.1 64-bit y n y y
+AIX 5.3 32- and 64-bit n n n y
+CentOS 5.5 Linux 2.6.18-308 i686 GNU y y y y
+CentOS 5.5 Linux 2.6.18-308 i686 Intel y y y n
+CentOS 5.5 Linux 2.6.18-308 i686 PGI y y y n
+CentOS 5.5 Linux 2.6.18 x86_64 GNU y y y y
+CentOS 5.5 Linux 2.6.18 x86_64 Intel y y y n
+CentOS 5.5 Linux 2.6.18 x86_64 PGI y y y n
+Linux 2.6.32-220.7.1.el6.ppc64 y y y n
+
+Compiler versions for each platform are listed in the preceding
+"Supported Platforms" table.
+
+
+More Tested Platforms
+=====================
+The following platforms are not supported but have been tested for this release.
+ FreeBSD 8.2-STABLE i386 gcc 4.2.1 [FreeBSD] 20070719
+ (loyalty) gcc 4.6.1 20110422
+ g++ 4.6.1 20110422
+ gfortran 4.6.1 20110422
+
+ FreeBSD 8.2-STABLE amd64 gcc 4.2.1 [FreeBSD] 20070719
+ (freedom) gcc 4.6.1 20110422
+ g++ 4.6.1 20110422
+ gfortran 4.6.1 20110422
+
+ Debian6.0.3 2.6.32-5-686 #1 SMP i686 GNU/Linux
+ gcc (Debian 4.4.5-8) 4.4.5
+ GNU Fortran (Debian 4.4.5-8) 4.4.5
+ (cmake and autotools)
+
+ Debian6.0.3 2.6.32-5-amd64 #1 SMP x86_64 GNU/Linux
+ gcc (Debian 4.4.5-8) 4.4.5
+ GNU Fortran (Debian 4.4.5-8) 4.4.5
+ (cmake and autotools)
+
+ Fedora17 3.5.2-1.fc17.i6866 #1 SMP i686 i686 i386 GNU/Linux
+ gcc (GCC) 4.7.0 20120507 (Red Hat 4.7.0-5)
+ GNU Fortran (GCC) 4.7.0 20120507 (Red Hat 4.7.0-5)
+ (cmake and autotools)
+
+ Fedora17 3.5.2-1.fc17.x86_64 #1 SMP x86_64 x86_64 x86_64 GNU/Linux
+ gcc (GCC) 4.7.0 20120507 (Red Hat 4.7.0-5)
+ GNU Fortran (GCC) 4.7.0 20120507 (Red Hat 4.7.0-5)
+ (cmake and autotools)
+
+ SUSE 12.2 3.4.6-2.10-desktop #1 SMP PREEMPT i686 i686 i386 GNU/Linux
+ gcc (SUSE Linux) 4.7.1
+ GNU Fortran (SUSE Linux) 4.7.1
+ (cmake and autotools)
+
+ SUSE 12.2 3.4.6-2.10-desktop #1 SMP PREEMPT x86_64 x86_64 x86_64 GNU/Linux
+ gcc (SUSE Linux) 4.7.1
+ GNU Fortran (SUSE Linux) 4.7.1
+ (cmake and autotools)
+
+ Ubuntu 12.04 3.2.0-29-generic #46-Ubuntu SMP i686 GNU/Linux
+ gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
+ GNU Fortran (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
+ (cmake and autotools)
+
+ Ubuntu 12.04 3.2.0-29-generic #46-Ubuntu SMP x86_64 GNU/Linux
+ gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
+ GNU Fortran (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
+ (cmake and autotools)
+ (Use optimization level -O1)
+
+ Cray Linux Environment (CLE) PrgEnv-pgi/4.0.46
+ hopper.nersc.gov pgcc 12.5-0 64-bit target on x86-64 Linux -tp shanghai
+ pgf90 12.5-0 64-bit target on x86-64 Linux -tp shanghai
+ pgCC 12.5-0 64-bit target on x86-64 Linux -tp shanghai
Known Problems
==============
+* The 5.9 C++ compiler on Sun failed to compile a C++ test ttypes.cpp. It
+ complains with this message:
+ "/home/hdf5/src/H5Vprivate.h", line 130: Error: __func__ is not defined.
+
+ The reason is that __func__ is a predefined identifier in C99 standard. The
+ HDF5 C library uses it in H5private.h. The test ttypes.cpp includes
+ H5private.h (H5Tpkg.h<-H5Fprivate.h<-H5Vprivate.h<-H5private.h). Sun's 5.9
+ C++ compiler doesn't support __func__, thus fails to compile the C++ test.
+ But 5.11 C++ compiler does. To check whether your Sun C++ compiler knows this
+ identifier, try to compile the following simple C++ program:
+ #include<stdio.h>
+
+ int main(void)
+ {
+ printf("%s\n", __func__);
+ return 0;
+ }
+ (SLU - 2012/11/5)
+
* The C++ and FORTRAN bindings are not currently working on FreeBSD with the
native release 8.2 compilers (4.2.1), but are working with gcc 4.6 from the
ports (and probably gcc releases after that).
diff --git a/src/H5Dmpio.c b/src/H5Dmpio.c
index c2d964e..900ad6a 100644
--- a/src/H5Dmpio.c
+++ b/src/H5Dmpio.c
@@ -105,10 +105,9 @@ static herr_t H5D__chunk_collective_io(H5D_io_info_t *io_info,
static herr_t H5D__multi_chunk_collective_io(H5D_io_info_t *io_info,
const H5D_type_info_t *type_info, H5D_chunk_map_t *fm,
H5P_genplist_t *dx_plist);
-static herr_t H5D__multi_chunk_collective_io_no_opt(H5D_io_info_t *io_info,
- const H5D_type_info_t *type_info, H5D_chunk_map_t *fm, H5P_genplist_t *dx_plist);
static herr_t H5D__link_chunk_collective_io(H5D_io_info_t *io_info,
- const H5D_type_info_t *type_info, H5D_chunk_map_t *fm, int sum_chunk);
+ const H5D_type_info_t *type_info, H5D_chunk_map_t *fm, int sum_chunk,
+ H5P_genplist_t *dx_plist);
static herr_t H5D__inter_collective_io(H5D_io_info_t *io_info,
const H5D_type_info_t *type_info, const H5S_t *file_space,
const H5S_t *mem_space);
@@ -586,6 +585,12 @@ done:
* Programmer: Muqun Yang
* Monday, Feb. 13th, 2006
*
+ * Modification:
+ * - Refctore to remove multi-chunk-without-opimization feature and update for
+ * multi-chunk-io accordingly
+ * Programmer: Jonathan Kim
+ * Date: 2012-10-10
+ *
*-------------------------------------------------------------------------
*/
static herr_t
@@ -594,8 +599,6 @@ H5D__chunk_collective_io(H5D_io_info_t *io_info, const H5D_type_info_t *type_inf
{
H5P_genplist_t *dx_plist; /* Pointer to DXPL */
H5FD_mpio_chunk_opt_t chunk_opt_mode;
- H5D_mpio_actual_chunk_opt_mode_t actual_chunk_opt_mode;
- H5D_mpio_actual_io_mode_t actual_io_mode;
int io_option = H5D_MULTI_CHUNK_IO_MORE_OPT;
int sum_chunk = -1;
#ifdef H5_HAVE_INSTRUMENTED_LIBRARY
@@ -617,10 +620,12 @@ H5D__chunk_collective_io(H5D_io_info_t *io_info, const H5D_type_info_t *type_inf
/* Check the optional property list on what to do with collective chunk IO. */
chunk_opt_mode = (H5FD_mpio_chunk_opt_t)H5P_peek_unsigned(dx_plist, H5D_XFER_MPIO_CHUNK_OPT_HARD_NAME);
- if(chunk_opt_mode == H5FD_MPIO_CHUNK_ONE_IO)
+ if(H5FD_MPIO_CHUNK_ONE_IO == chunk_opt_mode)
io_option = H5D_ONE_LINK_CHUNK_IO; /*no opt*/
- else if(chunk_opt_mode == H5FD_MPIO_CHUNK_MULTI_IO)
- io_option = H5D_MULTI_CHUNK_IO; /*no opt */
+ /* direct request to multi-chunk-io */
+ else if(H5FD_MPIO_CHUNK_MULTI_IO == chunk_opt_mode)
+ io_option = H5D_MULTI_CHUNK_IO;
+ /* via default path. branch by num threshold */
else {
unsigned one_link_chunk_io_threshold; /* Threshhold to use single collective I/O for all chunks */
int mpi_size; /* Number of processes in MPI job */
@@ -649,7 +654,7 @@ H5D__chunk_collective_io(H5D_io_info_t *io_info, const H5D_type_info_t *type_inf
/*** Test collective chunk user-input optimization APIs. ***/
check_prop = H5Pexist(io_info->dxpl_id, H5D_XFER_COLL_CHUNK_LINK_HARD_NAME);
if(check_prop > 0) {
- if(io_option == H5D_ONE_LINK_CHUNK_IO) {
+ if(H5D_ONE_LINK_CHUNK_IO == io_option) {
new_value = 0;
if(H5Pset(io_info->dxpl_id, H5D_XFER_COLL_CHUNK_LINK_HARD_NAME, &new_value) < 0)
HGOTO_ERROR(H5E_IO, H5E_CANTSET, FAIL, "unable to set property value")
@@ -657,7 +662,7 @@ H5D__chunk_collective_io(H5D_io_info_t *io_info, const H5D_type_info_t *type_inf
} /* end if */
check_prop = H5Pexist(io_info->dxpl_id, H5D_XFER_COLL_CHUNK_MULTI_HARD_NAME);
if(check_prop > 0) {
- if(io_option == H5D_MULTI_CHUNK_IO) {
+ if(H5D_MULTI_CHUNK_IO == io_option) {
new_value = 0;
if(H5Pset(io_info->dxpl_id, H5D_XFER_COLL_CHUNK_MULTI_HARD_NAME, &new_value) < 0)
HGOTO_ERROR(H5E_IO, H5E_CANTSET, FAIL, "unable to set property value")
@@ -665,7 +670,7 @@ H5D__chunk_collective_io(H5D_io_info_t *io_info, const H5D_type_info_t *type_inf
} /* end if */
check_prop = H5Pexist(io_info->dxpl_id, H5D_XFER_COLL_CHUNK_LINK_NUM_TRUE_NAME);
if(check_prop > 0) {
- if(io_option == H5D_ONE_LINK_CHUNK_IO_MORE_OPT) {
+ if(H5D_ONE_LINK_CHUNK_IO_MORE_OPT == io_option) {
new_value = 0;
if(H5Pset(io_info->dxpl_id, H5D_XFER_COLL_CHUNK_LINK_NUM_TRUE_NAME, &new_value) < 0)
HGOTO_ERROR(H5E_IO, H5E_CANTSET, FAIL, "unable to set property value")
@@ -682,39 +687,16 @@ H5D__chunk_collective_io(H5D_io_info_t *io_info, const H5D_type_info_t *type_inf
#endif
/* step 2: Go ahead to do IO.*/
- if(io_option == H5D_ONE_LINK_CHUNK_IO || io_option == H5D_ONE_LINK_CHUNK_IO_MORE_OPT) {
- /* set the actual io mode properties to the correct values for link chunk io.
- * Link chunk I/O does not break to independent, so we can set the actual_io mode
- * as well as the optimisation mode. */
- actual_chunk_opt_mode = H5D_MPIO_LINK_CHUNK;
- actual_io_mode = H5D_MPIO_CHUNK_COLLECTIVE;
-
- /* Set the actual chunk opt mode property. */
- if(H5P_set(dx_plist, H5D_MPIO_ACTUAL_CHUNK_OPT_MODE_NAME, &actual_chunk_opt_mode) < 0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "couldn't set actual chunk opt mode property")
-
- if(H5D__link_chunk_collective_io(io_info, type_info, fm, sum_chunk) < 0)
+ if(H5D_ONE_LINK_CHUNK_IO == io_option || H5D_ONE_LINK_CHUNK_IO_MORE_OPT == io_option) {
+ if(H5D__link_chunk_collective_io(io_info, type_info, fm, sum_chunk, dx_plist) < 0)
HGOTO_ERROR(H5E_IO, H5E_CANTGET, FAIL, "couldn't finish linked chunk MPI-IO")
-
- /* Set the actual io mode property. */
- if(H5P_set(dx_plist, H5D_MPIO_ACTUAL_IO_MODE_NAME, &actual_io_mode) < 0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "couldn't set actual io mode property")
} /* end if */
- else
- if(io_option == H5D_MULTI_CHUNK_IO) {
- /* Set the actual chunk opt mode property */
- actual_chunk_opt_mode = H5D_MPIO_MULTI_CHUNK_NO_OPT;
- if(H5P_set(dx_plist, H5D_MPIO_ACTUAL_CHUNK_OPT_MODE_NAME, &actual_chunk_opt_mode) < 0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "couldn't set actual chunk opt mode property")
-
- if(H5D__multi_chunk_collective_io_no_opt(io_info, type_info, fm, dx_plist) < 0)
- HGOTO_ERROR(H5E_IO, H5E_CANTGET, FAIL, "couldn't finish multiple chunk MPI-IO")
+ /* direct request to multi-chunk-io */
+ else if(H5D_MULTI_CHUNK_IO == io_option) {
+ if(H5D__multi_chunk_collective_io(io_info, type_info, fm, dx_plist) < 0)
+ HGOTO_ERROR(H5E_IO, H5E_CANTGET, FAIL, "couldn't finish optimized multiple chunk MPI-IO")
} /* end if */
- else { /*multiple chunk IOs with opt */
- actual_chunk_opt_mode = H5D_MPIO_MULTI_CHUNK;
- if(H5P_set(dx_plist, H5D_MPIO_ACTUAL_CHUNK_OPT_MODE_NAME, &actual_chunk_opt_mode) < 0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "couldn't set actual chunk opt mode property")
-
+ else { /* multiple chunk IO via threshold */
if(H5D__multi_chunk_collective_io(io_info, type_info, fm, dx_plist) < 0)
HGOTO_ERROR(H5E_IO, H5E_CANTGET, FAIL, "couldn't finish optimized multiple chunk MPI-IO")
} /* end else */
@@ -801,11 +783,16 @@ done:
* Programmer: Muqun Yang
* Monday, Feb. 13th, 2006
*
+ * Modification:
+ * - Set H5D_MPIO_ACTUAL_CHUNK_OPT_MODE_NAME and H5D_MPIO_ACTUAL_IO_MODE_NAME
+ * dxpl in this.
+ * Programmer: Jonathan Kim
+ * Date: 2012-10-10
*-------------------------------------------------------------------------
*/
static herr_t
H5D__link_chunk_collective_io(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
- H5D_chunk_map_t *fm, int sum_chunk)
+ H5D_chunk_map_t *fm, int sum_chunk, H5P_genplist_t *dx_plist)
{
H5D_chunk_addr_info_t *chunk_addr_info_array = NULL;
MPI_Datatype chunk_final_mtype; /* Final memory MPI datatype for all chunks with seletion */
@@ -824,10 +811,21 @@ H5D__link_chunk_collective_io(H5D_io_info_t *io_info, const H5D_type_info_t *typ
int *chunk_mpi_file_counts = NULL; /* Count of MPI file datatype for each chunk */
int *chunk_mpi_mem_counts = NULL; /* Count of MPI memory datatype for each chunk */
int mpi_code; /* MPI return code */
+ H5D_mpio_actual_chunk_opt_mode_t actual_chunk_opt_mode = H5D_MPIO_LINK_CHUNK;
+ H5D_mpio_actual_io_mode_t actual_io_mode = H5D_MPIO_CHUNK_COLLECTIVE;
herr_t ret_value = SUCCEED;
FUNC_ENTER_STATIC
+ /* Set the actual-chunk-opt-mode property. */
+ if(H5P_set(dx_plist, H5D_MPIO_ACTUAL_CHUNK_OPT_MODE_NAME, &actual_chunk_opt_mode) < 0)
+ HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "couldn't set actual chunk opt mode property")
+
+ /* Set the actual-io-mode property.
+ * Link chunk I/O does not break to independent, so can set right away */
+ if(H5P_set(dx_plist, H5D_MPIO_ACTUAL_IO_MODE_NAME, &actual_io_mode) < 0)
+ HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "couldn't set actual io mode property")
+
/* Get the sum # of chunks, if not already available */
if(sum_chunk < 0) {
if(H5D__mpio_get_sum_chunk(io_info, fm, &sum_chunk) < 0)
@@ -1075,6 +1073,12 @@ if(H5DEBUG(D))
* Programmer: Muqun Yang
* Monday, Feb. 13th, 2006
*
+ * Modification:
+ * - Set H5D_MPIO_ACTUAL_CHUNK_OPT_MODE_NAME dxpl in this to go along with
+ * setting H5D_MPIO_ACTUAL_IO_MODE_NAME dxpl at the bottom.
+ * Programmer: Jonathan Kim
+ * Date: 2012-10-10
+ *
*-------------------------------------------------------------------------
*/
static herr_t
@@ -1096,11 +1100,16 @@ H5D__multi_chunk_collective_io(H5D_io_info_t *io_info, const H5D_type_info_t *ty
int mpi_rank;
#endif
size_t u; /* Local index variable */
+ H5D_mpio_actual_chunk_opt_mode_t actual_chunk_opt_mode = H5D_MPIO_MULTI_CHUNK; /* actual chunk optimization mode */
H5D_mpio_actual_io_mode_t actual_io_mode = H5D_MPIO_NO_COLLECTIVE; /* Local variable for tracking the I/O mode used. */
herr_t ret_value = SUCCEED;
FUNC_ENTER_STATIC
+ /* Set the actual chunk opt mode property */
+ if(H5P_set(dx_plist, H5D_MPIO_ACTUAL_CHUNK_OPT_MODE_NAME, &actual_chunk_opt_mode) < 0)
+ HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "couldn't set actual chunk opt mode property")
+
#ifdef H5Dmpio_DEBUG
mpi_rank = H5F_mpi_get_rank(io_info->dset->oloc.file);
#endif
@@ -1263,210 +1272,6 @@ done:
} /* end H5D__multi_chunk_collective_io */
-/*-------------------------------------------------------------------------
- * Function: H5D__multi_chunk_collective_io_no_opt
- *
- * Purpose: To do collective IO without any optimization per chunk base
- * The internal independent IO inside HDF5 cannot handle
- * non-contiguous(or with holes) storage efficiently.
- * Under this case, the one independent IO call may consist of
- * many small disk IOs. So we may use independent IO with derived datatype
- * to replace the independent IO when we find this chunk is not good to
- * do collective IO. However, according to our performance study,
- * this approach may not overcome the overhead caused by MPI gather/scatter.
- * So we decide to leave the original collective IO per chunk approach as
- * an option for users. NO MPI gather/scatter calls are used.
- * HDF5 will try to collective IO if possible.
- * If users choose to use
- * H5Pset_dxpl_mpio_chunk_opt(dxpl_id,H5FD_MPIO_OPT_MULTI_IO),
- * this function will be called.
- * The HDF5 library won't do any IO management but leave it to MPI-IO to figure
- * out.
- *
- * Return: Non-negative on success/Negative on failure
- *
- * Programmer: Muqun Yang
- * Monday, Feb. 13th, 2006
- *
- *-------------------------------------------------------------------------
- */
-static herr_t
-H5D__multi_chunk_collective_io_no_opt(H5D_io_info_t *io_info,
- const H5D_type_info_t *type_info, H5D_chunk_map_t *fm, H5P_genplist_t *dx_plist)
-{
- H5SL_node_t *chunk_node; /* Current node in chunk skip list */
- H5D_io_info_t ctg_io_info; /* Contiguous I/O info object */
- H5D_storage_t ctg_store; /* Chunk storage information as contiguous dataset */
- H5D_io_info_t cpt_io_info; /* Compact I/O info object */
- H5D_storage_t cpt_store; /* Chunk storage information as compact dataset */
- hbool_t cpt_dirty; /* Temporary placeholder for compact storage "dirty" flag */
- int min_chunk = -1; /* Minimum # of chunks all processes will operate on */
- int count_chunk; /* How many chunks have we operated on? */
- H5D_storage_t store; /* union of EFL and chunk pointer in file space */
- H5D_mpio_actual_io_mode_t actual_io_mode = H5D_MPIO_NO_COLLECTIVE; /*Local variable for tracking the I/O modes used. */
- herr_t ret_value = SUCCEED;
-
- FUNC_ENTER_STATIC
-
-#ifdef H5D_DEBUG
-if(H5DEBUG(D)) {
- int mpi_rank;
-
- mpi_rank = H5F_mpi_get_rank(io_info->dset->oloc.file);
- HDfprintf(H5DEBUG(D), "Rank %d: coming to multi_chunk_collective_io_no_opt\n", mpi_rank);
-}
-#endif
-
- /* Set up contiguous I/O info object */
- HDmemcpy(&ctg_io_info, io_info, sizeof(ctg_io_info));
- ctg_io_info.store = &ctg_store;
- ctg_io_info.layout_ops = *H5D_LOPS_CONTIG;
-
- /* Initialize temporary contiguous storage info */
- ctg_store.contig.dset_size = (hsize_t)io_info->dset->shared->layout.u.chunk.size;
-
- /* Set up compact I/O info object */
- HDmemcpy(&cpt_io_info, io_info, sizeof(cpt_io_info));
- cpt_io_info.store = &cpt_store;
- cpt_io_info.layout_ops = *H5D_LOPS_COMPACT;
-
- /* Initialize temporary compact storage info */
- cpt_store.compact.dirty = &cpt_dirty;
-
- /* Set dataset storage for I/O info */
- io_info->store = &store;
-
- /* Get the min. # of chunks */
- if(H5D__mpio_get_min_chunk(io_info, fm, &min_chunk) < 0)
- HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't get minimum number of chunk")
- HDassert(min_chunk >= 0);
-
- /* Get first node in chunk skip list */
- chunk_node = H5SL_first(fm->sel_chunks);
- count_chunk = 0;
-
- /* Iterate through chunks to be operated on */
- while(chunk_node) {
- H5D_chunk_info_t *chunk_info; /* chunk information */
- H5D_chunk_ud_t udata; /* B-tree pass-through */
- hbool_t make_ind, make_coll; /* Flags to indicate that the MPI mode should change */
-
- /* Get the actual chunk information from the skip list node */
- chunk_info = H5SL_item(chunk_node);
-
- /* Pass in chunk's coordinates in a union. */
- store.chunk.offset = chunk_info->coords;
- store.chunk.index = chunk_info->index;
-
- /* Reset flags for changing parallel I/O mode */
- make_ind = make_coll = FALSE;
-
- count_chunk++;
-
- /* If the number of chunk is greater than minimum number of chunk,
- * Do independent read.
- */
- if(count_chunk > min_chunk)
- /* Switch to independent I/O (permanently) */
- make_ind = TRUE;
-
- /* Retrieve the chunk's address */
- if(H5D__chunk_lookup(io_info->dset, io_info->dxpl_id, chunk_info->coords,
- chunk_info->index, &udata) < 0)
- HGOTO_ERROR(H5E_STORAGE, H5E_CANTGET, FAIL, "couldn't get chunk info from skipped list")
-
- /* Independent I/O */
- if(make_ind) {
- void *chunk; /* Pointer to the data chunk in cache */
- H5D_io_info_t *chk_io_info; /* Pointer to I/O info object for this chunk */
- uint32_t accessed_bytes = 0; /* Total accessed size in a chunk */
- htri_t cacheable; /* Whether the chunk is cacheable */
-
- /* Switch to independent I/O */
- if(H5D__ioinfo_xfer_mode(io_info, dx_plist, H5FD_MPIO_INDEPENDENT) < 0)
- HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't switch to independent I/O")
-
- /* Update the local variable tracking the dxpl's actual io mode */
- actual_io_mode = actual_io_mode | H5D_MPIO_CHUNK_INDEPENDENT;
-
- /* Load the chunk into cache and lock it. */
- if((cacheable = H5D__chunk_cacheable(io_info, udata.addr,
- io_info->op_type == H5D_IO_OP_WRITE)) < 0)
- HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't tell if chunk is cacheable")
- if(cacheable) {
- hbool_t entire_chunk = TRUE; /* Whether whole chunk is selected */
-
- /* Compute # of bytes accessed in chunk */
- accessed_bytes = chunk_info->chunk_points * type_info->src_type_size;
-
- /* Determine if we will access all the data in the chunk */
- if(((io_info->op_type == H5D_IO_OP_WRITE) && (accessed_bytes != ctg_store.contig.dset_size))
- || (io_info->op_type != H5D_IO_OP_WRITE))
- entire_chunk = FALSE;
-
- /* Lock the chunk into the cache */
- if(NULL == (chunk = H5D__chunk_lock(io_info, &udata, entire_chunk)))
- HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "unable to read raw data chunk")
-
- /* Set up the storage buffer information for this chunk */
- cpt_store.compact.buf = chunk;
-
- /* Point I/O info at contiguous I/O info for this chunk */
- chk_io_info = &cpt_io_info;
- } /* end if */
- else {
- /* Set up the storage address information for this chunk */
- ctg_store.contig.dset_addr = udata.addr;
-
- /* No chunk cached */
- chunk = NULL;
-
- /* Point I/O info at temporary I/O info for this chunk */
- chk_io_info = &ctg_io_info;
- } /* end else */
-
- if(io_info->op_type == H5D_IO_OP_WRITE) {
- if((io_info->io_ops.single_write)(chk_io_info, type_info,
- (hsize_t)chunk_info->chunk_points, chunk_info->fspace, chunk_info->mspace) < 0)
- HGOTO_ERROR(H5E_DATASET, H5E_WRITEERROR, FAIL, "optimized write failed")
- } /* end if */
- else {
- if((io_info->io_ops.single_read)(chk_io_info, type_info,
- (hsize_t)chunk_info->chunk_points, chunk_info->fspace, chunk_info->mspace) < 0)
- HGOTO_ERROR(H5E_DATASET, H5E_READERROR, FAIL, "optimized read failed")
- } /* end ese */
-
- /* Release the cache lock on the chunk. */
- if(chunk)
- if(H5D__chunk_unlock(io_info, &udata, (io_info->op_type == H5D_IO_OP_WRITE), chunk, accessed_bytes) < 0)
- HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "unable to unlock raw data chunk")
- } /* end if */
- else { /*collective I/O */
- /* Set up the storage address information for this chunk */
- ctg_store.contig.dset_addr = udata.addr;
-
- /* Update the local variable tracking the dxpl's actual io Mode. */
- actual_io_mode = actual_io_mode | H5D_MPIO_CHUNK_COLLECTIVE;
-
- if(H5D__inter_collective_io(&ctg_io_info, type_info, chunk_info->fspace, chunk_info->mspace) < 0)
- HGOTO_ERROR(H5E_IO, H5E_CANTGET, FAIL,"couldn't finish shared collective MPI-IO")
- } /* end else */
-
- if(make_coll)
- if(H5D__ioinfo_xfer_mode(io_info, dx_plist, H5FD_MPIO_COLLECTIVE) < 0)
- HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't switch to independent I/O")
-
- /* Get the next chunk node in the skip list */
- chunk_node = H5SL_next(chunk_node);
- } /* end while */
-
- /* Write the local value of actual io mode to the DXPL. */
- if(H5P_set(dx_plist, H5D_MPIO_ACTUAL_IO_MODE_NAME, &actual_io_mode) < 0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "couldn't set actual io mode property")
-
-done:
- FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5D__multi_chunk_collective_io_no_opt */
/*-------------------------------------------------------------------------
@@ -1794,7 +1599,6 @@ H5D__obtain_mpio_mode(H5D_io_info_t* io_info, H5D_chunk_map_t *fm,
{
int total_chunks;
unsigned percent_nproc_per_chunk, threshold_nproc_per_chunk;
- H5FD_mpio_chunk_opt_t chunk_opt_mode;
uint8_t* io_mode_info = NULL;
uint8_t* recv_io_mode_info = NULL;
uint8_t* mergebuf = NULL;
@@ -1827,8 +1631,8 @@ H5D__obtain_mpio_mode(H5D_io_info_t* io_info, H5D_chunk_map_t *fm,
/* Setup parameters */
H5_ASSIGN_OVERFLOW(total_chunks, fm->layout->u.chunk.nchunks, hsize_t, int);
percent_nproc_per_chunk = H5P_peek_unsigned(dx_plist, H5D_XFER_MPIO_CHUNK_OPT_RATIO_NAME);
- chunk_opt_mode = (H5FD_mpio_chunk_opt_t)H5P_peek_unsigned(dx_plist, H5D_XFER_MPIO_CHUNK_OPT_HARD_NAME);
- if((chunk_opt_mode == H5FD_MPIO_CHUNK_MULTI_IO) || (percent_nproc_per_chunk == 0)) {
+ /* if ratio is 0, perform collective io */
+ if(0 == percent_nproc_per_chunk) {
if(H5D__chunk_addrmap(io_info, chunk_addr) < 0)
HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't get chunk address");
for(ic = 0; ic < total_chunks; ic++)
diff --git a/src/H5Dprivate.h b/src/H5Dprivate.h
index 9adf6a5..1e2b91d 100644
--- a/src/H5Dprivate.h
+++ b/src/H5Dprivate.h
@@ -87,8 +87,6 @@
#define H5D_XFER_COLL_CHUNK_LINK_NUM_FALSE_NAME "coll_chunk_link_false"
#define H5D_XFER_COLL_CHUNK_MULTI_RATIO_COLL_NAME "coll_chunk_multi_coll"
#define H5D_XFER_COLL_CHUNK_MULTI_RATIO_IND_NAME "coll_chunk_multi_ind"
-#define H5D_XFER_COLL_CHUNK_LINK_TO_MULTI "coll_chunk_link_mul"/* Internal transferring from link to multiple chunk */
-#define H5D_XFER_COLL_CHUNK_LINK_TO_MULTI_OPT "coll_chunk_link_mul_opt"/* Internal transferring from link opt to multiple chunk opt*/
/* Definitions for all collective chunk instrumentation properties */
#define H5D_XFER_COLL_CHUNK_SIZE sizeof(unsigned)
diff --git a/src/H5FDcore.c b/src/H5FDcore.c
index 932e2af..07f4551 100644
--- a/src/H5FDcore.c
+++ b/src/H5FDcore.c
@@ -481,7 +481,7 @@ H5FD_core_open(const char *name, unsigned flags, hid_t fapl_id,
* default value. But if the file access property list was zero then use
* the default value instead.
*/
- file->increment = (fa->increment>0) ? fa->increment : H5FD_CORE_INCREMENT;
+ file->increment = (fa->increment > 0) ? fa->increment : H5FD_CORE_INCREMENT;
/* If save data in backing store. */
file->backing_store = fa->backing_store;
diff --git a/src/H5FDdirect.c b/src/H5FDdirect.c
index 4721a44..9715bc1 100644
--- a/src/H5FDdirect.c
+++ b/src/H5FDdirect.c
@@ -533,7 +533,8 @@ H5FD_direct_open(const char *name, unsigned flags, hid_t fapl_id, haddr_t maxadd
/* Get the driver specific information */
if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a file access property list")
- fa = H5P_get_driver_info(plist);
+ if(NULL == (fa = (H5FD_direct_fapl_t *)H5P_get_driver_info(plist)))
+ HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, NULL, "bad VFL driver info")
file->fd = fd;
H5_ASSIGN_OVERFLOW(file->eof,sb.st_size,h5_stat_size_t,haddr_t);
@@ -562,9 +563,9 @@ H5FD_direct_open(const char *name, unsigned flags, hid_t fapl_id, haddr_t maxadd
* is to handle correctly the case that the file is in a different file system
* than the one where the program is running.
*/
- buf1 = (int*)HDmalloc(sizeof(int));
- if (HDposix_memalign(&buf2, file->fa.mboundary, file->fa.fbsize) != 0)
- HGOTO_ERROR(H5E_RESOURCE, H5E_CANTALLOC, NULL, "HDposix_memalign failed")
+ buf1 = (int *)HDmalloc(sizeof(int));
+ if(HDposix_memalign(&buf2, file->fa.mboundary, file->fa.fbsize) != 0)
+ HGOTO_ERROR(H5E_RESOURCE, H5E_CANTALLOC, NULL, "HDposix_memalign failed")
if(o_flags & O_CREAT) {
if(write(file->fd, (void*)buf1, sizeof(int))<0) {
diff --git a/src/H5FDfamily.c b/src/H5FDfamily.c
index f051269..dc535a2 100644
--- a/src/H5FDfamily.c
+++ b/src/H5FDfamily.c
@@ -675,8 +675,8 @@ H5FD_family_open(const char *name, unsigned flags, hid_t fapl_id,
if(NULL == (plist = (H5P_genplist_t *)H5I_object(fapl_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a file access property list")
- fa = (H5FD_family_fapl_t *)H5P_get_driver_info(plist);
- HDassert(fa);
+ if(NULL == (fa = (H5FD_family_fapl_t *)H5P_get_driver_info(plist)))
+ HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, NULL, "bad VFL driver info")
/* Check for new family file size. It's used by h5repart only. */
if(H5P_exist_plist(plist, H5F_ACS_FAMILY_NEWSIZE_NAME) > 0) {
diff --git a/src/H5FDlog.c b/src/H5FDlog.c
index 6a2425c..9f4abd3 100644
--- a/src/H5FDlog.c
+++ b/src/H5FDlog.c
@@ -529,8 +529,8 @@ H5FD_log_open(const char *name, unsigned flags, hid_t fapl_id, haddr_t maxaddr)
/* Get the driver specific information */
if(NULL == (plist = H5P_object_verify(fapl_id, H5P_FILE_ACCESS)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a file access property list")
- fa = (H5FD_log_fapl_t *)H5P_get_driver_info(plist);
- HDassert(fa);
+ if(NULL == (fa = (H5FD_log_fapl_t *)H5P_get_driver_info(plist)))
+ HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, NULL, "bad VFL driver info")
#ifdef H5_HAVE_GETTIMEOFDAY
if(fa->flags & H5FD_LOG_TIME_OPEN)
@@ -644,9 +644,9 @@ H5FD_log_open(const char *name, unsigned flags, hid_t fapl_id, haddr_t maxaddr)
#ifdef H5_HAVE_GETTIMEOFDAY
if(file->fa.flags & H5FD_LOG_TIME_OPEN)
- HDfprintf(file->logfp, "Open took: (%f s)\n", (double)open_timeval_diff.tv_sec + ((double)open_timeval_diff.tv_usec / (double)1000000.0));
+ HDfprintf(file->logfp, "Open took: (%f s)\n", (double)open_timeval_diff.tv_sec + ((double)open_timeval_diff.tv_usec / (double)1000000.0f));
if(file->fa.flags & H5FD_LOG_TIME_STAT)
- HDfprintf(file->logfp, "Stat took: (%f s)\n", (double)stat_timeval_diff.tv_sec + ((double)stat_timeval_diff.tv_usec / (double)1000000.0));
+ HDfprintf(file->logfp, "Stat took: (%f s)\n", (double)stat_timeval_diff.tv_sec + ((double)stat_timeval_diff.tv_usec / (double)1000000.0f));
#endif /* H5_HAVE_GETTIMEOFDAY */
} /* end if */
@@ -734,7 +734,7 @@ H5FD_log_close(H5FD_t *_file)
timeval_diff.tv_usec += 1000000;
timeval_diff.tv_sec--;
} /* end if */
- HDfprintf(file->logfp, "Close took: (%f s)\n", (double)timeval_diff.tv_sec + ((double)timeval_diff.tv_usec / (double)1000000.0));
+ HDfprintf(file->logfp, "Close took: (%f s)\n", (double)timeval_diff.tv_sec + ((double)timeval_diff.tv_usec / (double)1000000.0f));
} /* end if */
#endif /* H5_HAVE_GETTIMEOFDAY */
@@ -1195,7 +1195,7 @@ H5FD_log_read(H5FD_t *_file, H5FD_mem_t type, hid_t UNUSED dxpl_id, haddr_t addr
timeval_diff.tv_usec += 1000000;
timeval_diff.tv_sec--;
} /* end if */
- time_diff = (double)timeval_diff.tv_sec + ((double)timeval_diff.tv_usec / (double)1000000.0);
+ time_diff = (double)timeval_diff.tv_sec + ((double)timeval_diff.tv_usec / (double)1000000.0f);
HDfprintf(file->logfp, " (%f s)\n", time_diff);
/* Add to total seek time */
@@ -1284,7 +1284,7 @@ H5FD_log_read(H5FD_t *_file, H5FD_mem_t type, hid_t UNUSED dxpl_id, haddr_t addr
timeval_diff.tv_usec += 1000000;
timeval_diff.tv_sec--;
} /* end if */
- time_diff = (double)timeval_diff.tv_sec + ((double)timeval_diff.tv_usec / (double)1000000.0);
+ time_diff = (double)timeval_diff.tv_sec + ((double)timeval_diff.tv_usec / (double)1000000.0f);
HDfprintf(file->logfp, " (%f s)\n", time_diff);
/* Add to total read time */
@@ -1401,7 +1401,7 @@ H5FD_log_write(H5FD_t *_file, H5FD_mem_t type, hid_t UNUSED dxpl_id, haddr_t add
timeval_diff.tv_usec += 1000000;
timeval_diff.tv_sec--;
} /* end if */
- time_diff = (double)timeval_diff.tv_sec + ((double)timeval_diff.tv_usec / (double)1000000.0);
+ time_diff = (double)timeval_diff.tv_sec + ((double)timeval_diff.tv_usec / (double)1000000.0f);
HDfprintf(file->logfp, " (%f s)\n", time_diff);
/* Add to total seek time */
@@ -1487,7 +1487,7 @@ H5FD_log_write(H5FD_t *_file, H5FD_mem_t type, hid_t UNUSED dxpl_id, haddr_t add
timeval_diff.tv_usec += 1000000;
timeval_diff.tv_sec--;
} /* end if */
- time_diff = (double)timeval_diff.tv_sec + ((double)timeval_diff.tv_usec / (double)1000000.0);
+ time_diff = (double)timeval_diff.tv_sec + ((double)timeval_diff.tv_usec / (double)1000000.0f);
HDfprintf(file->logfp, " (%f s)\n", time_diff);
/* Add to total write time */
diff --git a/src/H5FDmpio.c b/src/H5FDmpio.c
index cac101b..2db77c9 100644
--- a/src/H5FDmpio.c
+++ b/src/H5FDmpio.c
@@ -1013,8 +1013,8 @@ H5FD_mpio_open(const char *name, unsigned flags, hid_t fapl_id,
_fa.info = MPI_INFO_NULL; /*default*/
fa = &_fa;
} else {
- fa = (const H5FD_mpio_fapl_t *)H5P_get_driver_info(plist);
- assert(fa);
+ if(NULL == (fa = (const H5FD_mpio_fapl_t *)H5P_get_driver_info(plist)))
+ HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, NULL, "bad VFL driver info")
}
/* Duplicate communicator and Info object for use by this file. */
diff --git a/src/H5FDmpiposix.c b/src/H5FDmpiposix.c
index 0d0b839..092cd24 100644
--- a/src/H5FDmpiposix.c
+++ b/src/H5FDmpiposix.c
@@ -600,8 +600,8 @@ H5FD_mpiposix_open(const char *name, unsigned flags, hid_t fapl_id,
fa = &_fa;
} /* end if */
else {
- fa = H5P_get_driver_info(plist);
- HDassert(fa);
+ 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. */
diff --git a/src/H5Pocpl.c b/src/H5Pocpl.c
index 6e20963..d8ddfee 100644
--- a/src/H5Pocpl.c
+++ b/src/H5Pocpl.c
@@ -1514,9 +1514,12 @@ H5P__ocrt_pipeline_dec(const void **_pp, void *_value)
UINT64DECODE_VAR(*pp, enc_value, enc_size);
filter.cd_nelmts = (size_t)enc_value;
- if(filter.cd_nelmts)
+ if(filter.cd_nelmts) {
if(NULL == (filter.cd_values = (unsigned *)H5MM_malloc(sizeof(unsigned) * filter.cd_nelmts)))
HGOTO_ERROR(H5E_PLIST, H5E_CANTALLOC, FAIL, "memory allocation failed for cd_values")
+ } /* end if */
+ else
+ filter.cd_values = NULL;
/* decode values */
for(v = 0; v < filter.cd_nelmts; v++)
diff --git a/src/H5Ppublic.h b/src/H5Ppublic.h
index 507bbb6..6b17e0b 100644
--- a/src/H5Ppublic.h
+++ b/src/H5Ppublic.h
@@ -131,8 +131,7 @@ typedef enum H5D_mpio_actual_chunk_opt_mode_t {
*/
H5D_MPIO_NO_CHUNK_OPTIMIZATION = 0,
H5D_MPIO_LINK_CHUNK,
- H5D_MPIO_MULTI_CHUNK,
- H5D_MPIO_MULTI_CHUNK_NO_OPT
+ H5D_MPIO_MULTI_CHUNK
} H5D_mpio_actual_chunk_opt_mode_t;
typedef enum H5D_mpio_actual_io_mode_t {
diff --git a/src/H5detect.c b/src/H5detect.c
index 87a4fd5..d6f6a3b 100644
--- a/src/H5detect.c
+++ b/src/H5detect.c
@@ -120,7 +120,7 @@ static void print_results(int nd, detected_t *d, int na, malign_t *m);
static void iprint(detected_t *);
static int byte_cmp(int, const void *, const void *);
static int bit_cmp(int, int *, volatile void *, volatile void *);
-static void fix_order(int, int, int, int *, const char **);
+static void fix_order(int, int, int *, const char **);
static int imp_bit(int, int *, volatile void *, volatile void *);
static unsigned long find_bias(int, int, int *, void *);
static void precision (detected_t*);
@@ -293,7 +293,7 @@ precision (detected_t *d)
#define DETECT_F(TYPE,VAR,INFO) { \
volatile TYPE _v1, _v2, _v3; \
unsigned char _buf1[sizeof(TYPE)], _buf3[sizeof(TYPE)]; \
- int _i, _j, _first = (-1), _last = (-1); \
+ int _i, _j, _last = (-1); \
char *_mesg; \
\
memset(&INFO, 0, sizeof(INFO)); \
@@ -315,15 +315,11 @@ precision (detected_t *d)
memcpy(_buf3, (const void *)&_v3, sizeof(TYPE)); \
_j = byte_cmp(sizeof(TYPE), &_buf3, &_buf1); \
if(_j >= 0) { \
- if(0 == _i || INFO.perm[_i - 1] != _j) { \
- INFO.perm[_i] = _j; \
- _last = _i; \
- if(_first < 0) \
- _first = _i; \
- } \
+ INFO.perm[_i] = _j; \
+ _last = _i; \
} \
} \
- fix_order(sizeof(TYPE), _first, _last, INFO.perm, (const char**)&_mesg); \
+ fix_order(sizeof(TYPE), _last, INFO.perm, (const char**)&_mesg); \
\
if(!strcmp(_mesg, "VAX")) \
INFO.is_vax = TRUE; \
@@ -973,11 +969,11 @@ bit_cmp(int nbytes, int *perm, volatile void *_a, volatile void *_b)
*-------------------------------------------------------------------------
*/
static void
-fix_order(int n, int first, int last, int *perm, const char **mesg)
+fix_order(int n, int last, int *perm, const char **mesg)
{
int i;
- if (first + 1 < last) {
+ if (last > 1) {
/*
* We have at least three points to consider.
*/
@@ -998,6 +994,9 @@ fix_order(int n, int first, int last, int *perm, const char **mesg)
} else {
/*
* Bi-endian machines like VAX.
+ * (NOTE: This is not an actual determination of the VAX-endianess.
+ * It could have some other endianess and fall into this
+ * case - JKM & QAK)
*/
assert(0 == n % 2);
if (mesg) *mesg = "VAX";
diff --git a/src/H5public.h b/src/H5public.h
index 88e514d..5d9e3ef 100644
--- a/src/H5public.h
+++ b/src/H5public.h
@@ -75,10 +75,10 @@ extern "C" {
/* Version numbers */
#define H5_VERS_MAJOR 1 /* For major interface/format changes */
#define H5_VERS_MINOR 9 /* For minor interface/format changes */
-#define H5_VERS_RELEASE 132 /* For tweaks, bug-fixes, or development */
+#define H5_VERS_RELEASE 136 /* For tweaks, bug-fixes, or development */
#define H5_VERS_SUBRELEASE "" /* For pre-releases like snap0 */
/* Empty string for real releases. */
-#define H5_VERS_INFO "HDF5 library version: 1.9.132" /* Full version string */
+#define H5_VERS_INFO "HDF5 library version: 1.9.136" /* Full version string */
#define H5check() H5check_version(H5_VERS_MAJOR,H5_VERS_MINOR, \
H5_VERS_RELEASE)
diff --git a/src/H5trace.c b/src/H5trace.c
index 2dab8ec..92736d4 100644
--- a/src/H5trace.c
+++ b/src/H5trace.c
@@ -612,10 +612,6 @@ H5_trace(const double *returning, const char *func, const char *type, ...)
fprintf(out, "H5D_MPIO_MULTI_CHUNK");
break;
- case H5D_MPIO_MULTI_CHUNK_NO_OPT:
- fprintf(out, "H5D_MPIO_MULTI_CHUNK_NO_OPT");
- break;
-
default:
fprintf(out, "%ld", (long)chunk_opt_mode);
break;
diff --git a/src/Makefile.in b/src/Makefile.in
index c673bcf..fc89be5 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -522,7 +522,7 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog
# Add libtool shared library version numbers to the HDF5 library
# See libtool versioning documentation online.
LT_VERS_INTERFACE = 6
-LT_VERS_REVISION = 122
+LT_VERS_REVISION = 126
LT_VERS_AGE = 0
H5detect_CFLAGS = -g $(AM_CFLAGS)
diff --git a/testpar/t_coll_chunk.c b/testpar/t_coll_chunk.c
index 61e7bfd..73e7f09 100644
--- a/testpar/t_coll_chunk.c
+++ b/testpar/t_coll_chunk.c
@@ -258,8 +258,10 @@ coll_chunk5(void)
/*-------------------------------------------------------------------------
* Function: coll_chunk6
*
- * Purpose: Wrapper to test the collective chunk IO for regular JOINT
- selection with at least number of 2*mpi_size chunks
+ * Purpose: Test direct request for multi-chunk-io.
+ * Wrapper to test the collective chunk IO for regular JOINT
+ * selection with at least number of 2*mpi_size chunks
+ * Test for direct to Multi Chunk I/O.
*
* Return: Success: 0
*
@@ -489,6 +491,12 @@ coll_chunk10(void)
*
* Failure: -1
*
+ * Modifications:
+ * Remove invalid temporary property checkings for API_LINK_HARD and
+ * API_LINK_TRUE cases.
+ * Programmer: Jonathan Kim
+ * Date: 2012-10-10
+ *
* Programmer: Unknown
* July 12th, 2004
*
@@ -634,11 +642,6 @@ coll_chunktest(const char* filename,
NULL, NULL, NULL, NULL, NULL, NULL);
VRFY((status >= 0),"testing property list inserted succeeded");
- prop_value = H5D_XFER_COLL_CHUNK_FIX;
- status = H5Pinsert2(xfer_plist, H5D_XFER_COLL_CHUNK_LINK_TO_MULTI, H5D_XFER_COLL_CHUNK_SIZE, &prop_value,
- NULL, NULL, NULL, NULL, NULL, NULL);
- VRFY((status >= 0),"testing property list inserted succeeded");
-
break;
case API_MULTI_HARD:
@@ -654,11 +657,6 @@ coll_chunktest(const char* filename,
NULL, NULL, NULL, NULL, NULL, NULL);
VRFY((status >= 0),"testing property list inserted succeeded");
- prop_value = H5D_XFER_COLL_CHUNK_FIX;
- status = H5Pinsert2(xfer_plist, H5D_XFER_COLL_CHUNK_LINK_TO_MULTI_OPT, H5D_XFER_COLL_CHUNK_SIZE, &prop_value,
- NULL, NULL, NULL, NULL, NULL, NULL);
- VRFY((status >= 0),"testing property list inserted succeeded");
-
break;
case API_LINK_FALSE:
@@ -699,25 +697,17 @@ coll_chunktest(const char* filename,
case API_LINK_HARD:
status = H5Pget(xfer_plist,H5D_XFER_COLL_CHUNK_LINK_HARD_NAME,&prop_value);
VRFY((status >= 0),"testing property list get succeeded");
- if(prop_value !=0){/*double check if the option is switched to multiple chunk internally.*/
- status = H5Pget(xfer_plist,H5D_XFER_COLL_CHUNK_LINK_TO_MULTI, &prop_value);
- VRFY((status >= 0),"testing property list get succeeded");
- VRFY((prop_value == 1),"API to set LINK COLLECTIVE IO without optimization succeeded");
- }
+ VRFY((prop_value == 0),"API to set LINK COLLECTIVE IO directly succeeded");
break;
case API_MULTI_HARD:
status = H5Pget(xfer_plist,H5D_XFER_COLL_CHUNK_MULTI_HARD_NAME,&prop_value);
VRFY((status >= 0),"testing property list get succeeded");
- VRFY((prop_value == 0),"API to set MULTI-CHUNK COLLECTIVE IO without optimization succeeded");
+ VRFY((prop_value == 0),"API to set MULTI-CHUNK COLLECTIVE IO optimization succeeded");
break;
case API_LINK_TRUE:
status = H5Pget(xfer_plist,H5D_XFER_COLL_CHUNK_LINK_NUM_TRUE_NAME,&prop_value);
VRFY((status >= 0),"testing property list get succeeded");
- if(prop_value !=0){/*double check if the option is switched to multiple chunk internally.*/
- status = H5Pget(xfer_plist,H5D_XFER_COLL_CHUNK_LINK_TO_MULTI_OPT, &prop_value);
- VRFY((status >= 0),"testing property list get succeeded");
- VRFY((prop_value == 1),"API to set LINK COLLECTIVE IO without optimization succeeded");
- }
+ VRFY((prop_value == 0),"API to set LINK COLLECTIVE IO succeeded");
break;
case API_LINK_FALSE:
status = H5Pget(xfer_plist,H5D_XFER_COLL_CHUNK_LINK_NUM_FALSE_NAME,&prop_value);
diff --git a/testpar/t_dset.c b/testpar/t_dset.c
index 22eefbc..79a5555 100644
--- a/testpar/t_dset.c
+++ b/testpar/t_dset.c
@@ -2523,12 +2523,12 @@ none_selection_chunk(void)
* H5D_mpi_chunk_collective_io, processes disagree. The root reports
* collective, the rest report independent I/O
*
- * TEST_ACTUAL_IO_MULTI_CHUNK_NO_OPT_COL:
- * H5D_mpi_chunk_collective_io_no_opt, each process reports collective I/O
- *
- * TEST_ACTUAL_IO_MULTI_CHUNK_NO_OPT_MIX_DISAGREE:
- * H5D_mpi_chunk_collective_io_no_opt, processes disagree
- * (collective and mixed I/O)
+ * TEST_ACTUAL_IO_DIRECT_MULTI_CHUNK_IND:
+ * Same test TEST_ACTUAL_IO_MULTI_CHUNK_IND.
+ * Set directly go to multi-chunk-io without num threshold calc.
+ * TEST_ACTUAL_IO_DIRECT_MULTI_CHUNK_COL:
+ * Same test TEST_ACTUAL_IO_MULTI_CHUNK_COL.
+ * Set directly go to multi-chunk-io without num threshold calc.
*
* TEST_ACTUAL_IO_LINK_CHUNK:
* H5D_link_chunk_collective_io, processes report linked chunk I/O
@@ -2547,10 +2547,17 @@ none_selection_chunk(void)
* (The most complex case that works on all builds) and then performs
* an independent read and write with the same dxpls.
*
- * It may seem like TEST_ACTUAL_IO_MULTI_CHUNK_NO_OPT_IND and
- * TEST_ACTUAL_IO_MULTI_CHUNK_NO_OPT_MIX have been accidentally
- * left out. This is intentional; the other test cases sufficiently
- * cover all cases for Multi Chunk No Opt I/O.
+ * Note: DIRECT_MULTI_CHUNK_MIX and DIRECT_MULTI_CHUNK_MIX_DISAGREE
+ * is not needed as they are covered by DIRECT_CHUNK_MIX and
+ * MULTI_CHUNK_MIX_DISAGREE cases. _DIRECT_ cases are only for testing
+ * path way to multi-chunk-io by H5FD_MPIO_CHUNK_MULTI_IO insted of num-threshold.
+ *
+ * Modification:
+ * - Refctore to remove multi-chunk-without-opimization test and update for
+ * testing direct to multi-chunk-io
+ * Programmer: Jonathan Kim
+ * Date: 2012-10-10
+ *
*
* Programmer: Jacob Gruber
* Date: 2011-04-06
@@ -2565,8 +2572,8 @@ test_actual_io_mode(int selection_mode) {
H5D_mpio_actual_io_mode_t actual_io_mode_expected = -1;
const char * filename;
const char * test_name;
- hbool_t multi_chunk_no_opt;
- hbool_t multi_chunk_with_opt;
+ hbool_t direct_multi_chunk_io;
+ hbool_t multi_chunk_io;
hbool_t is_chunked;
hbool_t is_collective;
int mpi_size = -1;
@@ -2593,18 +2600,18 @@ test_actual_io_mode(int selection_mode) {
hsize_t count[RANK];
hsize_t block[RANK];
hbool_t use_gpfs = FALSE;
+ char message[256];
herr_t ret;
/* Set up some flags to make some future if statements slightly more readable */
- multi_chunk_no_opt = (
- selection_mode == TEST_ACTUAL_IO_MULTI_CHUNK_NO_OPT_IND ||
- selection_mode == TEST_ACTUAL_IO_MULTI_CHUNK_NO_OPT_COL ||
- selection_mode == TEST_ACTUAL_IO_MULTI_CHUNK_NO_OPT_MIX_DISAGREE );
+ direct_multi_chunk_io = (
+ selection_mode == TEST_ACTUAL_IO_DIRECT_MULTI_CHUNK_IND ||
+ selection_mode == TEST_ACTUAL_IO_DIRECT_MULTI_CHUNK_COL );
/* Note: RESET performs the same tests as MULTI_CHUNK_MIX_DISAGREE and then
* tests independent I/O
*/
- multi_chunk_with_opt = (
+ multi_chunk_io = (
selection_mode == TEST_ACTUAL_IO_MULTI_CHUNK_IND ||
selection_mode == TEST_ACTUAL_IO_MULTI_CHUNK_COL ||
selection_mode == TEST_ACTUAL_IO_MULTI_CHUNK_MIX ||
@@ -2673,6 +2680,7 @@ test_actual_io_mode(int selection_mode) {
/* Independent I/O with optimization */
case TEST_ACTUAL_IO_MULTI_CHUNK_IND:
+ case TEST_ACTUAL_IO_DIRECT_MULTI_CHUNK_IND:
/* Since the dataset is chunked by row and each process selects a row,
* each process writes to a different chunk. This forces all I/O to be
* independent.
@@ -2686,6 +2694,7 @@ test_actual_io_mode(int selection_mode) {
/* Collective I/O with optimization */
case TEST_ACTUAL_IO_MULTI_CHUNK_COL:
+ case TEST_ACTUAL_IO_DIRECT_MULTI_CHUNK_COL:
/* The dataset is chunked by rows, so each process takes a column which
* spans all chunks. Since the processes write non-overlapping regular
* selections to each chunk, the operation is purely collective.
@@ -2779,39 +2788,6 @@ test_actual_io_mode(int selection_mode) {
break;
- /* Collective I/O without optimization */
- case TEST_ACTUAL_IO_MULTI_CHUNK_NO_OPT_COL:
- /* The dataset is chunked by rows, so when each process takes a column, its
- * selection spans all chunks. Since no process writes more chunks than any
- * other, colective I/O is never broken. */
- slab_set(mpi_rank, mpi_size, start, count, stride, block, BYCOL);
-
- test_name = "Multi Chunk No Opt - Collective";
- actual_chunk_opt_mode_expected = H5D_MPIO_MULTI_CHUNK_NO_OPT;
- actual_io_mode_expected = H5D_MPIO_CHUNK_COLLECTIVE;
- break;
-
-
- /* Mixed I/O without optimization with disagreement */
- case TEST_ACTUAL_IO_MULTI_CHUNK_NO_OPT_MIX_DISAGREE:
- /* Each process takes a column, but the root's column is shortened so that
- * it only reads the first chunk. Since all the other processes are writing
- * to more chunks, they will break collective after the first chunk.
- */
- slab_set(mpi_rank, mpi_size, start, count, stride, block, BYCOL);
- if(mpi_rank == 0)
- block[0] = block[0] / mpi_size;
-
- test_name = "Multi Chunk No Opt - Mixed (Disagreement)";
- actual_chunk_opt_mode_expected = H5D_MPIO_MULTI_CHUNK_NO_OPT;
-
- if(mpi_rank == 0)
- actual_io_mode_expected = H5D_MPIO_CHUNK_COLLECTIVE;
- else
- actual_io_mode_expected = H5D_MPIO_CHUNK_MIXED;
-
- break;
-
/* Linked Chunk I/O */
case TEST_ACTUAL_IO_LINK_CHUNK:
/* Nothing special; link chunk I/O is forced in the dxpl settings. */
@@ -2887,20 +2863,25 @@ test_actual_io_mode(int selection_mode) {
ret = H5Pset_dxpl_mpio(dxpl_write, H5FD_MPIO_COLLECTIVE);
VRFY((ret >= 0), "H5Pset_dxpl_mpio succeeded");
- /* Set the threshold number of processes per chunk for link chunk I/O
- * to twice mpi_size. This will prevent the threshold from ever being
- * met, thus forcing multi chunk io instead of link chunk io.
+ /* Set the threshold number of processes per chunk to twice mpi_size.
+ * This will prevent the threshold from ever being met, thus forcing
+ * multi chunk io instead of link chunk io.
+ * This is via deault.
*/
- if(multi_chunk_with_opt) {
+ if(multi_chunk_io) {
+ /* force multi-chunk-io by threshold */
ret = H5Pset_dxpl_mpio_chunk_opt_num(dxpl_write, (unsigned) mpi_size*2);
VRFY((ret >= 0), "H5Pset_dxpl_mpio_chunk_opt_num succeeded");
+ /* set this to manipulate testing senario about allocating processes
+ * to chunks */
ret = H5Pset_dxpl_mpio_chunk_opt_ratio(dxpl_write, (unsigned) 99);
VRFY((ret >= 0), "H5Pset_dxpl_mpio_chunk_opt_ratio succeeded");
}
- /* Request multi chunk I/O without optimization */
- if(multi_chunk_no_opt) {
+ /* Set directly go to multi-chunk-io without threshold calc. */
+ if(direct_multi_chunk_io) {
+ /* set for multi chunk io by property*/
ret = H5Pset_dxpl_mpio_chunk_opt(dxpl_write, H5FD_MPIO_CHUNK_MULTI_IO);
VRFY((ret >= 0), "H5Pset_dxpl_mpio succeeded");
}
@@ -2943,7 +2924,6 @@ test_actual_io_mode(int selection_mode) {
/* Test values */
if(actual_chunk_opt_mode_expected != (unsigned) -1 && actual_io_mode_expected != (unsigned) -1) {
- char message[100];
sprintf(message, "Actual Chunk Opt Mode has the correct value for %s.\n",test_name);
VRFY((actual_chunk_opt_mode_write == actual_chunk_opt_mode_expected), message);
sprintf(message, "Actual IO Mode has the correct value for %s.\n",test_name);
@@ -3027,6 +3007,9 @@ actual_io_mode_tests(void) {
test_actual_io_mode(TEST_ACTUAL_IO_NO_COLLECTIVE);
+ /*
+ * Test multi-chunk-io via proc_num threshold
+ */
test_actual_io_mode(TEST_ACTUAL_IO_MULTI_CHUNK_IND);
test_actual_io_mode(TEST_ACTUAL_IO_MULTI_CHUNK_COL);
@@ -3038,8 +3021,11 @@ actual_io_mode_tests(void) {
test_actual_io_mode(TEST_ACTUAL_IO_MULTI_CHUNK_MIX_DISAGREE);
- test_actual_io_mode(TEST_ACTUAL_IO_MULTI_CHUNK_NO_OPT_COL);
- test_actual_io_mode(TEST_ACTUAL_IO_MULTI_CHUNK_NO_OPT_MIX_DISAGREE);
+ /*
+ * Test multi-chunk-io via setting direct property
+ */
+ test_actual_io_mode(TEST_ACTUAL_IO_DIRECT_MULTI_CHUNK_IND);
+ test_actual_io_mode(TEST_ACTUAL_IO_DIRECT_MULTI_CHUNK_COL);
test_actual_io_mode(TEST_ACTUAL_IO_LINK_CHUNK);
test_actual_io_mode(TEST_ACTUAL_IO_CONTIGUOUS);
diff --git a/testpar/testphdf5.c b/testpar/testphdf5.c
index 97a377e..784892a 100644
--- a/testpar/testphdf5.c
+++ b/testpar/testphdf5.c
@@ -440,7 +440,7 @@ int main(int argc, char **argv)
"linked chunk collective IO without optimization",PARATESTFILE);
AddTest((mpi_size < 3)? "-cchunk6" : "cchunk6",
coll_chunk6,NULL,
- "multi-chunk collective IO without optimization",PARATESTFILE);
+ "multi-chunk collective IO with direct request",PARATESTFILE);
AddTest((mpi_size < 3)? "-cchunk7" : "cchunk7",
coll_chunk7,NULL,
"linked chunk collective IO with optimization",PARATESTFILE);
diff --git a/testpar/testphdf5.h b/testpar/testphdf5.h
index 2219dc9..fa83697 100644
--- a/testpar/testphdf5.h
+++ b/testpar/testphdf5.h
@@ -169,11 +169,10 @@ enum H5TEST_COLL_CHUNK_API {API_NONE=0,API_LINK_HARD,
#define TEST_ACTUAL_IO_MULTI_CHUNK_COL 3
#define TEST_ACTUAL_IO_MULTI_CHUNK_MIX 4
#define TEST_ACTUAL_IO_MULTI_CHUNK_MIX_DISAGREE 5
-#define TEST_ACTUAL_IO_MULTI_CHUNK_NO_OPT_IND 6
-#define TEST_ACTUAL_IO_MULTI_CHUNK_NO_OPT_COL 7
-#define TEST_ACTUAL_IO_MULTI_CHUNK_NO_OPT_MIX_DISAGREE 8
-#define TEST_ACTUAL_IO_LINK_CHUNK 9
-#define TEST_ACTUAL_IO_CONTIGUOUS 10
+#define TEST_ACTUAL_IO_DIRECT_MULTI_CHUNK_IND 6
+#define TEST_ACTUAL_IO_DIRECT_MULTI_CHUNK_COL 7
+#define TEST_ACTUAL_IO_LINK_CHUNK 8
+#define TEST_ACTUAL_IO_CONTIGUOUS 9
/* Definitions of the selection mode for the no_collective_cause_tests function. */
#define TEST_COLLECTIVE 0x001
diff --git a/tools/h5dump/CMakeLists.txt b/tools/h5dump/CMakeLists.txt
index 8766eb6..c3d3e1b 100644
--- a/tools/h5dump/CMakeLists.txt
+++ b/tools/h5dump/CMakeLists.txt
@@ -161,6 +161,7 @@ IF (BUILD_TESTING)
${HDF5_TOOLS_SRC_DIR}/testfiles/tsaf.ddl
${HDF5_TOOLS_SRC_DIR}/testfiles/tscalarintsize.ddl
${HDF5_TOOLS_SRC_DIR}/testfiles/tscalarattrintsize.ddl
+ ${HDF5_TOOLS_SRC_DIR}/testfiles/tscalarstring.ddl
${HDF5_TOOLS_SRC_DIR}/testfiles/tscaleoffset.ddl
${HDF5_TOOLS_SRC_DIR}/testfiles/tshuffle.ddl
${HDF5_TOOLS_SRC_DIR}/testfiles/tslink-1.ddl
@@ -264,6 +265,7 @@ IF (BUILD_TESTING)
${HDF5_TOOLS_SRC_DIR}/testfiles/tsaf.h5
${HDF5_TOOLS_SRC_DIR}/testfiles/tscalarintsize.h5
${HDF5_TOOLS_SRC_DIR}/testfiles/tscalarattrintsize.h5
+ ${HDF5_TOOLS_SRC_DIR}/testfiles/tscalarstring.h5
${HDF5_TOOLS_SRC_DIR}/testfiles/tslink.h5
${HDF5_TOOLS_SRC_DIR}/testfiles/tsplit_file-m.h5
${HDF5_TOOLS_SRC_DIR}/testfiles/tsplit_file-r.h5
@@ -1024,6 +1026,8 @@ IF (BUILD_TESTING)
tscalarintsize.out.err
tscalarattrintsize.out
tscalarattrintsize.out.err
+ tscalarstring.out
+ tscalarstring.out.err
tscaleoffset.out
tscaleoffset.out.err
tshuffle.out
@@ -1088,15 +1092,15 @@ IF (BUILD_TESTING)
# test for compound signed/unsigned datasets
ADD_H5_TEST (tcmpdintsize 0 --enable-error-stack tcmpdintsize.h5)
# test for signed/unsigned scalar datasets
- # TODO: failed on mac with intel compiler. (Allen will work on it)
- #ADD_H5_TEST (tscalarintsize 0 --enable-error-stack tscalarintsize.h5)
+ ADD_H5_TEST (tscalarintsize 0 --enable-error-stack tscalarintsize.h5)
# test for signed/unsigned attributes
ADD_H5_TEST (tattrintsize 0 --enable-error-stack tattrintsize.h5)
# test for compound signed/unsigned attributes
ADD_H5_TEST (tcmpdattrintsize 0 --enable-error-stack tcmpdattrintsize.h5)
# test for signed/unsigned scalar attributes
- # TODO: failed on mac with intel compiler. (Allen will work on it)
- #ADD_H5_TEST (tscalarattrintsize 0 --enable-error-stack tscalarattrintsize.h5)
+ ADD_H5_TEST (tscalarattrintsize 0 --enable-error-stack tscalarattrintsize.h5)
+ # test for string scalar dataset and attribute
+ ADD_H5_TEST (tscalarstring 0 --enable-error-stack tscalarstring.h5)
# test for displaying groups
ADD_H5_TEST (tgroup-1 0 --enable-error-stack tgroup.h5)
# test for displaying the selected groups
diff --git a/tools/h5dump/h5dumpgentest.c b/tools/h5dump/h5dumpgentest.c
index 1bbb9f9..ac74637 100644
--- a/tools/h5dump/h5dumpgentest.c
+++ b/tools/h5dump/h5dumpgentest.c
@@ -104,6 +104,7 @@
#define FILE72 "tnestedcmpddt.h5"
#define FILE73 "tscalarintsize.h5"
#define FILE74 "tscalarattrintsize.h5"
+#define FILE75 "tscalarstring.h5"
/*-------------------------------------------------------------------------
* prototypes
@@ -8118,7 +8119,7 @@ static void gent_nested_compound_dt(void) { /* test nested data type */
/*-------------------------------------------------------------------------
* Function: gent_intscalars
*
- * Purpose: Generate a file to be used in the h5dump tests.
+ * Purpose: Generate a file to be used in the h5dump scalar tests.
* Four datasets of 1, 2, 4 and 8 bytes of unsigned int types are created.
* Four more datasets of 1, 2, 4 and 8 bytes of signed int types are created.
* Fill them with raw data such that no bit will be all zero in a dataset.
@@ -8313,9 +8314,9 @@ gent_intscalars(void)
}
/*-------------------------------------------------------------------------
- * Function: gent_attr_packedbits
+ * Function: gent_attr_intscalars
*
- * Purpose: Generate a file to be used in the h5dump packed bits tests.
+ * Purpose: Generate a file to be used in the h5dump attribute scalar tests.
* Four attributes of 1, 2, 4 and 8 bytes of unsigned int types are created.
* Four more datasets of 1, 2, 4 and 8 bytes of signed int types are created.
* Fill them with raw data such that no bit will be all zero in a dataset.
@@ -8514,6 +8515,58 @@ gent_attr_intscalars(void)
}
/*-------------------------------------------------------------------------
+ * Function: gent_string_scalars
+ *
+ * Purpose: Generate a file to be used in the h5dump string scalar tests.
+ * A dataset of string types are created.
+ * An attribute of string types are created.
+ * Fill them with raw data such that no bit will be all zero in a dataset.
+ *-------------------------------------------------------------------------
+ */
+static void
+gent_string_scalars(void)
+{
+ hid_t fid, attr, dataset, space, tid, root;
+ hsize_t dims[2];
+ char string[F73_XDIM][F73_YDIM8];
+ unsigned int i, j;
+
+ fid = H5Fcreate(FILE75, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+ root = H5Gopen2(fid, "/", H5P_DEFAULT);
+
+ /* string scalar */
+ dims[0] = F73_XDIM; dims[1] = F73_YDIM8;
+ space = H5Screate(H5S_SCALAR);
+ tid = H5Tcopy(H5T_C_S1);
+ H5Tset_size(tid, F73_XDIM * F73_YDIM8);
+
+ memset(string, ' ', F73_XDIM * F73_YDIM8);
+ for(i = 0; i < dims[0]; i++) {
+ string[i][0] = 'A' + i;
+ for(j = 1; j < dims[1]; j++) {
+ string[i][j] = string[i][j-1] + 1;
+ }
+ }
+ string[dims[0]-1][dims[1]-1] = 0;
+
+ /* Dataset of string scalar */
+ dataset = H5Dcreate2(fid, "the_str", tid, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+
+ H5Dwrite(dataset, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, string);
+ H5Dclose(dataset);
+
+ /* attribute of string scalar */
+ attr = H5Acreate2(root, "attr_str", tid, space, H5P_DEFAULT, H5P_DEFAULT);
+ H5Awrite(attr, tid, string);
+
+ H5Sclose(space);
+ H5Aclose(attr);
+
+ H5Gclose(root);
+ H5Fclose(fid);
+}
+
+/*-------------------------------------------------------------------------
* Function: main
*
*-------------------------------------------------------------------------
@@ -8597,6 +8650,7 @@ int main(void)
gent_nested_compound_dt();
gent_intscalars();
gent_attr_intscalars();
+ gent_string_scalars();
return 0;
}
diff --git a/tools/h5dump/testh5dump.sh.in b/tools/h5dump/testh5dump.sh.in
index c90c364..8a2483b 100644
--- a/tools/h5dump/testh5dump.sh.in
+++ b/tools/h5dump/testh5dump.sh.in
@@ -145,6 +145,7 @@ $SRC_H5DUMP_TESTFILES/tordergr.h5
$SRC_H5DUMP_TESTFILES/tsaf.h5
$SRC_H5DUMP_TESTFILES/tscalarintsize.h5
$SRC_H5DUMP_TESTFILES/tscalarattrintsize.h5
+$SRC_H5DUMP_TESTFILES/tscalarstring.h5
$SRC_H5DUMP_TESTFILES/tslink.h5
$SRC_H5DUMP_TESTFILES/tsplit_file-m.h5
$SRC_H5DUMP_TESTFILES/tsplit_file-r.h5
@@ -281,6 +282,7 @@ $SRC_H5DUMP_TESTFILES/treference.ddl
$SRC_H5DUMP_TESTFILES/tsaf.ddl
$SRC_H5DUMP_TESTFILES/tscalarintsize.ddl
$SRC_H5DUMP_TESTFILES/tscalarattrintsize.ddl
+$SRC_H5DUMP_TESTFILES/tscalarstring.ddl
$SRC_H5DUMP_TESTFILES/tscaleoffset.ddl
$SRC_H5DUMP_TESTFILES/tshuffle.ddl
$SRC_H5DUMP_TESTFILES/tslink-1.ddl
@@ -690,6 +692,8 @@ TOOLTEST tattrintsize.ddl --enable-error-stack tattrintsize.h5
TOOLTEST tcmpdattrintsize.ddl --enable-error-stack tcmpdattrintsize.h5
# test for signed/unsigned scalar attributes
TOOLTEST tscalarattrintsize.ddl --enable-error-stack tscalarattrintsize.h5
+# test for string scalar dataset attribute
+TOOLTEST tscalarstring.ddl --enable-error-stack tscalarstring.h5
# test for displaying groups
TOOLTEST tgroup-1.ddl --enable-error-stack tgroup.h5
# test for displaying the selected groups
diff --git a/tools/h5stat/testh5stat.sh.in b/tools/h5stat/testh5stat.sh.in
index 74071d0..ab97698 100644
--- a/tools/h5stat/testh5stat.sh.in
+++ b/tools/h5stat/testh5stat.sh.in
@@ -133,6 +133,9 @@ TESTING() {
echo "Testing $* $SPACES" | cut -c1-70 | tr -d '\012'
}
+# Source in the output filter function definitions.
+. $srcdir/../../bin/output_filter.sh
+
# Run a test and print PASS or *FAIL*. If a test fails then increment
# the `nerrors' global variable and (if $verbose is set) display the
# difference between the actual output and the expected output. The
@@ -145,6 +148,8 @@ TOOLTEST() {
expect="$TESTDIR/$1"
actual="$TESTDIR/`basename $1 .ddl`.out"
actual_err="$TESTDIR/`basename $1 .ddl`.err"
+ actual_sav=${actual}-sav
+ actual_err_sav=${actual_err}-sav
shift
# Run test.
@@ -156,8 +161,13 @@ TOOLTEST() {
cd $TESTDIR
$RUNSERIAL $STAT_BIN $@
) >$actual 2>$actual_err
- cat $actual_err >> $actual
+ # save actual and actual_err in case they are needed later.
+ cp $actual $actual_sav
+ STDOUT_FILTER $actual
+ cp $actual_err $actual_err_sav
+ STDERR_FILTER $actual_err
+ cat $actual_err >> $actual
if [ ! -f $expect ]; then
# Create the expect file if it doesn't yet exist.
@@ -174,7 +184,7 @@ TOOLTEST() {
# Clean up output file
if test -z "$HDF5_NOCLEANUP"; then
- rm -f $actual $actual_err
+ rm -f $actual $actual_err $actual_sav $actual_err_sav
fi
}
diff --git a/tools/lib/h5tools_dump.c b/tools/lib/h5tools_dump.c
index c2add9a..c68c699 100644
--- a/tools/lib/h5tools_dump.c
+++ b/tools/lib/h5tools_dump.c
@@ -30,10 +30,6 @@
#include "h5tools_utils.h"
#include "H5private.h"
-#define SANITY_CHECK
-
-#define ALIGN(A,Z) ((((A) + (Z) - 1) / (Z)) * (Z))
-
h5tool_format_t h5tools_dataformat = {
0, /*raw */
@@ -214,6 +210,12 @@ hbool_t h5tools_dump_region_data_blocks(hid_t region_space, hid_t region_id,
hsize_t *curr_pos/*total data element position*/,
size_t ncols, hsize_t region_elmt_counter/*element counter*/,
hsize_t elmt_counter);
+
+void h5tools_print_dims(h5tools_str_t *buffer, hsize_t *s, int dims);
+
+void h5tools_dump_subsetting_header(FILE *stream, const h5tool_format_t *info,
+ h5tools_context_t *ctx, struct subset_t *sset, int dims);
+
void
h5tools_dump_init(void)
{
@@ -627,7 +629,11 @@ h5tools_dump_region_data_blocks(hid_t region_space, hid_t region_id,
alloc_size = nblocks * ndims * 2 * sizeof(ptdata[0]);
HDassert(alloc_size == (hsize_t) ((size_t) alloc_size)); /*check for overflow*/
if((ptdata = (hsize_t*) HDmalloc((size_t) alloc_size)) == NULL)
- HGOTO_ERROR(dimension_break, H5E_tools_min_id_g, "Could not allocate buffer for ptdata");
+{
+ HERROR(H5E_tools_g, H5E_tools_min_id_g, "Could not allocate buffer for ptdata");
+ HGOTO_DONE(dimension_break);
+ //HGOTO_ERROR(dimension_break, H5E_tools_min_id_g, "Could not allocate buffer for ptdata");
+}
H5_CHECK_OVERFLOW(nblocks, hssize_t, hsize_t);
if(H5Sget_select_hyper_blocklist(region_space, (hsize_t) 0, (hsize_t) nblocks, ptdata) < 0)
@@ -688,7 +694,7 @@ h5tools_dump_region_data_blocks(hid_t region_space, hid_t region_id,
h5tools_str_reset(buffer);
h5tools_str_append(buffer, "%s ", h5tools_dump_header_format->dataspacebegin);
- h5tools_print_dataspace(stream, buffer, info, ctx, region_space);
+ h5tools_print_dataspace(buffer, region_space);
if (HDstrlen(h5tools_dump_header_format->dataspaceblockend)) {
h5tools_str_append(buffer, "%s", h5tools_dump_header_format->dataspaceblockend);
@@ -1007,7 +1013,7 @@ h5tools_dump_region_data_points(hid_t region_space, hid_t region_id,
ctx->need_prefix = TRUE;
h5tools_str_append(buffer, "%s ", h5tools_dump_header_format->dataspacebegin);
- h5tools_print_dataspace(stream, buffer, info, ctx, region_space);
+ h5tools_print_dataspace(buffer, region_space);
if (HDstrlen(h5tools_dump_header_format->dataspaceblockend)) {
h5tools_str_append(buffer, "%s", h5tools_dump_header_format->dataspaceblockend);
@@ -2211,7 +2217,7 @@ h5tools_print_datatype(FILE *stream, h5tools_str_t *buffer, const h5tool_format_
/* Check C variable-length string first. Are the two types equal? */
if (H5Tequal(tmp_type, str_type)) {
h5tools_str_append(buffer, "H5T_C_S1;");
- goto done;
+ goto found_string_type;
}
/* Change the endianness and see if they're equal. */
@@ -2223,7 +2229,7 @@ h5tools_print_datatype(FILE *stream, h5tools_str_t *buffer, const h5tool_format_
if (H5Tequal(tmp_type, str_type)) {
h5tools_str_append(buffer, "H5T_C_S1;");
- goto done;
+ goto found_string_type;
}
/* If not equal to C variable-length string, check Fortran type. */
@@ -2238,7 +2244,7 @@ h5tools_print_datatype(FILE *stream, h5tools_str_t *buffer, const h5tool_format_
/* Are the two types equal? */
if (H5Tequal(tmp_type, str_type)) {
h5tools_str_append(buffer, "H5T_FORTRAN_S1;");
- goto done;
+ goto found_string_type;
}
/* Change the endianness and see if they're equal. */
@@ -2250,13 +2256,13 @@ h5tools_print_datatype(FILE *stream, h5tools_str_t *buffer, const h5tool_format_
if (H5Tequal(tmp_type, str_type)) {
h5tools_str_append(buffer, "H5T_FORTRAN_S1;");
- goto done;
+ goto found_string_type;
}
/* Type doesn't match any of above. */
h5tools_str_append(buffer, "unknown_one_character_type;");
- done:
+ found_string_type:
h5tools_render_element(stream, info, ctx, buffer, &curr_pos, ncols, 0, 0);
ctx->indent_level--;
@@ -2307,7 +2313,10 @@ h5tools_print_datatype(FILE *stream, h5tools_str_t *buffer, const h5tool_format_
h5tools_render_element(stream, info, ctx, buffer, &curr_pos, ncols, 0, 0);
ctx->indent_level++;
{
- char *ttag = H5Tget_tag(type);
+ char *ttag;
+
+ if(NULL == (ttag = H5Tget_tag(type)))
+ H5E_THROW(FAIL, H5E_tools_min_id_g, "H5Tget_tag failed");
ctx->need_prefix = TRUE;
h5tools_simple_prefix(stream, info, ctx, 0, 0);
@@ -2316,8 +2325,7 @@ h5tools_print_datatype(FILE *stream, h5tools_str_t *buffer, const h5tool_format_
h5tools_str_append(buffer, "OPAQUE_TAG \"%s\";", ttag);
h5tools_render_element(stream, info, ctx, buffer, &curr_pos, ncols, 0, 0);
- if (ttag)
- HDfree(ttag);
+ HDfree(ttag);
}
ctx->indent_level--;
@@ -2478,8 +2486,7 @@ CATCH
*-------------------------------------------------------------------------
*/
int
-h5tools_print_dataspace(FILE *stream, h5tools_str_t *buffer, const h5tool_format_t *info,
- h5tools_context_t *ctx, hid_t space)
+h5tools_print_dataspace(h5tools_str_t *buffer, hid_t space)
{
HERR_INIT(int, SUCCEED)
hsize_t size[H5TOOLS_DUMP_MAX_RANK];
@@ -2769,7 +2776,7 @@ h5tools_dump_dataspace(FILE *stream, const h5tool_format_t *info,
h5tools_str_append(&buffer, "%s ",
h5tools_dump_header_format->dataspacebegin);
- h5tools_print_dataspace(stream, &buffer, info, ctx, type);
+ h5tools_print_dataspace(&buffer, type);
if (HDstrlen(h5tools_dump_header_format->dataspaceblockend)) {
h5tools_str_append(&buffer, "%s", h5tools_dump_header_format->dataspaceblockend);
@@ -2841,7 +2848,6 @@ h5tools_print_fill_value(h5tools_str_t *buffer/*in,out*/, const h5tool_format_t
{
size_t size;
hid_t n_type;
- hsize_t nelmts = 1;
void *buf = NULL;
n_type = h5tools_get_native_type(type_id);
@@ -3563,7 +3569,8 @@ h5tools_print_dims(h5tools_str_t *buffer, hsize_t *s, int dims)
for (i = 0; i < dims; i++) {
h5tools_str_append(buffer, HSIZE_T_FORMAT, s[i]);
- if (i + 1 != dims) h5tools_str_append(buffer, ", ");
+ if (i + 1 != dims)
+ h5tools_str_append(buffer, ", ");
}
}
@@ -3866,7 +3873,7 @@ h5tools_dump_data(FILE *stream, const h5tool_format_t *info,
buf = HDmalloc((size_t)alloc_size);
HDassert(buf);
- if (H5Aread(obj_id, p_type, buf) >= 0)
+ if (H5Aread(obj_id, p_type, buf) >= 0) {
if (display_char && H5Tget_size(type) == 1 && H5Tget_class(type) == H5T_INTEGER) {
/*
* Print 1-byte integer data as an ASCII character string
@@ -3895,6 +3902,7 @@ h5tools_dump_data(FILE *stream, const h5tool_format_t *info,
}
else
datactx.need_prefix = TRUE;
+ }
status = h5tools_dump_mem(stream, info, &datactx, obj_id, p_type, space, buf);
if (display_char && H5Tget_size(type) == 1 && H5Tget_class(type) == H5T_INTEGER) {
diff --git a/tools/lib/h5tools_dump.h b/tools/lib/h5tools_dump.h
index 55e046b..86f9f99 100644
--- a/tools/lib/h5tools_dump.h
+++ b/tools/lib/h5tools_dump.h
@@ -67,8 +67,7 @@ H5TOOLS_DLL void h5tools_dump_data(FILE *stream, const h5tool_format_t *info,
H5TOOLS_DLL int h5tools_print_datatype(FILE *stream, h5tools_str_t *buffer/*in,out*/,
const h5tool_format_t *info, h5tools_context_t *ctx/*in,out*/,
hid_t type, int object_search);
-H5TOOLS_DLL int h5tools_print_dataspace(FILE *stream, h5tools_str_t *buffer/*in,out*/,
- const h5tool_format_t *info, h5tools_context_t *ctx/*in,out*/,
+H5TOOLS_DLL int h5tools_print_dataspace(h5tools_str_t *buffer/*in,out*/,
hid_t space);
H5TOOLS_DLL int h5tools_print_enum(FILE *stream, h5tools_str_t *buffer/*in,out*/,
const h5tool_format_t *info, h5tools_context_t *ctx/*in,out*/,
diff --git a/tools/testfiles/tscalarstring.ddl b/tools/testfiles/tscalarstring.ddl
new file mode 100644
index 0000000..4ba7093
--- /dev/null
+++ b/tools/testfiles/tscalarstring.ddl
@@ -0,0 +1,28 @@
+HDF5 "tscalarstring.h5" {
+GROUP "/" {
+ ATTRIBUTE "attr_str" {
+ DATATYPE H5T_STRING {
+ STRSIZE 64;
+ STRPAD H5T_STR_NULLTERM;
+ CSET H5T_CSET_ASCII;
+ CTYPE H5T_C_S1;
+ }
+ DATASPACE SCALAR
+ DATA {
+ (0): "ABCDEFGHBCDEFGHICDEFGHIJDEFGHIJKEFGHIJKLFGHIJKLMGHIJKLMNHIJKLMNO"
+ }
+ }
+ DATASET "the_str" {
+ DATATYPE H5T_STRING {
+ STRSIZE 64;
+ STRPAD H5T_STR_NULLTERM;
+ CSET H5T_CSET_ASCII;
+ CTYPE H5T_C_S1;
+ }
+ DATASPACE SCALAR
+ DATA {
+ (0): "ABCDEFGHBCDEFGHICDEFGHIJDEFGHIJKEFGHIJKLFGHIJKLMGHIJKLMNHIJKLMNO"
+ }
+ }
+}
+}
diff --git a/tools/testfiles/tscalarstring.h5 b/tools/testfiles/tscalarstring.h5
new file mode 100644
index 0000000..b0993ef
--- /dev/null
+++ b/tools/testfiles/tscalarstring.h5
Binary files differ
diff --git a/vms/src/h5pubconf.h b/vms/src/h5pubconf.h
index a4053df..f0d6962 100644
--- a/vms/src/h5pubconf.h
+++ b/vms/src/h5pubconf.h
@@ -502,7 +502,7 @@
#define H5_PACKAGE_NAME "HDF5"
/* Define to the full name and version of this package. */
-#define H5_PACKAGE_STRING "HDF5 1.9.132"
+#define H5_PACKAGE_STRING "HDF5 1.9.136"
/* Define to the one symbol short name of this package. */
#define H5_PACKAGE_TARNAME "hdf5"
@@ -511,7 +511,7 @@
#define H5_PACKAGE_URL ""
/* Define to the version of this package. */
-#define H5_PACKAGE_VERSION "1.9.132"
+#define H5_PACKAGE_VERSION "1.9.136"
/* Width for printf() for type `long long' or `__int64', use `ll' */
#define H5_PRINTF_LL_WIDTH "ll"
@@ -674,7 +674,7 @@
/* #undef H5_USING_MEMCHECKER */
/* Version number of package */
-#define H5_VERSION "1.9.132"
+#define H5_VERSION "1.9.136"
/* Define if vsnprintf() returns the correct value for formatted strings that
don't fit into size allowed */