diff options
43 files changed, 2004 insertions, 67 deletions
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e87b627..10b3a9c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -336,30 +336,31 @@ jobs: - name: Dump matrix context run: echo '${{ toJSON(matrix) }}' - - name: Install CMake Dependencies (Linux) - run: sudo apt-get install ninja-build doxygen graphviz - if: matrix.os == 'ubuntu-latest' - - - name: Install Autotools Dependencies (Linux, serial) + # Only CMake need ninja-build, but we just install it unilaterally + # libssl, etc. are needed for the ros3 VFD + - name: Install Linux Dependencies run: | sudo apt update - sudo apt install automake autoconf libtool libtool-bin - sudo apt install gcc-12 g++-12 gfortran-12 + sudo apt-get install ninja-build doxygen graphviz sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev + sudo apt install gcc-12 g++-12 gfortran-12 echo "CC=gcc-12" >> $GITHUB_ENV echo "CXX=g++-12" >> $GITHUB_ENV echo "FC=gfortran-12" >> $GITHUB_ENV + if: matrix.os == 'ubuntu-latest' + + # CMake gets libaec from fetchcontent + - name: Install Autotools Dependencies (Linux) + run: | + sudo apt install automake autoconf libtool libtool-bin sudo apt install libaec0 libaec-dev - if: (matrix.generator == 'autogen') && (matrix.parallel != 'enable') + if: (matrix.generator == 'autogen') - name: Install Autotools Dependencies (Linux, parallel) run: | - sudo apt update - sudo apt install automake autoconf libtool libtool-bin sudo apt install openmpi-bin openmpi-common mpi-default-dev echo "CC=mpicc" >> $GITHUB_ENV echo "FC=mpif90" >> $GITHUB_ENV - sudo apt install libaec0 libaec-dev if: (matrix.generator == 'autogen') && (matrix.parallel == 'enable') - name: Install Dependencies (Windows) @@ -390,7 +391,19 @@ jobs: sh ./autogen.sh mkdir "${{ runner.workspace }}/build" cd "${{ runner.workspace }}/build" - ${{ matrix.flags }} $GITHUB_WORKSPACE/configure --enable-build-mode=${{ matrix.build_mode.autotools }} --${{ matrix.deprec_sym }}-deprecated-symbols --with-default-api-version=${{ matrix.default_api }} --enable-shared --${{ matrix.parallel }}-parallel --${{ matrix.cpp }}-cxx --${{ matrix.fortran }}-fortran --${{ matrix.java }}-java --${{ matrix.mirror_vfd }}-mirror-vfd --${{ matrix.direct_vfd }}-direct-vfd --${{ matrix.ros3_vfd }}-ros3-vfd --with-szlib=${{ matrix.szip }} + ${{ matrix.flags }} $GITHUB_WORKSPACE/configure \ + --enable-build-mode=${{ matrix.build_mode.autotools }} \ + --${{ matrix.deprec_sym }}-deprecated-symbols \ + --with-default-api-version=${{ matrix.default_api }} \ + --enable-shared \ + --${{ matrix.parallel }}-parallel \ + --${{ matrix.cpp }}-cxx \ + --${{ matrix.fortran }}-fortran \ + --${{ matrix.java }}-java \ + --${{ matrix.mirror_vfd }}-mirror-vfd \ + --${{ matrix.direct_vfd }}-direct-vfd \ + --${{ matrix.ros3_vfd }}-ros3-vfd \ + --with-szlib=${{ matrix.szip }} shell: bash if: (matrix.generator == 'autogen') && ! (matrix.thread_safety.enabled) @@ -399,7 +412,15 @@ jobs: sh ./autogen.sh mkdir "${{ runner.workspace }}/build" cd "${{ runner.workspace }}/build" - ${{ matrix.flags }} $GITHUB_WORKSPACE/configure --enable-build-mode=${{ matrix.build_mode.autotools }} --enable-shared --enable-threadsafe --disable-hl --${{ matrix.mirror_vfd }}-mirror-vfd --${{ matrix.direct_vfd }}-direct-vfd --${{ matrix.ros3_vfd }}-ros3-vfd --with-szlib=${{ matrix.szip }} + ${{ matrix.flags }} $GITHUB_WORKSPACE/configure \ + --enable-build-mode=${{ matrix.build_mode.autotools }} \ + --enable-shared \ + --enable-threadsafe \ + --disable-hl \ + --${{ matrix.mirror_vfd }}-mirror-vfd \ + --${{ matrix.direct_vfd }}-direct-vfd \ + --${{ matrix.ros3_vfd }}-ros3-vfd \ + --with-szlib=${{ matrix.szip }} shell: bash if: (matrix.generator == 'autogen') && (matrix.thread_safety.enabled) @@ -411,7 +432,25 @@ jobs: run: | mkdir "${{ runner.workspace }}/build" cd "${{ runner.workspace }}/build" - cmake -C $GITHUB_WORKSPACE/config/cmake/cacheinit.cmake ${{ matrix.generator }} -DCMAKE_BUILD_TYPE=${{ matrix.build_mode.cmake }} -DCMAKE_TOOLCHAIN_FILE=${{ matrix.toolchain }} -DBUILD_SHARED_LIBS=ON -DHDF5_ENABLE_ALL_WARNINGS=ON -DHDF5_ENABLE_PARALLEL:BOOL=${{ matrix.parallel }} -DHDF5_BUILD_CPP_LIB:BOOL=${{ matrix.cpp }} -DHDF5_BUILD_FORTRAN=${{ matrix.fortran }} -DHDF5_BUILD_JAVA=${{ matrix.java }} -DHDF5_BUILD_DOC=${{ matrix.docs }} -DBUILD_SZIP_WITH_FETCHCONTENT=${{ matrix.libaecfc }} -DLIBAEC_USE_LOCALCONTENT=${{ matrix.localaec }} -DBUILD_ZLIB_WITH_FETCHCONTENT=${{ matrix.zlibfc }} -DZLIB_USE_LOCALCONTENT=${{ matrix.localzlib }} -DHDF5_ENABLE_MIRROR_VFD:BOOL=${{ matrix.mirror_vfd }} -DHDF5_ENABLE_DIRECT_VFD:BOOL=${{ matrix.direct_vfd }} -DHDF5_ENABLE_ROS3_VFD:BOOL=${{ matrix.ros3_vfd }} $GITHUB_WORKSPACE + cmake -C $GITHUB_WORKSPACE/config/cmake/cacheinit.cmake \ + ${{ matrix.generator }} \ + -DCMAKE_BUILD_TYPE=${{ matrix.build_mode.cmake }} \ + -DCMAKE_TOOLCHAIN_FILE=${{ matrix.toolchain }} \ + -DBUILD_SHARED_LIBS=ON \ + -DHDF5_ENABLE_ALL_WARNINGS=ON \ + -DHDF5_ENABLE_PARALLEL:BOOL=${{ matrix.parallel }} \ + -DHDF5_BUILD_CPP_LIB:BOOL=${{ matrix.cpp }} \ + -DHDF5_BUILD_FORTRAN=${{ matrix.fortran }} \ + -DHDF5_BUILD_JAVA=${{ matrix.java }} \ + -DHDF5_BUILD_DOC=${{ matrix.docs }} \ + -DBUILD_SZIP_WITH_FETCHCONTENT=${{ matrix.libaecfc }} \ + -DLIBAEC_USE_LOCALCONTENT=${{ matrix.localaec }} \ + -DBUILD_ZLIB_WITH_FETCHCONTENT=${{ matrix.zlibfc }} \ + -DZLIB_USE_LOCALCONTENT=${{ matrix.localzlib }} \ + -DHDF5_ENABLE_MIRROR_VFD:BOOL=${{ matrix.mirror_vfd }} \ + -DHDF5_ENABLE_DIRECT_VFD:BOOL=${{ matrix.direct_vfd }} \ + -DHDF5_ENABLE_ROS3_VFD:BOOL=${{ matrix.ros3_vfd }} \ + $GITHUB_WORKSPACE shell: bash if: (matrix.generator != 'autogen') && ! (matrix.thread_safety.enabled) @@ -420,7 +459,27 @@ jobs: run: | mkdir "${{ runner.workspace }}/build" cd "${{ runner.workspace }}/build" - cmake -C $GITHUB_WORKSPACE/config/cmake/cacheinit.cmake ${{ matrix.generator }} -DCMAKE_BUILD_TYPE=${{ matrix.build_mode.cmake }} -DCMAKE_TOOLCHAIN_FILE=${{ matrix.toolchain }} -DBUILD_SHARED_LIBS=ON -DHDF5_ENABLE_ALL_WARNINGS=ON -DHDF5_ENABLE_THREADSAFE:BOOL=ON -DHDF5_ENABLE_PARALLEL:BOOL=${{ matrix.parallel }} -DHDF5_BUILD_CPP_LIB:BOOL=OFF -DHDF5_BUILD_FORTRAN:BOOL=OFF -DHDF5_BUILD_JAVA:BOOL=OFF -DHDF5_BUILD_HL_LIB:BOOL=OFF -DHDF5_BUILD_DOC=OFF -DBUILD_SZIP_WITH_FETCHCONTENT=${{ matrix.libaecfc }} -DLIBAEC_USE_LOCALCONTENT=${{ matrix.localaec }} -DBUILD_ZLIB_WITH_FETCHCONTENT=${{ matrix.zlibfc }} -DZLIB_USE_LOCALCONTENT=${{ matrix.localzlib }} -DHDF5_ENABLE_MIRROR_VFD:BOOL=${{ matrix.mirror_vfd }} -DHDF5_ENABLE_DIRECT_VFD:BOOL=${{ matrix.direct_vfd }} -DHDF5_ENABLE_ROS3_VFD:BOOL=${{ matrix.ros3_vfd }} $GITHUB_WORKSPACE + cmake -C $GITHUB_WORKSPACE/config/cmake/cacheinit.cmake \ + ${{ matrix.generator }} \ + -DCMAKE_BUILD_TYPE=${{ matrix.build_mode.cmake }} \ + -DCMAKE_TOOLCHAIN_FILE=${{ matrix.toolchain }} \ + -DBUILD_SHARED_LIBS=ON \ + -DHDF5_ENABLE_ALL_WARNINGS=ON \ + -DHDF5_ENABLE_THREADSAFE:BOOL=ON \ + -DHDF5_ENABLE_PARALLEL:BOOL=${{ matrix.parallel }} \ + -DHDF5_BUILD_CPP_LIB:BOOL=OFF \ + -DHDF5_BUILD_FORTRAN:BOOL=OFF \ + -DHDF5_BUILD_JAVA:BOOL=OFF \ + -DHDF5_BUILD_HL_LIB:BOOL=OFF \ + -DHDF5_BUILD_DOC=OFF \ + -DBUILD_SZIP_WITH_FETCHCONTENT=${{ matrix.libaecfc }} \ + -DLIBAEC_USE_LOCALCONTENT=${{ matrix.localaec }} \ + -DBUILD_ZLIB_WITH_FETCHCONTENT=${{ matrix.zlibfc }} \ + -DZLIB_USE_LOCALCONTENT=${{ matrix.localzlib }} \ + -DHDF5_ENABLE_MIRROR_VFD:BOOL=${{ matrix.mirror_vfd }} \ + -DHDF5_ENABLE_DIRECT_VFD:BOOL=${{ matrix.direct_vfd }} \ + -DHDF5_ENABLE_ROS3_VFD:BOOL=${{ matrix.ros3_vfd }} \ + $GITHUB_WORKSPACE shell: bash if: (matrix.generator != 'autogen') && (matrix.thread_safety.enabled) diff --git a/.github/workflows/netcdf.yml b/.github/workflows/netcdf.yml index 0ec7541..5b1ebf2 100644 --- a/.github/workflows/netcdf.yml +++ b/.github/workflows/netcdf.yml @@ -14,6 +14,9 @@ on: - 'COPYING**' - '**.md' +permissions: + contents: read + # Using concurrency to cancel any in-progress job or run concurrency: group: ${{ github.workflow }}-${{ github.sha || github.event.pull_request.number }} diff --git a/CMakeFilters.cmake b/CMakeFilters.cmake index 200634e..3a1a0de 100644 --- a/CMakeFilters.cmake +++ b/CMakeFilters.cmake @@ -9,7 +9,7 @@ # If you do not have access to either file, you may request a copy from # help@hdfgroup.org. # -option (USE_LIBAEC "Use AEC library as SZip Filter" OFF) +option (USE_LIBAEC "Use AEC library as SZip Filter" ON) option (USE_LIBAEC_STATIC "Use static AEC library " OFF) option (ZLIB_USE_EXTERNAL "Use External Library Building for ZLIB" 0) option (SZIP_USE_EXTERNAL "Use External Library Building for SZIP" 0) diff --git a/CMakeInstallation.cmake b/CMakeInstallation.cmake index 1fb7714..3aa7981 100644 --- a/CMakeInstallation.cmake +++ b/CMakeInstallation.cmake @@ -390,7 +390,13 @@ if (NOT HDF5_EXTERNALLY_CONFIGURED AND NOT HDF5_NO_PACKAGES) set(CPACK_WIX_PROPERTY_ARPURLINFOABOUT "${HDF5_PACKAGE_URL}") set(CPACK_WIX_PROPERTY_ARPHELPLINK "${HDF5_PACKAGE_BUGREPORT}") if (BUILD_SHARED_LIBS) - set(CPACK_WIX_PATCH_FILE "${HDF_RESOURCES_DIR}/patch.xml") + if (${HDF_CFG_NAME} MATCHES "Debug" OR ${HDF_CFG_NAME} MATCHES "Developer") + set (WIX_CMP_NAME "${HDF5_LIB_NAME}${CMAKE_DEBUG_POSTFIX}") + else () + set (WIX_CMP_NAME "${HDF5_LIB_NAME}") + endif () + configure_file (${HDF_RESOURCES_DIR}/patch.xml.in ${HDF5_BINARY_DIR}/patch.xml @ONLY) + set(CPACK_WIX_PATCH_FILE "${HDF5_BINARY_DIR}/patch.xml") endif () elseif (APPLE) list (APPEND CPACK_GENERATOR "STGZ") diff --git a/config/cmake/fileCompareTest.cmake b/config/cmake/fileCompareTest.cmake index 4a8dc09..f4c46f6 100644 --- a/config/cmake/fileCompareTest.cmake +++ b/config/cmake/fileCompareTest.cmake @@ -59,7 +59,7 @@ if (TEST_STRINGS STREQUAL "YES") endif () else () if (CMAKE_VERSION VERSION_LESS "3.14.0") - message (FATAL_ERROR "CANNOT get file size, file command SIZE not supported") + message (STATUS "CANNOT get file size, file command SIZE not supported") else () file (SIZE ${TEST_FOLDER}/${TEST_ONEFILE} TEST_ONE_SIZE) file (SIZE ${TEST_FOLDER}/${TEST_TWOFILE} TEST_TWO_SIZE) @@ -74,7 +74,7 @@ else () elseif (TEST_FUNCTION MATCHES "LTEQ") if (TEST_ONE_SIZE LESS_EQUAL TEST_TWO_SIZE) if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.15.0") - message (VERBOSES "Passed: The size of ${TEST_FOLDER}/${TEST_ONEFILE} was less or equal ${TEST_FOLDER}/${TEST_TWOFILE}") + message (VERBOSE "Passed: The size of ${TEST_FOLDER}/${TEST_ONEFILE} was less or equal ${TEST_FOLDER}/${TEST_TWOFILE}") endif () else () message (FATAL_ERROR "The size of ${TEST_FOLDER}/${TEST_ONEFILE} was NOT less or equal ${TEST_FOLDER}/${TEST_TWOFILE}") diff --git a/config/cmake/hdf5-config.cmake.in b/config/cmake/hdf5-config.cmake.in index 699db89..496d260 100644 --- a/config/cmake/hdf5-config.cmake.in +++ b/config/cmake/hdf5-config.cmake.in @@ -44,6 +44,7 @@ set (${HDF5_PACKAGE_NAME}_ENABLE_PLUGIN_SUPPORT @HDF5_ENABLE_PLUGIN_SUPPORT@) set (${HDF5_PACKAGE_NAME}_ENABLE_Z_LIB_SUPPORT @HDF5_ENABLE_Z_LIB_SUPPORT@) set (${HDF5_PACKAGE_NAME}_ENABLE_SZIP_SUPPORT @HDF5_ENABLE_SZIP_SUPPORT@) set (${HDF5_PACKAGE_NAME}_ENABLE_SZIP_ENCODING @HDF5_ENABLE_SZIP_ENCODING@) +set (${HDF5_PACKAGE_NAME}_ENABLE_ROS3_VFD @HDF5_ENABLE_ROS3_VFD@) set (${HDF5_PACKAGE_NAME}_BUILD_SHARED_LIBS @H5_ENABLE_SHARED_LIB@) set (${HDF5_PACKAGE_NAME}_BUILD_STATIC_LIBS @H5_ENABLE_STATIC_LIB@) set (${HDF5_PACKAGE_NAME}_PACKAGE_EXTLIBS @HDF5_PACKAGE_EXTLIBS@) @@ -51,7 +52,8 @@ set (${HDF5_PACKAGE_NAME}_EXPORT_LIBRARIES @HDF5_LIBRARIES_TO_EXPORT@) set (${HDF5_PACKAGE_NAME}_ARCHITECTURE "@CMAKE_GENERATOR_ARCHITECTURE@") set (${HDF5_PACKAGE_NAME}_TOOLSET "@CMAKE_GENERATOR_TOOLSET@") set (${HDF5_PACKAGE_NAME}_DEFAULT_API_VERSION "@DEFAULT_API_VERSION@") -set (${HDF5_PACKAGE_NAME}_PARALLEL_FILTERED_WRITES "@PARALLEL_FILTERED_WRITES@") +set (${HDF5_PACKAGE_NAME}_PARALLEL_FILTERED_WRITES @PARALLEL_FILTERED_WRITES@) +set (${HDF5_PACKAGE_NAME}_INSTALL_MOD_FORTRAN "@HDF5_INSTALL_MOD_FORTRAN@") #----------------------------------------------------------------------------- # Dependencies @@ -67,6 +69,11 @@ if (${HDF5_PACKAGE_NAME}_ENABLE_PARALLEL) find_package(MPI QUIET REQUIRED) endif () +if (${HDF5_PACKAGE_NAME}_ENABLE_THREADSAFE) + set(THREADS_PREFER_PTHREAD_FLAG ON) + find_package(Threads QUIET REQUIRED) +endif () + if (${HDF5_PACKAGE_NAME}_BUILD_JAVA) set (${HDF5_PACKAGE_NAME}_JAVA_INCLUDE_DIRS @PACKAGE_CURRENT_BUILD_DIR@/lib/jarhdf5-@HDF5_VERSION_STRING@.jar @@ -143,14 +150,14 @@ foreach (comp IN LISTS ${HDF5_PACKAGE_NAME}_FIND_COMPONENTS) list (REMOVE_ITEM ${HDF5_PACKAGE_NAME}_FIND_COMPONENTS ${comp}) set (${HDF5_PACKAGE_NAME}_LIB_TYPE ${${HDF5_PACKAGE_NAME}_LIB_TYPE} ${comp}) - if (${HDF5_PACKAGE_NAME}_BUILD_FORTRAN) + if (${HDF5_PACKAGE_NAME}_BUILD_FORTRAN AND ${HDF5_PACKAGE_NAME}_INSTALL_MOD_FORTRAN STREQUAL "SHARED") set (${HDF5_PACKAGE_NAME}_INCLUDE_DIR_FORTRAN "@PACKAGE_INCLUDE_INSTALL_DIR@/shared") endif () elseif (comp STREQUAL "static") list (REMOVE_ITEM ${HDF5_PACKAGE_NAME}_FIND_COMPONENTS ${comp}) set (${HDF5_PACKAGE_NAME}_LIB_TYPE ${${HDF5_PACKAGE_NAME}_LIB_TYPE} ${comp}) - if (${HDF5_PACKAGE_NAME}_BUILD_FORTRAN) + if (${HDF5_PACKAGE_NAME}_BUILD_FORTRAN AND ${HDF5_PACKAGE_NAME}_INSTALL_MOD_FORTRAN STREQUAL "STATIC") set (${HDF5_PACKAGE_NAME}_INCLUDE_DIR_FORTRAN "@PACKAGE_INCLUDE_INSTALL_DIR@/static") endif () endif () diff --git a/config/cmake/patch.xml b/config/cmake/patch.xml.in index 1bdff3e..d6843e1 100644 --- a/config/cmake/patch.xml +++ b/config/cmake/patch.xml.in @@ -1,5 +1,5 @@ <CPackWiXPatch> - <CPackWiXFragment Id="CM_CP_libraries.bin.hdf5.dll"> + <CPackWiXFragment Id="CM_CP_libraries.bin.@WIX_CMP_NAME@.dll"> <Environment Id="PATH" Name="PATH" Value="[CM_DP_libraries.bin]" diff --git a/config/cmake/runTest.cmake b/config/cmake/runTest.cmake index e26b8ea..b8abe92 100644 --- a/config/cmake/runTest.cmake +++ b/config/cmake/runTest.cmake @@ -122,6 +122,10 @@ if (NOT TEST_RESULT EQUAL TEST_EXPECT) file (READ ${TEST_FOLDER}/${TEST_OUTPUT} TEST_STREAM) message (STATUS "Output :\n${TEST_STREAM}") endif () + if (EXISTS "${TEST_FOLDER}/${TEST_OUTPUT}.err") + file (READ ${TEST_FOLDER}/${TEST_OUTPUT}.err TEST_STREAM) + message (STATUS "Error Output :\n${TEST_STREAM}") + endif () endif () message (FATAL_ERROR "Failed: Test program ${TEST_PROGRAM} exited != ${TEST_EXPECT}.\n${TEST_ERROR}") endif () diff --git a/config/cmake/scripts/HDF5options.cmake b/config/cmake/scripts/HDF5options.cmake index 5267212..92bfd37 100644 --- a/config/cmake/scripts/HDF5options.cmake +++ b/config/cmake/scripts/HDF5options.cmake @@ -69,9 +69,9 @@ set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ALLOW_EXTERNAL_SUPPORT:STRIN ### disable using ext zlib #set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ENABLE_Z_LIB_SUPPORT:BOOL=OFF") -### enable using ext szip -#set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ENABLE_SZIP_SUPPORT:BOOL=ON") -#set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ENABLE_SZIP_ENCODING:BOOL=ON") +### disable using ext szip +#set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ENABLE_SZIP_SUPPORT:BOOL=OFF") +#set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ENABLE_SZIP_ENCODING:BOOL=OFF") #### package examples #### #set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_PACK_EXAMPLES:BOOL=ON -DHDF5_EXAMPLES_COMPRESSED:STRING=HDF5Examples-2.0.3-Source.tar.gz -DHDF5_EXAMPLES_COMPRESSED_DIR:PATH=${CTEST_SCRIPT_DIRECTORY}") diff --git a/config/sanitizer/README.md b/config/sanitizer/README.md index 308f9c3..b33c100 100644 --- a/config/sanitizer/README.md +++ b/config/sanitizer/README.md @@ -304,4 +304,4 @@ file(GLOB_RECURSE CMAKE_FILES ) cmake_format(TARGET_NAME ${CMAKE_FILES}) -```
\ No newline at end of file +``` diff --git a/config/toolchain/build32.cmake b/config/toolchain/build32.cmake index a2566c3..f636ea8 100644 --- a/config/toolchain/build32.cmake +++ b/config/toolchain/build32.cmake @@ -42,7 +42,7 @@ elseif(MINGW) set (CMAKE_CROSSCOMPILING_EMULATOR wine) include_directories(/usr/${TOOLCHAIN_PREFIX}/include) - set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS On CACHE BOOL "Export windows symbols") + set (CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS On CACHE BOOL "Export windows symbols") else () set (CMAKE_SYSTEM_NAME Linux) diff --git a/config/toolchain/clang.cmake b/config/toolchain/clang.cmake index af176aa..2d35641 100644 --- a/config/toolchain/clang.cmake +++ b/config/toolchain/clang.cmake @@ -1,16 +1,16 @@ # Uncomment the following to use cross-compiling -#set(CMAKE_SYSTEM_NAME Linux) +#set (CMAKE_SYSTEM_NAME Linux) -set(CMAKE_COMPILER_VENDOR "clang") +set (CMAKE_COMPILER_VENDOR "clang") if(WIN32) - set(CMAKE_C_COMPILER clang-cl) - set(CMAKE_CXX_COMPILER clang-cl) + set (CMAKE_C_COMPILER clang-cl) + set (CMAKE_CXX_COMPILER clang-cl) else() - set(CMAKE_C_COMPILER clang) - set(CMAKE_CXX_COMPILER clang++) + set (CMAKE_C_COMPILER clang) + set (CMAKE_CXX_COMPILER clang++) endif() -set(CMAKE_EXPORT_COMPILE_COMMANDS ON) +set (CMAKE_EXPORT_COMPILE_COMMANDS ON) # the following is used if cross-compiling -set(CMAKE_CROSSCOMPILING_EMULATOR "") +set (CMAKE_CROSSCOMPILING_EMULATOR "") diff --git a/config/toolchain/crayle.cmake b/config/toolchain/crayle.cmake index bf7cf69..02df8ff 100644 --- a/config/toolchain/crayle.cmake +++ b/config/toolchain/crayle.cmake @@ -1,10 +1,10 @@ # The following line will use cross-compiling -set(CMAKE_SYSTEM_NAME Linux) +set (CMAKE_SYSTEM_NAME Linux) -set(CMAKE_COMPILER_VENDOR "CrayLinuxEnvironment") +set (CMAKE_COMPILER_VENDOR "CrayLinuxEnvironment") -set(CMAKE_C_COMPILER cc) -set(CMAKE_Fortran_COMPILER ftn) +set (CMAKE_C_COMPILER cc) +set (CMAKE_Fortran_COMPILER ftn) # the following is used if cross-compiling -set(CMAKE_CROSSCOMPILING_EMULATOR "") +set (CMAKE_CROSSCOMPILING_EMULATOR "") diff --git a/config/toolchain/gcc.cmake b/config/toolchain/gcc.cmake index c41d0ca..f0771ed 100644 --- a/config/toolchain/gcc.cmake +++ b/config/toolchain/gcc.cmake @@ -1,11 +1,11 @@ # Uncomment the following line and the correct system name to use cross-compiling -#set(CMAKE_SYSTEM_NAME Linux) +#set (CMAKE_SYSTEM_NAME Linux) -set(CMAKE_COMPILER_VENDOR "GCC") +set (CMAKE_COMPILER_VENDOR "GCC") -set(CMAKE_C_COMPILER cc) -set(CMAKE_CXX_COMPILER c++) -set(CMAKE_Fortran_COMPILER gfortran) +set (CMAKE_C_COMPILER cc) +set (CMAKE_CXX_COMPILER c++) +set (CMAKE_Fortran_COMPILER gfortran) # the following is used if cross-compiling -set(CMAKE_CROSSCOMPILING_EMULATOR "") +set (CMAKE_CROSSCOMPILING_EMULATOR "") diff --git a/config/toolchain/mingw64.cmake b/config/toolchain/mingw64.cmake index 1830488..1b13891 100644 --- a/config/toolchain/mingw64.cmake +++ b/config/toolchain/mingw64.cmake @@ -11,4 +11,4 @@ set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) set (CMAKE_CROSSCOMPILING_EMULATOR wine64) include_directories(/usr/${TOOLCHAIN_PREFIX}/include) -set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS On CACHE BOOL "Export windows symbols") +set (CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS On CACHE BOOL "Export windows symbols") diff --git a/config/toolchain/pgi.cmake b/config/toolchain/pgi.cmake index ec58cbb..ff2f048 100644 --- a/config/toolchain/pgi.cmake +++ b/config/toolchain/pgi.cmake @@ -1,11 +1,11 @@ # Uncomment the following to use cross-compiling -#set(CMAKE_SYSTEM_NAME Linux) +#set (CMAKE_SYSTEM_NAME Linux) -set(CMAKE_COMPILER_VENDOR "PGI") +set (CMAKE_COMPILER_VENDOR "PGI") -set(CMAKE_C_COMPILER pgcc) -set(CMAKE_CXX_COMPILER pgc++) -set(CMAKE_Fortran_COMPILER pgf90) +set (CMAKE_C_COMPILER pgcc) +set (CMAKE_CXX_COMPILER pgc++) +set (CMAKE_Fortran_COMPILER pgf90) # the following is used if cross-compiling -set(CMAKE_CROSSCOMPILING_EMULATOR "") +set (CMAKE_CROSSCOMPILING_EMULATOR "") diff --git a/doxygen/dox/ExamplesAPI.dox b/doxygen/dox/ExamplesAPI.dox new file mode 100644 index 0000000..8f88c4e --- /dev/null +++ b/doxygen/dox/ExamplesAPI.dox @@ -0,0 +1,1010 @@ +/** @page ExAPI Examples by API + +Navigate back: \ref index "Main" / \ref GettingStarted +<hr> + +\section sec_exapi_desc Examples Description +The C, FORTRAN and Java examples below point to the examples in the hdf5-examples github repository. Examples for older versions of HDF5 +are handled by setting the appropriate USE_API_xxx definition. HDF5-1.6 examples are in a "16"-named subdirectory. + +The Java examples are in the HDF5-1.10 source code, and the Java Object package examples are in the HDFView source. +<em>Please note that you must comment out the "package" statement at the top when downloading a Java Object example individually.</em> + +The MATLAB and Python examples were generously provided by a user and are not tested. + +Languages are C, Fortran, Java (JHI5), Java Object Package, Python (High Level), and Python (Low Level APIs). + +\subsection sec_exapi_dsets Datasets + +<table> +<tr> +<th>Feature</th> +<th>Languages</th> +<th>HDF5 File</th> +<th>Output</th> +<th>DDL</th> +</tr> +<tr> +<td>Set Space Allocation Time for Dataset</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/h5ex_d_alloc.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5D/h5ex_d_alloc.F90">FORTRAN</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5D/H5Ex_D_Alloc.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/datasets/H5ObjectEx_D_Alloc.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_d_alloc.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/testfiles/114/h5ex_d_alloc.tst">h5ex_d_alloc.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/testfiles/114/h5ex_d_alloc.ddl">h5ex_d_alloc.ddl</a></td> +</tr> +<tr> +<td>Read / Write Dataset using Fletcher32 Checksum Filter</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/h5ex_d_checksum.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5D/h5ex_d_checksum.F90">FORTRAN</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5D/H5Ex_D_Checksum.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/datasets/H5ObjectEx_D_Checksum.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_d_checksum.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/testfiles/114/h5ex_d_checksum.tst">h5ex_d_checksum.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/testfiles/114/h5ex_d_checksum.ddl">h5ex_d_checksum.ddl</a></td> +</tr> +<tr> +<td>Read / Write Chunked Dataset</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/h5ex_d_chunk.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5D/h5ex_d_chunk.F90">FORTRAN</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5D/H5Ex_D_Chunk.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/datasets/H5ObjectEx_D_Chunk.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_d_chunk.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/testfiles/114/h5ex_d_chunk.tst">h5ex_d_chunk.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/testfiles/114/h5ex_d_chunk.ddl">h5ex_d_chunk.ddl</a></td> +</tr> +<tr> +<td>Read / Write Compact Dataset</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/h5ex_d_compact.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5D/h5ex_d_compact.F90">FORTRAN</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5D/H5Ex_D_Compact.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/datasets/H5ObjectEx_D_Compact.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_d_compact.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/testfiles/114/h5ex_d_compact.tst">h5ex_d_compact.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/testfiles/114/h5ex_d_compact.ddl">h5ex_d_compact.ddl</a></td> +</tr> +<tr> +<td>Read / Write to External Dataset</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/h5ex_d_extern.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5D/h5ex_d_extern.F90">FORTRAN</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5D/H5Ex_D_External.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/datasets/H5ObjectEx_D_External.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_d_extern.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/testfiles/114/h5ex_d_extern.tst">h5ex_d_extern.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/testfiles/114/h5ex_d_extern.ddl">h5ex_d_extern.ddl</a></td> +</tr> +<tr> +<td>Read / Write Dataset w/ Fill Value</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/h5ex_d_fillval.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5D/h5ex_d_fillval.F90">FORTRAN</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5D/H5Ex_D_FillValue.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/datasets/H5ObjectEx_D_FillValue.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_d_fillval.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/testfiles/114/h5ex_d_fillval.tst">h5ex_d_fillval.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/testfiles/114/h5ex_d_fillval.ddl">h5ex_d_fillval.ddl</a></td> +</tr> +<tr> +<td>Read / Write GZIP Compressed Dataset</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/h5ex_d_gzip.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5D/h5ex_d_gzip.F90">FORTRAN</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5D/H5Ex_D_Gzip.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/datasets/H5ObjectEx_D_Gzip.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_d_gzip.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/testfiles/114/h5ex_d_gzip.tst">h5ex_d_gzip.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/testfiles/114/h5ex_d_gzip.ddl">h5ex_d_gzip.ddl</a></td> +</tr> +<tr> +<td>Read / Write Data by Hyperslabs</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/h5ex_d_hyper.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5D/h5ex_d_hyper.F90">FORTRAN</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5D/H5Ex_D_Hyperslab.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/datasets/H5ObjectEx_D_Hyperslab.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_d_hyper.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/testfiles/114/h5ex_d_hyper.tst">h5ex_d_hyper.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/testfiles/114/h5ex_d_hyper.ddl">h5ex_d_hyper.ddl</a></td> +</tr> +<tr> +<td>Read / Write Dataset with n-bit Filter</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/h5ex_d_nbit.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5D/h5ex_d_nbit.F90">FORTRAN</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5D/H5Ex_D_Nbit.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/datasets/H5ObjectEx_D_Nbit.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_d_nbit.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/testfiles/114/h5ex_d_nbit.tst">h5ex_d_nbit.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/testfiles/114/h5ex_d_nbit.ddl">h5ex_d_nbit.ddl</a></td> +</tr> +<tr> +<td>Read / Write Integer Dataset</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/h5ex_d_rdwr.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5D/h5ex_d_rdwr.F90">FORTRAN</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5D/H5Ex_D_ReadWrite.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/datasets/H5ObjectEx_D_ReadWrite.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_d_rdwrc.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/testfiles/114/h5ex_d_rdwrc.tst">h5ex_d_rdwrc.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/testfiles/114/h5ex_d_rdwr.ddl">h5ex_d_rdwr.ddl</a></td> +</tr> +<tr> +<td>Read / Write Dataset w/ Shuffle Filter and GZIP Compression</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/h5ex_d_shuffle.c">C</a> +FORTRAN +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5D/H5Ex_D_Shuffle.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/datasets/H5ObjectEx_D_Shuffle.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_d_shuffle.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/testfiles/114/h5ex_d_shuffle.tst">h5ex_d_shuffle.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/testfiles/114/h5ex_d_shuffle.ddl">h5ex_d_shuffle.ddl</a></td> +</tr> +<tr> +<td>Read / Write Dataset using Scale-Offset Filter (float)</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/h5ex_d_sofloat.c">C</a> +FORTRAN +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5D/H5Ex_D_Sofloat.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/datasets/H5ObjectEx_D_Sofloat.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_d_sofloat.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/testfiles/114/h5ex_d_sofloat.tst">h5ex_d_sofloat.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/testfiles/114/h5ex_d_sofloat.ddl">h5ex_d_sofloat.ddl</a></td> +</tr> +<tr> +<td>Read / Write Dataset using Scale-Offset Filter (integer)</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/h5ex_d_soint.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5D/h5ex_d_soint.F90">FORTRAN</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5D/H5Ex_D_Soint.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/datasets/H5ObjectEx_D_Soint.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_d_soint.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/testfiles/114/h5ex_d_soint.tst">h5ex_d_soint.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/testfiles/114/h5ex_d_soint.ddl">h5ex_d_soint.ddl</a></td> +</tr> +<tr> +<td>Read / Write Dataset using SZIP Compression</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/h5ex_d_szip.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5D/h5ex_d_szip.F90">FORTRAN</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5D/H5Ex_D_Szip.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/datasets/H5ObjectEx_D_Szip.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_d_szip.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/testfiles/114/h5ex_d_szip.tst">h5ex_d_szip.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/testfiles/114/h5ex_d_szip.ddl">h5ex_d_szip.ddl</a></td> +</tr> +<tr> +<td>Read / Write Dataset using Data Transform Expression</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/h5ex_d_transform.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5D/h5ex_d_transform.F90">FORTRAN</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5D/H5Ex_D_Transform.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/datasets/H5ObjectEx_D_Transform.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_d_transform.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/testfiles/114/h5ex_d_transform.tst">h5ex_d_transform.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/testfiles/114/h5ex_d_transform.ddl">h5ex_d_transform.ddl</a></td> +</tr> +<tr> +<td>Read / Write Unlimited Dimension Dataset</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/h5ex_d_unlimadd.c">C</a> +FORTRAN +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5D/H5Ex_D_UnlimitedAdd.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/datasets/H5ObjectEx_D_UnlimitedAdd.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_d_unlimadd.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/testfiles/114/h5ex_d_unlimadd.tst">h5ex_d_unlimadd.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/testfiles/114/h5ex_d_unlimadd.ddl">h5ex_d_unlimadd.ddl</a></td> +</tr> +<tr> +<td>Read / Write GZIP Compressed Unlimited Dimension Dataset</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/h5ex_d_unlimgzip.c">C</a> +FORTRAN +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5D/H5Ex_D_UnlimitedGzip.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/datasets/H5ObjectEx_D_UnlimitedGzip.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_d_unlimgzip.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/testfiles/114/h5ex_d_unlimgzip.tst">h5ex_d_unlimgzip.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/testfiles/114/h5ex_d_unlimgzip.ddl">h5ex_d_unlimgzip.ddl</a></td> +</tr> +<tr> +<td>Read / Write / Edit Unlimited Dimension Dataset</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/h5ex_d_unlimmod.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5D/h5ex_d_unlimmod.F90">FORTRAN</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5D/H5Ex_D_UnlimitedMod.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/datasets/H5ObjectEx_D_UnlimitedMod.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_d_unlimmod.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/testfiles/114/h5ex_d_unlimmod.tst">h5ex_d_unlimmod.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5D/testfiles/114/h5ex_d_unlimmod.ddl">h5ex_d_unlimmod.ddl</a></td> +</tr> +</table> + +\subsection sec_exapi_grps Groups +<table> +<tr> +<th>Feature</th> +<th>Languages</th> +<th>HDF5 File</th> +<th>Output</th> +<th>DDL</th> +</tr> +<tr> +<td>Create "compact-or-indexed" Format Groups</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5G/h5ex_g_compact.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5G/h5ex_g_compact.F90">FORTRAN</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5G/H5Ex_G_Compact.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/groups/H5ObjectEx_G_Compact.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_g_compact.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5G/testfiles/114/h5ex_g_compact.tst">h5ex_g_.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5G/testfiles/114/h5ex_g_compact1.ddl">h5ex_g_compact1.ddl</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5G/testfiles/114/h5ex_g_compact2.ddl">h5ex_g_compact2.ddl</a></td> +</tr> +<tr> +<td>Track links in a Group by Creation Order</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5G/h5ex_g_corder.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5G/h5ex_g_corder.F90">FORTRAN</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5G/H5Ex_G_Corder.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/groups/H5ObjectEx_G_Corder.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_g_corder.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5G/testfiles/114/h5ex_g_corder.tst">h5ex_g_corder.tst</a></td> +<td>h5ex_g_corder.ddl</td> +</tr> +<tr> +<td>Create / Open / Close a Group</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5G/h5ex_g_create.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5G/h5ex_g_create.F90">FORTRAN</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5G/H5Ex_G_Create.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/groups/H5ObjectEx_G_Create.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_g_create.h5</td> +<td>h5ex_g_create.tst</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5G/testfiles/114/h5ex_g_create.ddl">h5ex_g_create.ddl</a></td> +</tr> +<tr> +<td>Create Intermediate Groups</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5G/h5ex_g_intermediate.c">C</a> +FORTRAN +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5G/H5Ex_G_Intermediate.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/groups/H5ObjectEx_G_Intermediate.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_g_intermediate.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5G/testfiles/114/h5ex_g_intermediate.tst">h5ex_g_intermediate.tst</a></td> +<td>h5ex_g_intermediate.ddl</td> +</tr> +<tr> +<td>Iterate over Groups w/ H5Literate</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5G/h5ex_g_iterate.c">C</a> +FORTRAN +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5G/H5Ex_G_Iterate.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/groups/H5ObjectEx_G_Iterate.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_g_iterate.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5G/testfiles/114/h5ex_g_iterate.tst">h5ex_g_iterate.tst</a></td> +<td>h5ex_g_iterate.ddl</td> +</tr> +<tr> +<td>Set Conditions to Convert between Compact and Dense Groups</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5G/h5ex_g_phase.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5G/h5ex_g_phase.F90">FORTRAN</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5G/H5Ex_G_Phase.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/groups/H5ObjectEx_G_Phase.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_g_phase.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5G/testfiles/114/h5ex_g_phase.tst">h5ex_g_phase.tst</a></td> +<td>h5ex_g_phase.ddl</td> +</tr> +<tr> +<td>Recursively Traverse a File with H5Literate</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5G/h5ex_g_traverse.c">C</a> + FORTRAN +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5G/H5Ex_G_Traverse.java">Java</a> + JavaObj MATLAB PyHigh PyLow +</td> +<td>h5ex_g_traverse.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5G/testfiles/114/h5ex_g_traverse.tst">h5ex_g_traverse.tst</a></td> +<td>h5ex_g_traverse.ddl</td> +</tr> +<tr> +<td>Recursively Traverse a File with H5Ovisit / H5Lvisit</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5G/h5ex_g_visit.c">C</a> + FORTRAN +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5G/H5Ex_G_Visit.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/groups/H5ObjectEx_G_Visit.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_g_visit.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5G/testfiles/114/h5ex_g_visit.tst">h5ex_g_visit.tst</a></td> +<td>h5ex_g_visit.ddl</td> +</tr> +</table> + +\subsection sec_exapi_dtypes Datatypes +<table> +<tr> +<th>Feature</th> +<th>Languages</th> +<th>HDF5 File</th> +<th>Output</th> +<th>DDL</th> +</tr> +<tr> +<td>Read / Write Array (Attribute)</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/h5ex_t_arrayatt.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5T/h5ex_t_arrayatt.F90">FORTRAN</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5T/H5Ex_T_ArrayAttribute.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/datatypes/H5ObjectEx_T_ArrayAttribute.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_t_arrayatt.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_arrayatt.tst">h5ex_t_arrayatt.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_arrayatt.ddl">h5ex_t_arrayatt.ddl</a></td> +</tr> +<tr> +<td>Read / Write Array (Dataset)</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/h5ex_t_array.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5T/h5ex_t_array.F90">FORTRAN</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5T/H5Ex_T_Array.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/datatypes/H5ObjectEx_T_Array.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_t_array.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_array.tst">h5ex_t_array.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_array.ddl">h5ex_t_array.ddl</a></td> +</tr> +<tr> +<td>Read / Write Bitfield (Attribute)</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/h5ex_t_bitatt.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5T/h5ex_t_bitatt.F90">FORTRAN</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5T/H5Ex_T_BitAttribute.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/datatypes/H5ObjectEx_T_BitAttribute.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_t_bitatt.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_bitatt.tst">h5ex_t_bitatt.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_bitatt.ddl">h5ex_t_bitatt.ddl</a></td> +</tr> +<tr> +<td>Read / Write Bitfield (Dataset)</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/h5ex_t_bit.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5T/h5ex_t_bit.F90">FORTRAN</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5T/H5Ex_T_Bit.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/datatypes/H5ObjectEx_T_Bit.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_t_bit.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_bit.tst">h5ex_t_bit.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_bit.ddl">h5ex_t_bit.ddl</a></td> +</tr> +<tr> +<td>Read / Write Compound (Attribute)</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/h5ex_t_cmpdatt.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5T/h5ex_t_cmpdatt.F90">FORTRAN</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5T/H5Ex_T_CompoundAttribute.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/datatypes/H5ObjectEx_T_CompoundAttribute.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_t_cmpdatt.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_cmpdatt.tst">h5ex_t_cmpdatt.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_cmpdatt.ddl">h5ex_t_cmpdatt.ddl</a></td> +</tr> +<tr> +<td>Read / Write Compound (Dataset)</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/h5ex_t_cmpd.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5T/h5ex_t_cmpd.F90">FORTRAN</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5T/H5Ex_T_Compound.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/datatypes/H5ObjectEx_T_Compound.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_t_cmpd.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_cmpd.tst">h5ex_t_cmpd.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_cmpd.ddl">h5ex_t_cmpd.ddl</a></td> +</tr> +<tr> +<td>Commit Named Datatype and Read Back</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/h5ex_t_commit.c">C</a> + FORTRAN +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5T/H5Ex_T_Commit.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/datatypes/H5ObjectEx_T_Commit.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_t_commit.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_commit.tst">h5ex_t_commit.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_commit.ddl">h5ex_t_commit.ddl</a></td> +</tr> +<tr> +<td>Convert Between Datatypes in Memory</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/h5ex_t_convert.c">C</a> + FORTRAN Java JavaObj MATLAB PyHigh PyLow +</td> +<td>h5ex_t_convert.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_convert.tst">h5ex_t_convert.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_convert.ddl">h5ex_t_convert.ddl</a></td> +</tr> +<tr> +<td>Read / Write Complex Compound (Attribute)</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/h5ex_t_cpxcmpdatt.c">C</a> + FORTRAN Java JavaObj MATLAB PyHigh PyLow +</td> +<td>h5ex_t_cpxcmpdatt.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_cpxcmpdatt.tst">h5ex_t_cpxcmpdatt.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_cpxcmpdatt.ddl">h5ex_t_cpxcmpdatt.ddl</a></td> +</tr> +<tr> +<td>Read / Write Complex Compound (Dataset)</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/h5ex_t_cpxcmpd.c">C</a> + FORTRAN Java JavaObj MATLAB PyHigh PyLow +</td> +<td>h5ex_t_cpxcmpd.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_cpxcmpd.tst">h5ex_t_cpxcmpd.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_cpxcmpd.ddl">h5ex_t_cpxcmpd.ddl</a></td> +</tr> +<tr> +<td>Read / Write Enumerated (Attribute)</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/h5ex_t_enumatt.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5T/h5ex_t_enumatt_F03.F90">FORTRAN</a> + Java JavaObj MATLAB PyHigh PyLow +</td> +<td>h5ex_t_enumatt.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_enumatt.tst">h5ex_t_enumatt.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_enumatt.ddl">h5ex_t_enumatt.ddl</a></td> +</tr> +<tr> +<td>Read / Write Enumerated (Dataset)</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/h5ex_t_enum.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5T/h5ex_t_enum_F03.F90">FORTRAN</a> + Java JavaObj MATLAB PyHigh PyLow +</td> +<td>h5ex_t_enum.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_enum.tst">h5ex_t_enum.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_enum.ddl">h5ex_t_enum.ddl</a></td> +</tr> +<tr> +<td>Read / Write Floating Point (Attribute)</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/h5ex_t_floatatt.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5T/h5ex_t_floatatt_F03.F90">FORTRAN</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5T/H5Ex_T_FloatAttribute.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/datatypes/H5ObjectEx_T_FloatAttribute.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_t_floatatt.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_floatatt.tst">h5ex_t_floatatt.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_floatatt.ddl">h5ex_t_floatatt.ddl</a></td> +</tr> +<tr> +<td>Read / Write Floating Point (Dataset)</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/h5ex_t_float.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5T/h5ex_t_float_F03.F90">FORTRAN</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5T/H5Ex_T_Float.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/datatypes/H5ObjectEx_T_Float.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_t_float.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_float.tst">h5ex_t_float.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_float.ddl">h5ex_t_float.ddl</a></td> +</tr> +<tr> +<td>Read / Write Integer Datatype (Attribute)</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/h5ex_t_intatt.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5T/h5ex_t_intatt_F03.F90">FORTRAN</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5T/H5Ex_T_IntegerAttribute.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/datatypes/H5ObjectEx_T_IntegerAttribute.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_t_intatt.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_intatt.tst">h5ex_t_intatt.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_intatt.ddl">h5ex_t_intatt.ddl</a></td> +</tr> +<tr> +<td>Read / Write Integer Datatype (Dataset)</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/h5ex_t_int.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5T/h5ex_t_int_F03.F90">FORTRAN</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5T/H5Ex_T_Integer.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/datatypes/H5ObjectEx_T_Integer.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_t_int.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_int.tst">h5ex_t_int.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_int.ddl">h5ex_t_int.ddl</a></td> +</tr> +<tr> +<td>Read / Write Object References (Attribute)</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/h5ex_t_objrefatt.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5T/h5ex_t_objrefatt_F03.F90">FORTRAN</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5T/H5Ex_T_ObjectReferenceAttribute.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/datatypes/H5ObjectEx_T_ObjectReferenceAttribute.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_t_objrefatt.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_objrefatt.tst">h5ex_t_objrefatt.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_objrefatt.ddl">h5ex_t_objrefatt.ddl</a></td> +</tr> +<tr> +<td>Read / Write Object References (Dataset)</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/h5ex_t_objref.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5T/h5ex_t_objref_F03.F90">FORTRAN</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5T/H5Ex_T_ObjectReference.java">Java</a> + <a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/datatypes/H5ObjectEx_T_ObjectReference.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_t_objref.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_objref.tst">h5ex_t_objref.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_objref.ddl">h5ex_t_objref.ddl</a></td> +</tr> +<tr> +<td>Read / Write Opaque (Attribute)</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/h5ex_t_opaqueatt.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5T/h5ex_t_opaqueatt_F03.F90">FORTRAN</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5T/H5Ex_T_OpaqueAttribute.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/datatypes/H5ObjectEx_T_OpaqueAttribute.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_t_opaqueatt.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_opaqueatt.tst">h5ex_t_opaqueatt.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_opaqueatt.ddl">h5ex_t_opaqueatt.ddl</a></td> +</tr> +<tr> +<td>Read / Write Opaque (Dataset)</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/h5ex_t_opaque.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5T/h5ex_t_opaque_F03.F90">FORTRAN</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5T/H5Ex_T_Opaque.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/datatypes/H5ObjectEx_T_Opaque.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_t_opaque.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_opaque.tst">h5ex_t_opaque.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_opaque.ddl">h5ex_t_opaque.ddl</a></td> +</tr> +<tr> +<td>Read / Write Region References (Attribute)</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/h5ex_t_regrefatt.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5T/h5ex_t_regrefatt_F03.F90">FORTRAN</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5T/H5Ex_T_RegionReferenceAttribute.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/datatypes/H5ObjectEx_T_RegionReferenceAttribute.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_t_regrefatt.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_regrefatt.tst">h5ex_t_regrefatt.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_regrefatt.ddl">h5ex_t_regrefatt.ddl</a></td> +</tr> +<tr> +<td>Read / Write Region References (Dataset)</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/h5ex_t_regref.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5T/h5ex_t_regref_F03.F90">FORTRAN</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5T/H5Ex_T_RegionReference.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/datatypes/H5ObjectEx_T_RegionReference.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_t_regref.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_regref.tst">h5ex_t_regref.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_regref.ddl">h5ex_t_regref.ddl</a></td> +</tr> +<tr> +<td>Read / Write String (Attribute)</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/h5ex_t_stringatt.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5T/h5ex_t_stringatt_F03.F90">FORTRAN</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5T/H5Ex_T_StringAttribute.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/datatypes/H5ObjectEx_T_StringAttribute.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_t_stringatt.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_stringatt.tst">h5ex_t_stringatt.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_stringatt.ddl">h5ex_t_stringatt.ddl</a></td> +</tr> +<tr> +<td>Read / Write String (Dataset)</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/h5ex_t_string.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5T/h5ex_t_string_F03.F90">FORTRAN</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5T/H5Ex_T_String.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/datatypes/H5ObjectEx_T_String.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_t_string.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_string.tst">h5ex_t_string.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_string.ddl">h5ex_t_string.ddl</a></td> +</tr> +<tr> +<td>Read / Write Variable Length (Attribute)</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/h5ex_t_vlenatt.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5T/h5ex_t_vlenatt_F03.F90">FORTRAN</a> + Java JavaObj MATLAB PyHigh PyLow +</td> +<td>h5ex_t_vlenatt.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_vlenatt.tst">h5ex_t_vlenatt.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_vlenatt.ddl">h5ex_t_vlenatt.ddl</a></td> +</tr> +<tr> +<td>Read / Write Variable Length (Dataset)</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/h5ex_t_vlen.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5T/h5ex_t_vlen_F03.F90">FORTRAN</a> + Java JavaObj MATLAB PyHigh PyLow +</td> +<td>h5ex_t_vlen.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_vlen.tst">h5ex_t_vlen.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_vlen.ddl">h5ex_t_vlen.ddl</a></td> +</tr> +<tr> +<td>Read / Write Variable Length String (Attribute)</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/h5ex_t_vlstringatt.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5T/h5ex_t__F03.F90">FORTRAN</a> + Java JavaObj MATLAB PyHigh PyLow +</td> +<td>h5ex_t_vlstringatt.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_vlstringatt.tst">h5ex_t_vlstringatt.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_vlstringatt.ddl">h5ex_t_vlstringatt.ddl</a></td> +</tr> +<tr> +<td>Read / Write Variable Length String (Dataset)</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/h5ex_t_vlstring.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5T/h5ex_t_vlstring_F03.F90">FORTRAN</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Java/H5T/H5Ex_T_VLString.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/datatypes/H5ObjectEx_T_VLString.java">JavaObj</a> + MATLAB PyHigh PyLow +</td> +<td>h5ex_t_vlstring.h5</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_vlstring.tst">h5ex_t_vlstring.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5T/testfiles/114/h5ex_t_vlstring.ddl">h5ex_t_vlstring.ddl</a></td> +</tr> +</table> + +\subsection sec_exapi_filts Filters +<table> +<tr> +<th>Feature</th> +<th>Languages</th> +<th>HDF5 File</th> +<th>Output</th> +<th>DDL</th> +</tr> +<tr> +<td>Read / Write Dataset using Blosc Compression</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Filters/h5ex_d_blosc.c">C</a> + FORTRAN Java JavaObj MATLAB PyHigh PyLow +</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Filters/testfiles/114/h5ex_d_blosc.h5">h5ex_d_blosc.h5</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Filters/testfiles/114/h5ex_d_blosc.tst">h5ex_d_blosc.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Filters/testfiles/114/h5ex_d_blosc.ddl">h5ex_d_blosc.ddl</a></td> +</tr> +<tr> +<td>Read / Write Dataset using Bit Shuffle Compression</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Filters/h5ex_d_bshuf.c">C</a> + FORTRAN Java JavaObj MATLAB PyHigh PyLow +</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Filters/testfiles/114/h5ex_d_bshuf.h5">h5ex_d_bshuf.h5</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Filters/testfiles/114/h5ex_d_bshuf.tst">h5ex_d_bshuf.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Filters/testfiles/114/h5ex_d_bshuf.ddl">h5ex_d_bshuf.ddl</a></td> +</tr> +<tr> +<td>Read / Write Dataset using BZip2 Compression</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Filters/h5ex_d_bzip2.c">C</a> + FORTRAN Java JavaObj MATLAB PyHigh PyLow +</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Filters/testfiles/114/h5ex_d_bzip2.h5">h5ex_d_bzip2.h5</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Filters/testfiles/114/h5ex_d_bzip2.tst">h5ex_d_bzip2.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Filters/testfiles/114/h5ex_d_bzip2.ddl">h5ex_d_bzip2.ddl</a></td> +</tr> +<tr> +<td>Read / Write Dataset using JPEG Compression</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Filters/h5ex_d_jpeg.c">C</a> + FORTRAN Java JavaObj MATLAB PyHigh PyLow +</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Filters/testfiles/114/h5ex_d_jpeg.h5">h5ex_d_jpeg.h5</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Filters/testfiles/114/h5ex_d_jpeg.tst">h5ex_d_jpeg.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Filters/testfiles/114/h5ex_d_jpeg.ddl">h5ex_d_jpeg.ddl</a></td> +</tr> +<tr> +<td>Read / Write Dataset using LZ4 Compression</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Filters/h5ex_d_lz4.c">C</a> + FORTRAN Java JavaObj MATLAB PyHigh PyLow +</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Filters/testfiles/114/h5ex_d_lz4.h5">h5ex_d_lz4.h5</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Filters/testfiles/114/h5ex_d_lz4.tst">h5ex_d_lz4.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Filters/testfiles/114/h5ex_d_lz4.ddl">h5ex_d_lz4.ddl</a></td> +</tr> +<tr> +<td>Read / Write Dataset using LZF Compression</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Filters/h5ex_d_lzf.c">C</a> + FORTRAN Java JavaObj MATLAB PyHigh PyLow +</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Filters/testfiles/114/h5ex_d_lzf.h5">h5ex_d_lzf.h5</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Filters/testfiles/114/h5ex_d_lzf.tst">h5ex_d_lzf.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Filters/testfiles/114/h5ex_d_lzf.ddl">h5ex_d_lzf.ddl</a></td> +</tr> +<tr> +<td>Read / Write Dataset using MAFISC Compression</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Filters/h5ex_d_mafisc.c">C</a> + FORTRAN Java JavaObj MATLAB PyHigh PyLow +</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Filters/testfiles/114/h5ex_d_mafisc.h5">h5ex_d_mafisc.h5</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Filters/testfiles/114/h5ex_d_mafisc.tst">h5ex_d_mafisc.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Filters/testfiles/114/h5ex_d_mafisc.ddl">h5ex_d_mafisc.ddl</a></td> +</tr> +<tr> +<td>Read / Write Dataset using ZFP Compression</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Filters/h5ex_d_zfp.c">C</a> + FORTRAN Java JavaObj MATLAB PyHigh PyLow +</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Filters/testfiles/114/h5ex_d_zfp.h5">h5ex_d_zfp.h5</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Filters/testfiles/114/h5ex_d_zfp.tst">h5ex_d_zfp.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Filters/testfiles/114/h5ex_d_zfp.ddl">h5ex_d_zfp.ddl</a></td> +</tr> +<tr> +<td>Read / Write Dataset using ZStd Compression</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Filters/h5ex_d_zstd.c">C</a> + FORTRAN Java JavaObj MATLAB PyHigh PyLow +</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Filters/testfiles/114/h5ex_d_zstd.h5">h5ex_d_zstd.h5</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Filters/testfiles/114/h5ex_d_zstd.tst">h5ex_d_zstd.tst</a></td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Filters/testfiles/114/h5ex_d_zstd.ddl">h5ex_d_zstd.ddl</a></td> +</tr> +</table> + +\subsection sec_exapi_java Java General +<table> +<tr> +<th>Feature</th> +<th>Languages</th> +<th>Output</th> +</tr> +<tr> +<td>Create/Read/Write an Attribute</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/JAVA/intro/HDF5AttributeCreate.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/intro/H5Object_CreateAttribute.java">JavaObj</a> +</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/JAVA/intro/testfiles/114/HDF5AttributeCreate.txt">HDF5AttributeCreate.txt</a></td> +</tr> +<tr> +<td>Create Datasets</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/JAVA/intro/HDF5DatasetCreate.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/intro/H5Object_CreateDataset.java">JavaObj</a> +</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/JAVA/intro/testfiles/114/HDF5DatasetCreate.txt">HDF5DatasetCreate.txt</a></td> +</tr> +<tr> +<td>Read/Write Datasets</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/JAVA/intro/HDF5DatasetRead.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/intro/H5Object_ReadWrite.java">JavaObj</a> +</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/JAVA/intro/testfiles/114/HDF5DatasetRead.txt">HDF5DatasetRead.txt</a></td> +</tr> +<tr> +<td>Create an Empty File</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/JAVA/intro/HDF5FileCreate.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/intro/H5Object_CreateFile.java">JavaObj</a> +</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/JAVA/intro/testfiles/114/HDF5FileCreate.txt">HDF5FileCreate.txt</a></td> +</tr> +<tr> +<td>Retrieve the File Structure</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/JAVA/intro/HDF5FileStructure.java">Java</a> + JavaObj +</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/JAVA/intro/testfiles/114/HDF5FileStructure.txt">HDF5FileStructure.txt</a></td> +</tr> +<tr> +<td>Create Groups</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/JAVA/intro/HDF5GroupCreate.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/intro/H5Object_CreateGroup.java">JavaObj</a> +</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/JAVA/intro/testfiles/114/HDF5GroupCreate.java">HDF5GroupCreate.txt</a></td> +</tr> +<tr> +<td>Select a Subset of a Dataset</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/JAVA/intro/HDF5SubsetSelect.java">Java</a> + JavaObj +</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/JAVA/intro/testfiles/114/HDF5SubsetSelect.txt">HDF5SubsetSelect.txt</a></td> +</tr> +<tr> +<td>Create Two Datasets Within Groups</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/JAVA/intro/HDF5GroupDatasetCreate.java">Java</a> +<a href="https://github.com/HDFGroup/hdfview/blob/master/test/org.hdfgroup.object.example.test/intro/H5Object_CreateGroupDataset.java">JavaObj</a> +</td> +<td><a href="https://github.com/HDFGroup/hdf5-examples/blob/master/JAVA/intro/testfiles/114/HDF5GroupDatasetCreate.java">HDF5GroupDatasetCreate.txt</a></td> +</tr> +</table> + + +\subsection sec_exapi_par Parallel +<table> +<tr> +<th>Feature</th> +<th>Languages</th> +<th>HDF5 File</th> +<th>Output</th> +</tr> +<tr> +<td>Creating and Accessing a File</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Parallel/ph5_file_create.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5Parallel/ph5_file_create.f90">FORTRAN</a> + MATLAB PyHigh PyLow +</td> +<td>ph5_.h5</td> +<td>ph5_.tst</td> +</tr> +<tr> +<td>Creating and Accessing a Dataset</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Parallel/ph5_dataset.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5Parallel/ph5_dataset.f90">FORTRAN</a> + MATLAB PyHigh PyLow +</td> +<td>ph5_.h5</td> +<td>ph5_.tst</td> +</tr> +<tr> +<td>Writing and Reading Contiguous Hyperslabs</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Parallel/ph5_hyperslab_by_row.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5Parallel/ph5_hyperslab_by_row.f90">FORTRAN</a> + MATLAB PyHigh PyLow +</td> +<td>ph5_.h5</td> +<td>ph5_.tst</td> +</tr> +<tr> +<td>Writing and Reading Regularly Spaced Data Hyperslabs</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Parallel/ph5_hyperslab_by_col.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5Parallel/ph5_hyperslab_by_col.f90">FORTRAN</a> + MATLAB PyHigh PyLow +</td> +<td>ph5_.h5</td> +<td>ph5_.tst</td> +</tr> +<tr> +<td>Writing and Reading Pattern Hyperslabs</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Parallel/ph5_hyperslab_by_pattern.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5Parallel/ph5_hyperslab_by_pattern.f90">FORTRAN</a> + MATLAB PyHigh PyLow +</td> +<td>ph5_.h5</td> +<td>ph5_.tst</td> +</tr> +<tr> +<td>Writing and Reading Chunk Hyperslabs</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Parallel/ph5_hyperslab_by_chunk.c">C</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/FORTRAN/H5Parallel/ph5_hyperslab_by_chunk.f90">FORTRAN</a> + MATLAB PyHigh PyLow +</td> +<td>ph5_.h5</td> +<td>ph5_.tst</td> +</tr> +<tr> +<td>Using the Subfiling VFD to Write a File Striped Across Multiple Subfiles</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Parallel/ph5_subfiling.c">C</a> + FORTRAN MATLAB PyHigh PyLow +</td> +<td>ph5_.h5</td> +<td>ph5_.tst</td> +</tr> +<tr> +<td>Write to Datasets with Filters Applied</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Parallel/ph5_filtered_writes.c">C</a> + FORTRAN MATLAB PyHigh PyLow +</td> +<td>ph5_.h5</td> +<td>ph5_.tst</td> +</tr> +<tr> +<td>Collectively Write Datasets with Filters and Not All Ranks have Data</td> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Parallel/ph5_filtered_writes_no_sel.c">C</a> + FORTRAN MATLAB PyHigh PyLow +</td> +<td>ph5_.h5</td> +<td>ph5_.tst</td> +</tr> +</table> + + +<hr> +Navigate back: \ref index "Main" / \ref GettingStarted + +*/ diff --git a/doxygen/dox/GettingStarted.dox b/doxygen/dox/GettingStarted.dox index 29c5033..87f3566 100644 --- a/doxygen/dox/GettingStarted.dox +++ b/doxygen/dox/GettingStarted.dox @@ -50,10 +50,10 @@ Parallel HDF5, and the HDF5-1.10 VDS and SWMR new features: </tr> <tr> <td style="background-color:#F5F5F5"> -<a href="https://portal.hdfgroup.org/display/HDF5/Introduction+to+Parallel+HDF5">Introduction to Parallel HDF5</a> +\ref IntroParHDF5 </td> <td> -A brief introduction to Parallel HDF5. If you are new to HDF5 please see the @ref LearnBasics topic first. +A brief introduction to Parallel HDF5. If you are new to HDF5 please see the @ref LearnBasics topic first. </td> </tr> <tr> diff --git a/doxygen/dox/IntroHDF5.dox b/doxygen/dox/IntroHDF5.dox index 3ca7d00..2c25659 100644 --- a/doxygen/dox/IntroHDF5.dox +++ b/doxygen/dox/IntroHDF5.dox @@ -607,7 +607,7 @@ on the <a href="http://hdfeos.org/">HDF-EOS Tools and Information Center</a> pag \section secHDF5Examples Examples \li \ref LBExamples -\li <a href="https://portal.hdfgroup.org/display/HDF5/Examples+by+API">Examples by API</a> +\li \ref ExAPI \li <a href="https://portal.hdfgroup.org/display/HDF5/Examples+in+the+Source+Code">Examples in the Source Code</a> \li <a href="https://portal.hdfgroup.org/display/HDF5/Other+Examples">Other Examples</a> diff --git a/doxygen/dox/IntroParExamples.dox b/doxygen/dox/IntroParExamples.dox new file mode 100644 index 0000000..3929106 --- /dev/null +++ b/doxygen/dox/IntroParExamples.dox @@ -0,0 +1,569 @@ +/** @page IntroParContHyperslab Writing by Contiguous Hyperslab + +Navigate back: \ref index "Main" / \ref GettingStarted / \ref IntroParHDF5 +<hr> + +This example shows how to write a contiguous buffer in memory to a contiguous hyperslab in a file. In this case, +each parallel process writes a contiguous hyperslab to the file. + +In the C example (figure a), each hyperslab in memory consists of an equal number of consecutive rows. In the FORTRAN +90 example (figure b), each hyperslab in memory consists of +an equal number of consecutive columns. This reflects the difference in the storage order for C and FORTRAN 90. +<table> +<tr> +<th><strong>Figure a</strong> C Example</th> +<th><strong>Figure b</strong> Fortran Example</th> +</tr><tr> +<td> +\image html pcont_hy_figa.gif +</td> +<td> +\image html pcont_hy_figb.gif +</td> +</tr> +</table> + +\section secIntroParContHyperslabC Writing a Contiguous Hyperslab in C +In this example, you have a dataset of 8 (rows) x 5 (columns) and each process writes an equal number +of rows to the dataset. The dataset hyperslab is defined as follows: +\code + count [0] = dimsf [0] / number_processes + count [1] = dimsf [1] +\endcode +where, +\code + dimsf [0] is the number of rows in the dataset + dimsf [1] is the number of columns in the dataset +\endcode +The offset for the hyperslab is different for each process: +\code + offset [0] = k * count[0] + offset [1] = 0 +\endcode +where, +\code + "k" is the process id number + count [0] is the number of rows written in each hyperslab + offset [1] = 0 indicates to start at the beginning of the row +\endcode + +The number of processes that you could use would be 1, 2, 4, or 8. The number of rows that would be written by each slab is as follows: +<table> +<tr> +<th><strong>Processes</strong></th> +<th><strong>Size of count[0](\# of rows) </strong></th> +</tr><tr> +<td>1</td><td>8</td> +</tr><tr> +<td>2</td><td>4</td> +</tr><tr> +<td>4</td><td>2</td> +</tr><tr> +<td>8</td><td>1</td> +</tr> +</table> + +If using 4 processes, then process 1 would look like: +<table> +<tr> +<td> +\image html pcont_hy_figc.gif +</td> +</tr> +</table> + +The code would look like the following: +\code + 71 /* + 72 * Each process defines dataset in memory and writes it to the hyperslab + 73 * in the file. + 74 */ + 75 count[0] = dimsf[0]/mpi_size; + 76 count[1] = dimsf[1]; + 77 offset[0] = mpi_rank * count[0]; + 78 offset[1] = 0; + 79 memspace = H5Screate_simple(RANK, count, NULL); + 80 + 81 /* + 82 * Select hyperslab in the file. + 83 */ + 84 filespace = H5Dget_space(dset_id); + 85 H5Sselect_hyperslab(filespace, H5S_SELECT_SET, offset, NULL, count, NULL); +\endcode + +Below is the example program: +<table> +<tr> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Parallel/ph5_hyperslab_by_row.c">hyperslab_by_row.c</a> +</td> +</tr> +</table> + +If using this example with 4 processes, then, +\li Process 0 writes "10"s to the file. +\li Process 1 writes "11"s. +\li Process 2 writes "12"s. +\li Process 3 writes "13"s. + +The following is the output from h5dump for the HDF5 file created by this example using 4 processes: +\code +HDF5 "SDS_row.h5" { +GROUP "/" { + DATASET "IntArray" { + DATATYPE H5T_STD_I32BE + DATASPACE SIMPLE { ( 8, 5 ) / ( 8, 5 ) } + DATA { + 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, + 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, + 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, + 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13 + } + } +} +} +\endcode + + +\section secIntroParContHyperslabFort Writing a Contiguous Hyperslab in Fortran +In this example you have a dataset of 5 (rows) x 8 (columns). Since a contiguous hyperslab in Fortran 90 +consists of consecutive columns, each process will be writing an equal number of columns to the dataset. + +You would define the size of the hyperslab to write to the dataset as follows: +\code + count(1) = dimsf(1) + count(2) = dimsf(2) / number_of_processes +\endcode + +where, +\code + dimsf(1) is the number of rows in the dataset + dimsf(2) is the number of columns +\endcode + +The offset for the hyperslab dimension would be different for each process: +\code + offset (1) = 0 + offset (2) = k * count (2) +\endcode + +where, +\code + offset (1) = 0 indicates to start at the beginning of the column + "k" is the process id number + "count(2) is the number of columns to be written by each hyperslab +\endcode + +The number of processes that could be used in this example are 1, 2, 4, or 8. The number of +columns that could be written by each slab is as follows: +<table> +<tr> +<th><strong>Processes</strong></th> +<th><strong>Size of count (2)(\# of columns) </strong></th> +</tr><tr> +<td>1</td><td>8</td> +</tr><tr> +<td>2</td><td>4</td> +</tr><tr> +<td>4</td><td>2</td> +</tr><tr> +<td>8</td><td>1</td> +</tr> +</table> + +If using 4 processes, the offset and count parameters for Process 1 would look like: +<table> +<tr> +<td> +\image html pcont_hy_figd.gif +</td> +</tr> +</table> + +The code would look like the following: +\code + 69 ! Each process defines dataset in memory and writes it to the hyperslab + 70 ! in the file. + 71 ! + 72 count(1) = dimsf(1) + 73 count(2) = dimsf(2)/mpi_size + 74 offset(1) = 0 + 75 offset(2) = mpi_rank * count(2) + 76 CALL h5screate_simple_f(rank, count, memspace, error) + 77 ! + 78 ! Select hyperslab in the file. + 79 ! + 80 CALL h5dget_space_f(dset_id, filespace, error) + 81 CALL h5sselect_hyperslab_f (filespace, H5S_SELECT_SET_F, offset, count, error) +\endcode + +Below is the F90 example program which illustrates how to write contiguous hyperslabs by column in Parallel HDF5: +<table> +<tr> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Fortran/H5Parallel/ph5_f90_hyperslab_by_col.F90">hyperslab_by_col.F90</a> +</td> +</tr> +</table> + +If you run this program with 4 processes and look at the output with h5dump you will notice that the output is +much like the output shown above for the C example. This is because h5dump is written in C. The data would be +displayed in columns if it was printed using Fortran 90 code. + +<hr> +Navigate back: \ref index "Main" / \ref GettingStarted / \ref IntroParHDF5 + +@page IntroParRegularSpaced Writing by Regularly Spaced Data + +Navigate back: \ref index "Main" / \ref GettingStarted / \ref IntroParHDF5 +<hr> + +In this case, each process writes data from a contiguous buffer into disconnected locations in the file, using a regular pattern. + +In C it is done by selecting a hyperslab in a file that consists of regularly spaced columns. In F90, it is done by selecting a +hyperslab in a file that consists of regularly spaced rows. +<table> +<tr> +<th><strong>Figure a</strong> C Example</th> +<th><strong>Figure b</strong> Fortran Example</th> +</tr><tr> +<td> +\image html preg_figa.gif +</td> +<td> +\image html preg_figb.gif +</td> +</tr> +</table> + +\section secIntroParRegularSpacedC Writing Regularly Spaced Columns in C +In this example, you have two processes that write to the same dataset, each writing to +every other column in the dataset. For each process the hyperslab in the file is set up as follows: +\code + 89 count[0] = 1; + 90 count[1] = dimsm[1]; + 91 offset[0] = 0; + 92 offset[1] = mpi_rank; + 93 stride[0] = 1; + 94 stride[1] = 2; + 95 block[0] = dimsf[0]; + 96 block[1] = 1; +\endcode + +The stride is 2 for dimension 1 to indicate that every other position along this +dimension will be written to. A stride of 1 indicates that every position along a dimension will be written to. + +For two processes, the mpi_rank will be either 0 or 1. Therefore: +\li Process 0 writes to even columns (0, 2, 4...) +\li Process 1 writes to odd columns (1, 3, 5...) + +The block size allows each process to write a column of data to every other position in the dataset. + +<table> +<tr> +<td> +\image html preg_figc.gif +</td> +</tr> +</table> + +Below is an example program for writing hyperslabs by column in Parallel HDF5: +<table> +<tr> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Parallel/ph5_hyperslab_by_col.c">hyperslab_by_col.c</a> +</td> +</tr> +</table> + +The following is the output from h5dump for the HDF5 file created by this example: +\code +HDF5 "SDS_col.h5" { +GROUP "/" { + DATASET "IntArray" { + DATATYPE H5T_STD_I32BE + DATASPACE SIMPLE { ( 8, 6 ) / ( 8, 6 ) } + DATA { + 1, 2, 10, 20, 100, 200, + 1, 2, 10, 20, 100, 200, + 1, 2, 10, 20, 100, 200, + 1, 2, 10, 20, 100, 200, + 1, 2, 10, 20, 100, 200, + 1, 2, 10, 20, 100, 200, + 1, 2, 10, 20, 100, 200, + 1, 2, 10, 20, 100, 200 + } + } +} +} +\endcode + + +\section secIntroParRegularSpacedFort Writing Regularly Spaced Rows in Fortran +In this example, you have two processes that write to the same dataset, each writing to every +other row in the dataset. For each process the hyperslab in the file is set up as follows: + + +You would define the size of the hyperslab to write to the dataset as follows: +\code + 83 ! Each process defines dataset in memory and writes it to + 84 ! the hyperslab in the file. + 85 ! + 86 count(1) = dimsm(1) + 87 count(2) = 1 + 88 offset(1) = mpi_rank + 89 offset(2) = 0 + 90 stride(1) = 2 + 91 stride(2) = 1 + 92 block(1) = 1 + 93 block(2) = dimsf(2) +\endcode + +The stride is 2 for dimension 1 to indicate that every other position along this dimension will +be written to. A stride of 1 indicates that every position along a dimension will be written to. + +For two process, the mpi_rank will be either 0 or 1. Therefore: +\li Process 0 writes to even rows (0, 2, 4 ...) +\li Process 1 writes to odd rows (1, 3, 5 ...) + +The block size allows each process to write a row of data to every other position in the dataset, +rather than just a point of data. + +The following shows the data written by Process 1 to the file: +<table> +<tr> +<td> +\image html preg_figd.gif +</td> +</tr> +</table> + +Below is the example program for writing hyperslabs by column in Parallel HDF5: +<table> +<tr> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Fortran/H5Parallel/ph5_f90_hyperslab_by_row.F90">hyperslab_by_row.F90</a> +</td> +</tr> +</table> + +The output for h5dump on the file created by this program will look like the output as shown above for the C example. This is +because h5dump is written in C. The data would be displayed in rows if it were printed using Fortran 90 code. + +<hr> +Navigate back: \ref index "Main" / \ref GettingStarted / \ref IntroParHDF5 + +@page IntroParPattern Writing by Pattern + +Navigate back: \ref index "Main" / \ref GettingStarted / \ref IntroParHDF5 +<hr> + +This is another example of writing data into disconnected locations in a file. Each process writes data from the contiguous +buffer into regularly scattered locations in the file. + +Each process defines a hyperslab in the file as described below and writes data to it. The C and Fortran 90 examples below +result in the same data layout in the file. + +<table> +<tr> +<th><strong>Figure a</strong> C Example</th> +<th><strong>Figure b</strong> Fortran Example</th> +</tr><tr> +<td> +\image html ppatt_figa.gif +</td> +<td> +\image html ppatt_figb.gif +</td> +</tr> +</table> + +The C and Fortran 90 examples use four processes to write the pattern shown above. Each process defines a hyperslab by: +\li Specifying a stride of 2 for each dimension, which indicates that you wish to write to every other position along a dimension. +\li Specifying a different offset for each process: +<table> +<tr> +<th rowspan="3"><strong>C</strong></th><th>Process 0</th><th>Process 1</th><th>Process 2</th><th>Process 3</th> +</tr><tr> +<td>offset[0] = 0</td><td>offset[0] = 1</td><td>offset[0] = 0</td><td>offset[0] = 1</td> +</tr><tr> +<td>offset[1] = 0</td><td>offset[1] = 0</td><td>offset[1] = 1</td><td>offset[1] = 1</td> +</tr><tr> +<th rowspan="3"><strong>Fortran</strong></th><th>Process 0</th><th>Process 1</th><th>Process 2</th><th>Process 3</th> +</tr><tr> +<td>offset(1) = 0</td><td>offset(1) = 0</td><td>offset(1) = 1</td><td>offset(1) = 1</td> +</tr><tr> +<td>offset(2) = 0</td><td>offset(2) = 1</td><td>offset(2) = 0</td><td>offset(2) = 1</td> +</tr> +</table> +\li Specifying the size of the slab to write. The count is the number of positions along a dimension to write to. If writing a 4 x 2 slab, +then the count would be: +<table> +<tr> +<th><strong>C</strong></th><th>Fortran</th> +</tr><tr> +<td>count[0] = 4</td><td>count(1) = 2</td> +</tr><tr> +<td>count[1] = 2</td><td>count(2) = 4</td> +</tr> +</table> + +For example, the offset, count, and stride parameters for Process 2 would look like: +<table> +<tr> +<th><strong>Figure a</strong> C Example</th> +<th><strong>Figure b</strong> Fortran Example</th> +</tr><tr> +<td> +\image html ppatt_figc.gif +</td> +<td> +\image html ppatt_figd.gif +</td> +</tr> +</table> + +Below are example programs for writing hyperslabs by pattern in Parallel HDF5: +<table> +<tr> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Parallel/ph5_hyperslab_by_pattern.c">hyperslab_by_pattern.c</a> +</td> +</tr> +<tr> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Fortran/H5Parallel/ph5_f90_hyperslab_by_pattern.F90">hyperslab_by_pattern.F90</a> +</td> +</tr> +</table> + +The following is the output from h5dump for the HDF5 file created in this example: +\code +HDF5 "SDS_pat.h5" { +GROUP "/" { + DATASET "IntArray" { + DATATYPE H5T_STD_I32BE + DATASPACE SIMPLE { ( 8, 4 ) / ( 8, 4 ) } + DATA { + 1, 3, 1, 3, + 2, 4, 2, 4, + 1, 3, 1, 3, + 2, 4, 2, 4, + 1, 3, 1, 3, + 2, 4, 2, 4, + 1, 3, 1, 3, + 2, 4, 2, 4 + } + } +} +} +\endcode +The h5dump utility is written in C so the output is in C order. + + +<hr> +Navigate back: \ref index "Main" / \ref GettingStarted / \ref IntroParHDF5 + +@page IntroParChunk Writing by Chunk + +Navigate back: \ref index "Main" / \ref GettingStarted / \ref IntroParHDF5 +<hr> + +In this example each process writes a "chunk" of data to a dataset. The C and Fortran 90 +examples result in the same data layout in the file. + +<table> +<tr> +<th><strong>Figure a</strong> C Example</th> +<th><strong>Figure b</strong> Fortran Example</th> +</tr><tr> +<td> +\image html pchunk_figa.gif +</td> +<td> +\image html pchunk_figb.gif +</td> +</tr> +</table> + +For this example, four processes are used, and a 4 x 2 chunk is written to the dataset by each process. + +To do this, you would: +\li Use the block parameter to specify a chunk of size 4 x 2 (or 2 x 4 for Fortran). +\li Use a different offset (start) for each process, based on the chunk size: +<table> +<tr> +<th rowspan="3"><strong>C</strong></th><th>Process 0</th><th>Process 1</th><th>Process 2</th><th>Process 3</th> +</tr><tr> +<td>offset[0] = 0</td><td>offset[0] = 0</td><td>offset[0] = 4</td><td>offset[0] = 4</td> +</tr><tr> +<td>offset[1] = 0</td><td>offset[1] = 2</td><td>offset[1] = 0</td><td>offset[1] = 2</td> +</tr><tr> +<th rowspan="3"><strong>Fortran</strong></th><th>Process 0</th><th>Process 1</th><th>Process 2</th><th>Process 3</th> +</tr><tr> +<td>offset(1) = 0</td><td>offset(1) = 2</td><td>offset(1) = 0</td><td>offset(1) = 2</td> +</tr><tr> +<td>offset(2) = 0</td><td>offset(2) = 0</td><td>offset(2) = 4</td><td>offset(2) = 4</td> +</tr> +</table> + +For example, the offset and block parameters for Process 2 would look like: +<table> +<tr> +<th><strong>Figure a</strong> C Example</th> +<th><strong>Figure b</strong> Fortran Example</th> +</tr><tr> +<td> +\image html pchunk_figc.gif +</td> +<td> +\image html pchunk_figd.gif +</td> +</tr> +</table> + +Below are example programs for writing hyperslabs by pattern in Parallel HDF5: +<table> +<tr> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Parallel/ph5_hyperslab_by_chunk.c">hyperslab_by_chunk.c</a> +</td> +</tr> +<tr> +<td> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Fortran/H5Parallel/ph5_f90_hyperslab_by_chunk.F90">hyperslab_by_chunk.F90</a> +</td> +</tr> +</table> + +The following is the output from h5dump for the HDF5 file created in this example: +\code +HDF5 "SDS_chnk.h5" { +GROUP "/" { + DATASET "IntArray" { + DATATYPE H5T_STD_I32BE + DATASPACE SIMPLE { ( 8, 4 ) / ( 8, 4 ) } + DATA { + 1, 1, 2, 2, + 1, 1, 2, 2, + 1, 1, 2, 2, + 1, 1, 2, 2, + 3, 3, 4, 4, + 3, 3, 4, 4, + 3, 3, 4, 4, + 3, 3, 4, 4 + } + } +} +} +\endcode +The h5dump utility is written in C so the output is in C order. + +<hr> +Navigate back: \ref index "Main" / \ref GettingStarted / \ref IntroParHDF5 + +*/ diff --git a/doxygen/dox/IntroParHDF5.dox b/doxygen/dox/IntroParHDF5.dox new file mode 100644 index 0000000..1f04e96 --- /dev/null +++ b/doxygen/dox/IntroParHDF5.dox @@ -0,0 +1,271 @@ +/** @page IntroParHDF5 A Brief Introduction to Parallel HDF5 + +Navigate back: \ref index "Main" / \ref GettingStarted +<hr> + +If you are new to HDF5 please see the @ref LearnBasics topic first. + +\section sec_pintro_overview Overview of Parallel HDF5 (PHDF5) Design +There were several requirements that we had for Parallel HDF5 (PHDF5). These were: +\li Parallel HDF5 files had to be compatible with serial HDF5 files and sharable +between different serial and parallel platforms. +\li Parallel HDF5 had to be designed to have a single file image to all processes, +rather than having one file per process. Having one file per process can cause expensive +post processing, and the files are not usable by different processes. +\li A standard parallel I/O interface had to be portable to different platforms. + +With these requirements of HDF5 our initial target was to support MPI programming, but not +for shared memory programming. We had done some experimentation with thread-safe support +for Pthreads and for OpenMP, and decided to use these. + +Implementation requirements were to: +\li Not use Threads, since they were not commonly supported in 1998 when we were looking at this. +\li Not have a reserved process, as this might interfere with parallel algorithms. +\li Not spawn any processes, as this is not even commonly supported now. + +The following shows the Parallel HDF5 implementation layers. + + +\subsection subsec_pintro_prog Parallel Programming with HDF5 +This tutorial assumes that you are somewhat familiar with parallel programming with MPI (Message Passing Interface). + +If you are not familiar with parallel programming, here is a tutorial that may be of interest: +<a href="http://www.nersc.gov/users/training/online-tutorials/introduction-to-scientific-i-o/?show_all=1">Tutorial on HDF5 I/O tuning at NERSC</a> + +Some of the terms that you must understand in this tutorial are: +<ul> +<li> +<strong>MPI Communicator</strong> +Allows a group of processes to communicate with each other. + +Following are the MPI routines for initializing MPI and the communicator and finalizing a session with MPI: +<table> +<tr> +<th>C</th> +<th>Fortran</th> +<th>Description</th> +</tr> +<tr> +<td>MPI_Init</td> +<td>MPI_INIT</td> +<td>Initialize MPI (MPI_COMM_WORLD usually)</td> +</tr> +<tr> +<td>MPI_Comm_size</td> +<td>MPI_COMM_SIZE</td> +<td>Define how many processes are contained in the communicator</td> +</tr> +<tr> +<td>MPI_Comm_rank</td> +<td>MPI_COMM_RANK</td> +<td>Define the process ID number within the communicator (from 0 to n-1)</td> +</tr> +<tr> +<td>MPI_Finalize</td> +<td>MPI_FINALIZE</td> +<td>Exiting MPI</td> +</tr> +</table> +</li> +<li> +<strong>Collective</strong> +MPI defines this to mean all processes of the communicator must participate in the right order. +</li> +</ul> + +Parallel HDF5 opens a parallel file with a communicator. It returns a file handle to be used for future access to the file. + +All processes are required to participate in the collective Parallel HDF5 API. Different files can be opened using different communicators. + +Examples of what you can do with the Parallel HDF5 collective API: +\li File Operation: Create, open and close a file +\li Object Creation: Create, open, and close a dataset +\li Object Structure: Extend a dataset (increase dimension sizes) +\li Dataset Operations: Write to or read from a dataset +(Array data transfer can be collective or independent.) + +Once a file is opened by the processes of a communicator: +\li All parts of the file are accessible by all processes. +\li All objects in the file are accessible by all processes. +\li Multiple processes write to the same dataset. +\li Each process writes to an individual dataset. + +Please refer to the Supported Configuration Features Summary in the release notes for the current release +of HDF5 for an up-to-date list of the platforms that we support Parallel HDF5 on. + + +\subsection subsec_pintro_create_file Creating and Accessing a File with PHDF5 +The programming model for creating and accessing a file is as follows: +<ol> +<li>Set up an access template object to control the file access mechanism.</li> +<li>Open the file.</li> +<li>Close the file.</li> +</ol> + +Each process of the MPI communicator creates an access template and sets it up with MPI parallel +access information. This is done with the #H5Pcreate call to obtain the file access property list +and the #H5Pset_fapl_mpio call to set up parallel I/O access. + +Following is example code for creating an access template in HDF5: +<em>C</em> +\code + 23 MPI_Comm comm = MPI_COMM_WORLD; + 24 MPI_Info info = MPI_INFO_NULL; + 25 + 26 /* + 27 * Initialize MPI + 28 */ + 29 MPI_Init(&argc, &argv); + 30 MPI_Comm_size(comm, &mpi_size); + 31 MPI_Comm_rank(comm, &mpi_rank); + 32 + 33 /* + 34 * Set up file access property list with parallel I/O access + 35 */ + 36 plist_id = H5Pcreate(H5P_FILE_ACCESS); 37 H5Pset_fapl_mpio(plist_id, comm, info); +\endcode + +<em>Fortran</em> +\code + 23 comm = MPI_COMM_WORLD + 24 info = MPI_INFO_NULL + 25 + 26 CALL MPI_INIT(mpierror) + 27 CALL MPI_COMM_SIZE(comm, mpi_size, mpierror) + 28 CALL MPI_COMM_RANK(comm, mpi_rank, mpierror) + 29 ! + 30 ! Initialize FORTRAN interface + 31 ! + 32 CALL h5open_f(error) + 33 + 34 ! + 35 ! Setup file access property list with parallel I/O access. + 36 ! + 37 CALL h5pcreate_f(H5P_FILE_ACCESS_F, plist_id, error) 38 CALL h5pset_fapl_mpio_f(plist_id, comm, info, error) +\endcode + +The following example programs create an HDF5 file using Parallel HDF5: +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Parallel/ph5_file_create.c">C: file_create.c</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Fortran/H5Parallel/ph5_f90_file_create.F90">F90: file_create.F90</a> + + +\subsection subsec_pintro_create_dset Creating and Accessing a Dataset with PHDF5 +The programming model for creating and accessing a dataset is as follows: +<ol> +<li> +Create or open a Parallel HDF5 file with a collective call to: +#H5Dcreate +#H5Dopen +</li> +<li> +Obtain a copy of the file transfer property list and set it to use collective or independent I/O. +<ul> +<li> +Do this by first passing a data transfer property list class type to: #H5Pcreate +</li> +<li> +Then set the data transfer mode to either use independent I/O access or to use collective I/O, with a call to: #H5Pset_dxpl_mpio + +Following are the parameters required by this call: +<em>C</em> +\code + herr_t H5Pset_dxpl_mpio (hid_t dxpl_id, H5FD_mpio_xfer_t xfer_mode ) + dxpl_id IN: Data transfer property list identifier + xfer_mode IN: Transfer mode: + H5FD_MPIO_INDEPENDENT - use independent I/O access + (default) + H5FD_MPIO_COLLECTIVE - use collective I/O access +\endcode + +<em>Fortran</em> +\code + h5pset_dxpl_mpi_f (prp_id, data_xfer_mode, hdferr) + prp_id IN: Property List Identifier (INTEGER (HID_T)) + data_xfer_mode IN: Data transfer mode (INTEGER) + H5FD_MPIO_INDEPENDENT_F (0) + H5FD_MPIO_COLLECTIVE_F (1) + hdferr IN: Error code (INTEGER) +\endcode +</li> +<li> +Access the dataset with the defined transfer property list. +All processes that have opened a dataset may do collective I/O. Each process may do an independent +and arbitrary number of data I/O access calls, using: +#H5Dwrite +#H5Dread + +If a dataset is unlimited, you can extend it with a collective call to: #H5Dextend +</li> +</ul> +</li> +</ol> + +The following code demonstrates a collective write using Parallel HDF5: +<em>C</em> +\code + 95 /* + 96 * Create property list for collective dataset write. + 97 */ + 98 plist_id = H5Pcreate (H5P_DATASET_XFER); 99 H5Pset_dxpl_mpio (plist_id, H5FD_MPIO_COLLECTIVE); + 100 + 101 status = H5Dwrite (dset_id, H5T_NATIVE_INT, memspace, filespace, + 102 plist_id, data); +\endcode + +<em>Fortran</em> +\code + 108 ! Create property list for collective dataset write + 109 ! + 110 CALL h5pcreate_f (H5P_DATASET_XFER_F, plist_id, error) 111 CALL h5pset_dxpl_mpio_f (plist_id, H5FD_MPIO_COLLECTIVE_F, error) + 112 + 113 ! + 114 ! Write the dataset collectively. + 115 ! + 116 CALL h5dwrite_f (dset_id, H5T_NATIVE_INTEGER, data, dimsfi, error, & + 117 file_space_id = filespace, mem_space_id = memspace, xfer_prp = plist_id) +\endcode + +The following example programs create an HDF5 dataset using Parallel HDF5: +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/C/H5Parallel/ph5_dataset.c">C: dataset.c</a> +<a href="https://github.com/HDFGroup/hdf5-examples/blob/master/Fortran/H5Parallel/ph5_f90_dataset.F90">F90: dataset.F90</a> + + +\subsubsection subsec_pintro_hyperslabs Hyperslabs +The programming model for writing and reading hyperslabs is: +/li Each process defines the memory and file hyperslabs. +/li Each process executes a partial write/read call which is either collective or independent. + +The memory and file hyperslabs in the first step are defined with the #H5Sselect_hyperslab. + +The start (or offset), count, stride, and block parameters define the portion of the dataset +to write to. By changing the values of these parameters you can write hyperslabs with Parallel +HDF5 by contiguous hyperslab, by regularly spaced data in a column/row, by patterns, and by chunks: + +<table> +<tr> +<td> +\li @subpage IntroParContHyperslab +</td> +</tr> +<tr> +<td> +\li @subpage IntroParRegularSpaced +</td> +</tr> +<tr> +<td> +\li @subpage IntroParPattern +</td> +</tr> +<tr> +<td> +\li @subpage IntroParChunk +</td> +</tr> +</table> + + +<hr> +Navigate back: \ref index "Main" / \ref GettingStarted + +*/ diff --git a/doxygen/dox/LearnBasics1.dox b/doxygen/dox/LearnBasics1.dox index a9b6d0e..53c8e0a 100644 --- a/doxygen/dox/LearnBasics1.dox +++ b/doxygen/dox/LearnBasics1.dox @@ -642,7 +642,7 @@ See the programming example for an illustration of the use of these calls. \subsection subsecLBDsetCreateContent File Contents The contents of the file dset.h5 (dsetf.h5 for FORTRAN) are shown below: <table> -<caption>Contents of dset.h5 ( dsetf.h5)</caption> +<caption>Contents of dset.h5 (dsetf.h5)</caption> <tr> <td> \image html imgLBDsetCreate.gif diff --git a/doxygen/img/pchunk_figa.gif b/doxygen/img/pchunk_figa.gif Binary files differnew file mode 100644 index 0000000..90b49c0 --- /dev/null +++ b/doxygen/img/pchunk_figa.gif diff --git a/doxygen/img/pchunk_figb.gif b/doxygen/img/pchunk_figb.gif Binary files differnew file mode 100644 index 0000000..c825fc3 --- /dev/null +++ b/doxygen/img/pchunk_figb.gif diff --git a/doxygen/img/pchunk_figc.gif b/doxygen/img/pchunk_figc.gif Binary files differnew file mode 100644 index 0000000..9975a87 --- /dev/null +++ b/doxygen/img/pchunk_figc.gif diff --git a/doxygen/img/pchunk_figd.gif b/doxygen/img/pchunk_figd.gif Binary files differnew file mode 100644 index 0000000..45da389 --- /dev/null +++ b/doxygen/img/pchunk_figd.gif diff --git a/doxygen/img/pcont_hy_figa.gif b/doxygen/img/pcont_hy_figa.gif Binary files differnew file mode 100644 index 0000000..1417d17 --- /dev/null +++ b/doxygen/img/pcont_hy_figa.gif diff --git a/doxygen/img/pcont_hy_figb.gif b/doxygen/img/pcont_hy_figb.gif Binary files differnew file mode 100644 index 0000000..a3b637b --- /dev/null +++ b/doxygen/img/pcont_hy_figb.gif diff --git a/doxygen/img/pcont_hy_figc.gif b/doxygen/img/pcont_hy_figc.gif Binary files differnew file mode 100644 index 0000000..91bab7d --- /dev/null +++ b/doxygen/img/pcont_hy_figc.gif diff --git a/doxygen/img/pcont_hy_figd.gif b/doxygen/img/pcont_hy_figd.gif Binary files differnew file mode 100644 index 0000000..2836b4f --- /dev/null +++ b/doxygen/img/pcont_hy_figd.gif diff --git a/doxygen/img/ppatt_figa.gif b/doxygen/img/ppatt_figa.gif Binary files differnew file mode 100644 index 0000000..5c86c93 --- /dev/null +++ b/doxygen/img/ppatt_figa.gif diff --git a/doxygen/img/ppatt_figb.gif b/doxygen/img/ppatt_figb.gif Binary files differnew file mode 100644 index 0000000..fe4e350 --- /dev/null +++ b/doxygen/img/ppatt_figb.gif diff --git a/doxygen/img/ppatt_figc.gif b/doxygen/img/ppatt_figc.gif Binary files differnew file mode 100644 index 0000000..aca8ef9 --- /dev/null +++ b/doxygen/img/ppatt_figc.gif diff --git a/doxygen/img/ppatt_figd.gif b/doxygen/img/ppatt_figd.gif Binary files differnew file mode 100644 index 0000000..e6c55c0 --- /dev/null +++ b/doxygen/img/ppatt_figd.gif diff --git a/doxygen/img/preg_figa.gif b/doxygen/img/preg_figa.gif Binary files differnew file mode 100644 index 0000000..0929bf4 --- /dev/null +++ b/doxygen/img/preg_figa.gif diff --git a/doxygen/img/preg_figb.gif b/doxygen/img/preg_figb.gif Binary files differnew file mode 100644 index 0000000..33e57fc --- /dev/null +++ b/doxygen/img/preg_figb.gif diff --git a/doxygen/img/preg_figc.gif b/doxygen/img/preg_figc.gif Binary files differnew file mode 100644 index 0000000..a4f98ff --- /dev/null +++ b/doxygen/img/preg_figc.gif diff --git a/doxygen/img/preg_figd.gif b/doxygen/img/preg_figd.gif Binary files differnew file mode 100644 index 0000000..fe345fb --- /dev/null +++ b/doxygen/img/preg_figd.gif diff --git a/examples/CMakeTests.cmake b/examples/CMakeTests.cmake index 30f73c4..e2cd826 100644 --- a/examples/CMakeTests.cmake +++ b/examples/CMakeTests.cmake @@ -117,8 +117,8 @@ if (H5_HAVE_PARALLEL AND HDF5_TEST_PARALLEL AND NOT WIN32) add_test (NAME MPI_TEST_EXAMPLES-${parallel_example} COMMAND ${MPIEXEC_EXECUTABLE} ${MPIEXEC_NUMPROC_FLAG} ${NUMPROCS} ${MPIEXEC_PREFLAGS} $<TARGET_FILE:${parallel_example}> ${MPIEXEC_POSTFLAGS}) else () add_test (NAME MPI_TEST_EXAMPLES-${parallel_example} COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=${MPIEXEC_EXECUTABLE};${MPIEXEC_NUMPROC_FLAG};${NUMPROCS};${MPIEXEC_PREFLAGS};$<TARGET_FILE:${parallel_example}>;${MPIEXEC_POSTFLAGS}" - -D "TEST_ARGS:STRING=" + -D "TEST_PROGRAM=${MPIEXEC_EXECUTABLE}" + -D "TEST_ARGS:STRING=${MPIEXEC_NUMPROC_FLAG};${NUMPROCS};${MPIEXEC_PREFLAGS};$<TARGET_FILE:${parallel_example}>;${MPIEXEC_POSTFLAGS}" -D "TEST_EXPECT=0" -D "TEST_SKIP_COMPARE=TRUE" -D "TEST_OUTPUT=${parallel_example}.out" diff --git a/java/examples/datasets/CMakeLists.txt b/java/examples/datasets/CMakeLists.txt index 6ed03ca..7542e8e 100644 --- a/java/examples/datasets/CMakeLists.txt +++ b/java/examples/datasets/CMakeLists.txt @@ -80,7 +80,7 @@ endforeach () if (BUILD_TESTING AND HDF5_TEST_EXAMPLES AND HDF5_TEST_SERIAL) get_property (target_name TARGET ${HDF5_JAVA_JNI_LIB_TARGET} PROPERTY OUTPUT_NAME) - set (CMD_ARGS "-Dhdf.hdf5lib.H5.loadLibraryName=${target_name}$<$<CONFIG:Debug>:${CMAKE_DEBUG_POSTFIX}>;") + set (CMD_ARGS "-Dhdf.hdf5lib.H5.loadLibraryName=${target_name}$<$<OR:$<CONFIG:Debug>,$<CONFIG:Developer>>:${CMAKE_DEBUG_POSTFIX}>;") set (last_test "") foreach (example ${HDF_JAVA_EXAMPLES}) diff --git a/tools/test/h5diff/CMakeTests.cmake b/tools/test/h5diff/CMakeTests.cmake index 7e437af..ccb9380 100644 --- a/tools/test/h5diff/CMakeTests.cmake +++ b/tools/test/h5diff/CMakeTests.cmake @@ -422,8 +422,8 @@ add_test ( NAME MPI_TEST_H5DIFF-${resultfile} COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=${MPIEXEC_EXECUTABLE};${MPIEXEC_NUMPROC_FLAG};${MPIEXEC_MAX_NUMPROCS};${MPIEXEC_PREFLAGS};$<TARGET_FILE:ph5diff${tgt_file_ext}>;${MPIEXEC_POSTFLAGS}" - -D "TEST_ARGS:STRING=${ARGN}" + -D "TEST_PROGRAM=${MPIEXEC_EXECUTABLE}" + -D "TEST_ARGS:STRING=${MPIEXEC_NUMPROC_FLAG};${MPIEXEC_MAX_NUMPROCS};${MPIEXEC_PREFLAGS};$<TARGET_FILE:ph5diff${tgt_file_ext}>;${MPIEXEC_POSTFLAGS};${ARGN}" -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/PAR/testfiles" -D "TEST_OUTPUT=${resultfile}.out" -D "TEST_EXPECT=0" diff --git a/tools/test/h5dump/CMakeTests.cmake b/tools/test/h5dump/CMakeTests.cmake index 0ae7bbd..cdc3be8 100644 --- a/tools/test/h5dump/CMakeTests.cmake +++ b/tools/test/h5dump/CMakeTests.cmake @@ -580,7 +580,7 @@ ) add_test ( NAME H5DUMP-${resultfile}-output-cmp - COMMAND ${CMAKE_COMMAND} -E compare_files --ignore-eol ${resultfile}.txt ${resultfile}.exp + COMMAND ${CMAKE_COMMAND} -E compare_files ${CMAKE_IGNORE_EOL} ${resultfile}.txt ${resultfile}.exp ) set_tests_properties (H5DUMP-${resultfile}-output-cmp PROPERTIES DEPENDS H5DUMP-${resultfile} @@ -645,7 +645,7 @@ ) add_test ( NAME H5DUMP-${resultfile}-output-cmp - COMMAND ${CMAKE_COMMAND} -E compare_files --ignore-eol ${resultfile}.txt ${resultfile}.exp + COMMAND ${CMAKE_COMMAND} -E compare_files ${CMAKE_IGNORE_EOL} ${resultfile}.txt ${resultfile}.exp ) set_tests_properties (H5DUMP-${resultfile}-output-cmp PROPERTIES DEPENDS H5DUMP-${resultfile} @@ -653,7 +653,7 @@ ) add_test ( NAME H5DUMP-${resultfile}-output-cmp-ddl - COMMAND ${CMAKE_COMMAND} -E compare_files --ignore-eol ${ddlfile}.txt ${ddlfile}.exp + COMMAND ${CMAKE_COMMAND} -E compare_files ${CMAKE_IGNORE_EOL} ${ddlfile}.txt ${ddlfile}.exp ) set_tests_properties (H5DUMP-${resultfile}-output-cmp-ddl PROPERTIES DEPENDS H5DUMP-${resultfile}-output-cmp @@ -699,7 +699,7 @@ ) add_test ( NAME H5DUMP-output-cmp-${resultfile} - COMMAND ${CMAKE_COMMAND} -E compare_files --ignore-eol ${resultfile}.txt ${resultfile}.exp + COMMAND ${CMAKE_COMMAND} -E compare_files ${CMAKE_IGNORE_EOL} ${resultfile}.txt ${resultfile}.exp ) set_tests_properties (H5DUMP-output-cmp-${resultfile} PROPERTIES DEPENDS H5DUMP-output-${resultfile} diff --git a/tools/test/misc/CMakeTestsClear.cmake b/tools/test/misc/CMakeTestsClear.cmake index 5e307aa..a554972 100644 --- a/tools/test/misc/CMakeTestsClear.cmake +++ b/tools/test/misc/CMakeTestsClear.cmake @@ -99,6 +99,10 @@ -D "TEST_REFERENCE=${resultfile}.ddl" -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) + if (last_test) + set_tests_properties (H5CLEAR_CMP-${testname} PROPERTIES DEPENDS ${last_test}) + endif () + set (last_test "H5CLEAR_CMP-${testname}") endif () endmacro () @@ -117,6 +121,10 @@ -D "TEST_ERRREF=${resultfile}.err" -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) + if (last_test) + set_tests_properties (H5CLEAR_CMP-${testname} PROPERTIES DEPENDS ${last_test}) + endif () + set (last_test "H5CLEAR_CMP-${testname}") endif () endmacro () |