HDF5 version 1.4.4-pre5 currently under development ============================================================================== INTRODUCTION This document describes the differences between HDF5-1.4.3 and HDF5-1.4.3_post0, and contains information on the platforms tested and known problems in HDF5-1.4.3. For more details check the HISTORY.txt file in the HDF5 source. The HDF5 documentation can be found on the NCSA ftp server (ftp.ncsa.uiuc.edu) in the directory: /HDF/HDF5/docs/ For more information look at the HDF5 home page at: http://hdf.ncsa.uiuc.edu/HDF5/ If you have any questions or comments, please send them to: hdfhelp@ncsa.uiuc.edu CONTENTS - New Features - Bug Fixes since HDF5-1.4.3 - Documentation - Platforms Tested - Supported Configuration Features - Known Problems New Features ============ o Configuration ================ o Library ========= o General --------- * Added internal "small data" aggregation, which can reduce the number of actual I/O calls made, improving performance. QAK - 2002/06/05 * Improved internal metadata aggregation, which can reduce the number of actual I/O calls made, improving performance. Additionally, this can reduce the size of files produced. QAK - 2002/06/04 * Improved internal metadata caching, which can reduce the number of actual I/O calls made by a substantial amount, improving performance. QAK - 2002/06/03 * Fill-value's forward-compatibility with 1.5 was added. SLU - 2002/04/11 * A new query function H5Tget_member_index has been added for compound and enumeration data types, to retrieve member's index by name. SLU - 2002/04/05 * Added serial multi-gigabyte file size test. "test/big -h" shows the help page. AKC - 2002/03/29 o APIs ------ * F90 subroutines h5dwrite_f, h5dread_f, h5awrite_f and h5aread_f were overloaded with "dims" argument to be assumed size array of type INTEGER(HSIZE_T). We recommend to use the subroutines with the new type. Module subroutines that accept "dims" as INTEGER array of size 7 will be deprecated in 1.6 release. EIP - 2002/05/06 o Performance ------------- o Parallel Library ================== * Fixed bug in parallel I/O routines where a collective I/O which used MPI derived types, followed by an independent I/O would cause the library to hang. QAK 2002/06/24 * Added environment variable flag to control whether creating MPI derived typed is preferred or not. This can affect performance, depending on which way the MPI-I/O library is optimized for. The default is set to prefer MPI derived types for collective raw data transfers, setting the HDF5_MPI_PREFER_DERIVED_TYPES environment variable to "0" (i.e.: "setenv HDF5_MPI_PREFER_DERIVED_TYPES 0") changes the preference to avoid using then whenever possible. QAK - 2002/06/19 * Changed MPI I/O routines to avoid creating MPI derived types (and thus needing to set the file view) for contiguous selections within datasets, which should result in some performance improvement for those types of selections. QAK - 2002/06/18 * Enable MPI type support for collective I/O to be enabled by default. This can be disabled by setting the HDF5_MPI_OPT_TYPES environment variable to the value "0". QAK - 2002/06/14 * Allow chunks in chunked datasets to be cached when parallel file is opened for read-only access (bug #709). QAK - 2002/06/10 * Changed method for allocating chunked dataset blocks to only allocate blocks that don't already exist, instead of attempting to create all the blocks all the time. This improves performance for chunked datasets. QAK - 2002/05/17 * Allowed the call to MPI_File_sync to be avoided when the file is going to immediately be closed, improving performance. QAK - 2002/05/13 * Allow the metadata writes to be shared among all processes, easing the burden on process 0. QAK - 2002/05/10 o Tools ======= o Support for new platforms and languages ========================================= * Parallel Fortran Library works now on HP-UX B.11.00 Sys V EIP - 2002/05/06 Bug Fixes since HDF5-1.4.3 Release ================================== * Fixed bug in chunking routines where they were using internal allocation free routines, instead of malloc/free, preventing user filters from working correctly. Chunks are now allocated/freed with malloc/free and so should the chunks in user filters. QAK 2002/06/18 * Fixed bug where regular hyperslab selection could get incorrectly transferred when the number of elements in a row did not fit evenly into the buffer provided. QAK 2002/06/12 * Fixed bug (#499) which allowed an "empty" compound or enumerated datatype (one with no members) to be used to create a dataset or committed to a file. QAK - 2002/06/11 * Fixed bug (#777) which allowed a compound datatype to be inserted into itself. QAK - 2002/06/10 * Fixed bug (#789) where creating 1-D dataset region reference caused the library to go into infinite loop. QAK - 2002/06/10 * Fixed bug (#699, fix provided by a user) where a scalar dataspace was written to the file and then subsequently queried with the H5Sget_simple_extent_type function, type was reported H5S_SIMPLE instead of H5S_SCALAR. EIP - 2002/06/04 * Clear symbol table node "dirty" flag when flushing symbol tables to disk, to reduce I/O calls made & improve performance. QAK - 2002/06/03 * Fixed bug where an object's header could get corrupted in certain obscure situations where many objects were created in the file. QAK - 2002/05/31 was not being kept the same as the original file. QAK - 2002/05/14 * Fixed bug where read/write intent in file IDs created with H5Freopen was not being kept the same as the original file. QAK - 2002/05/14 * Fixed bug where selection offsets were not being used when iterating through point and hyperslab selections with H5Diterate(). QAK - 2002/04/29 * Fixed bug where the data for several level deep nested compound & variable-length datatypes used for datasets were getting corrupted when written to the file. QAK - 2002/04/17 * Fixed bug where selection offset was being ignored for certain hyperslab selections when optimized I/O was being performed. QAK - 2002/04/02 * Fixed limitation in h5dumper with object names which reached over 1024 characters in length. We can now handle arbitrarily larger sizes for object names. BW - 2002/03/29 * Fixed bug where variable-length string type doesn't behave as string. SLU - 2002/03/28 * Fixed bug in H5Gget_objinfo() which was not setting the 'fileno' of the H5G_stat_t struct. QAK - 2002/03/27 * Fixed data corruption bug in hyperslab routines when contiguous hyperslab that spans entire dimension and is larger than type conversion buffer is attempted to be read. QAK - 2002/03/26 Documentation ============= Platforms Tested ================ AIX 4.3.3.0 (IBM SP powerpc) xlc 5.0.2.0 mpcc_r 5.0.2.0 xlf 07.01.0000.0002 mpxlf 07.01.0000.0002 AIX 4.3 (IBM SP RS6000) C for AIX Compiler, Version 5.0.2.0 xlf 7.1.0.2 poe 3.1.0.12 (includes mpi) AIX 5.1 xlc 5.0.2.0 xlf 07.01.0000.0002 mpcc_r 5.0.2.0; mpxlf_r 07.01.0000.0002 Cray T3E sn6711 2.0.5.57 Cray Standard C Version 6.5.0.3 Cray Fortran Version 3.5.0.4 Cray SV1 10.0.1.1 Cray Standard C Version 6.5.0.3 Cray Fortran Version 3.5.0.4 FreeBSD 4.5 gcc 2.95.3 g++ 2.95.3 HP-UX B.10.20 HP C HP92453-01 A.10.32.30 HP F90 v2.3 HP-UX B.11.00 HP C HP92453-01 A.11.01.20 HP F90 v2.4 HP-UX B.11.00 SysV HP C HP92453-01 A.11.01.20 HP F90 v2.4 HP MPI [not a product] (03/24/2000) B6060BA IRIX 6.5 MIPSpro cc 7.30 IRIX64 6.5 (64 & n32) MIPSpro cc 7.3.1.2m Linux 2.4.9-31smp gcc 2.95.3 g++ 2.95.3 Intel(R) C++ Version 6.0 Intel(R) Fortran Compiler Version 6.0 Linux 2.2.18smp gcc 2.95.2 gcc 2.95.2 with mpich 1.2.1 g++ 2.95.2 pgf90 3.2-4 OSF1 V5.1 Compaq C V6.4-014 Compaq Fortran V5.5-1877-48BBF gcc version 3.0 for C++ SunOS 5.7 WorkShop Compilers 5.0 98/12/15 C 5.0 (Solaris 2.7) Workshop Compilers 5.0 98/12/15 C++ 5.0 Workshop Compilers 5.0 98/10/25 FORTRAN 90 2.0 Patch 107356-04 SunOS 5.8/32 Sun WorkShop 6 update 1 C 5.2 2000/09/11 (Solaris 2.8) Sun WorkShop 6 update 1 Fortran 95 6.1 Patch 109503-07 2001/08/11 Sun WorkShop 6 update 1 C++ 5.2 Patch 109508-04 2001/07/11 SunOS 5.8/64 Sun WorkShop 6 update 1 C 5.2 2000/09/11 (Solaris 2.8) Sun WorkShop 6 update 1 Fortran 95 6.1 Patch 109503-07 2001/08/11 Sun WorkShop 6 update 1 C++ 5.2 Patch 109508-04 2001/07/11 TFLOPS r1.0.4 v4.2.2 i386 pgcc Rel 3.1-4i with mpich-1.2.3 with local modifications IA-32 Linux 2.2.10smpx cc Intel 5.0.1 egcs-2.91.66 IA-64 Linux 2.4.16 ia64 gcc version 2.96 20000731 Intel(R) C++ Itanium(TM) Compiler for the Itanium(TM)-based applications, Version 6.0 Beta, Build 20010905 Windows 2000 (NT5.0) MSVC++ 6.0 DEC Visual Fortran 6.0 Windows NT4.0 MSVC++ 6.0 DEC Visual Fortran 6.0 Windows NT4.0 Code Warrior 6.0 Windows 98 MSVC++ 6.0 DEC Visual Fortran 6.0 Supported Configuration Features Summary ======================================== In the tables below y = tested and supported n = not supported or not tested in this release x = not working in this release ( ) = footnote appears below second table Platform C C F90 F90 C++ Shared zlib Tools parallel parallel libraries (5) Solaris2.7 y y (1) y n y y y y Solaris2.8 64 y n y n y y y y Solaris2.8 32 y y (1) y n y y y y IA-64 y n n n n n y y IRIX6.5 y y (1) n n n y y y IRIX64_6.5 64 y y (2) y y n y y y IRIX64_6.5 32 y y (2) n n n y y y HPUX10.20 y n y n n y y y HPUX11.00 y y y n n y y y HPUX11 SysV y y y y n y y y DECOSF y n y n y y y y T3E y y y y n n y y SV1 y n y n n n y y TFLOPS n y (1) n n n n y y (4) AIX-4.3 SP2 y y y y n n y n AIX-4.3 SP3 y y y y y n y n Win2000 y n y n y (6) y y y Win98 y n y n y (6) y y y WinNT y n y n y (6) y y y WinNT CW y n n n n n y y FreeBSD y n n n y y y y Linux 2.2 y y (1) y n y y y y Linux 2.4 y y (1) n n y y y y Platform 1.2 static- Thread- SRB GASS STREAM- compatibility exec safe VFD Solaris2.7 n x y n n y Solaris2.8 64 n y n n n y Solaris2.8 32 n x y n n y IA-64 n n n n n y IRIX6.5 n x y n n y IRIX64_6.5 64 n x y n y y IRIX64_6.5 32 n x y n y y HPUX10.20 n y n n n y HPUX11.00 n x n n n y HPUX11 SysV n x n n n y DECOSF n y n n n y T3E n y n n n y SV1 n y n n n y TFLOPS n y n n n n AIX-4.3 SP2 n y (3) n n n y AIX-4.3 SP3 n y n n n y Win2000 n y n n n n Win98 n y n n n n WinNT n y n n n n WinNT CW n n n n n n FreeBSD n y y n n y Linux 2.2 n y y n n y Linux 2.4 n y y n n y Footnotes: (1) Using mpich. (2) Using mpt and mpich. (3) When configured with static-exec enabled, tests fail in serial mode. (4) No HDF4-related tools. (5) Shared libraries are provided only for the C library. (6) Exception of (5): DLL is available for C++ API on Windows Known Problems ============== * Datasets or attributes which have a variable-length string datatype are not printing correctly with h5dump and h5ls. * When a dataset with the variable-legth datatype is overwritten, the library can develop memory leaks that cause the file to become unnecessarily large. This is planned to be fixed in the next release. * On the SV1, the h5ls test fails due to a difference between the SV1 printf precision and the printf precision on other platforms. * The h5dump tests may fail to match the expected output in some platforms (e.g. SP2 parallel, Windows) where the error messages directed to "stderr" do not appear in the "right order" with output from stdout. This is not an error. * The --enable-static-exec configure flag fails to compile for HP-UX 11.00 platforms. * The executables are always dynamic on IRIX64 6.5(64 and n32) and IRIX 6.5 even if they are configured with --enable-static-exec. * IRIX 6.5 fails to compile if configured with --enable-static-exec. * The HDF5_MPI_OPT_TYPES optimization code in the parallel HDF5 will cause a hang in some cases when chunked storage is used. This is now set to be off by default. One may turn it on by setting environment variable HDF5_MPI_OPT_TYPES to a non-zero value such as 1. * On IA64 systems one has to use -DIA64 compilation flag to compile h4toh5 and h5toh4 utilites. After configuration step manually modify Makefile in the tools/h4toh4 and tools/h5toh4 directories to add -DIA64 to the compilation flags. * On IA32 and IA64 systems, if you use a compiler other than GCC (such as Intel's ecc or icc compilers), you will need to modify the generated "libtool" program after configuration is finished. On or around line 104 of the libtool file, there are lines which look like: # How to pass a linker flag through the compiler. wl="" change these lines to this: # How to pass a linker flag through the compiler. wl="-Wl,"