Performance enhancement
Description:
Doing an MPI_File_sync() just before a file is closed causing a large
performance loss.
Solution:
Add flag to MPI file driver to avoid performance the MPI_File_sync() when
the flag is set before a call to H5F_flush().
Platforms tested:
IRIX64 6.5 (modi4)
Bug fix
Description:
Was not able to handle data size (file size) larger than 32bits.
Was using long, which is only 4 bytes big in SP, thus overflowing
into negative when trying to address 2GB or larger.
Solution:
Changed those variables involved in file size/offset calculation
to type off_t. (If a certain system/compiler has off_t defined
as 4 bytes, it can't write to file size larger than 2GB anyway.)
Note that the lseek of SP with -D_LARGE_FILE still fails for
offset larger than 2GB (works for 2GB). That has to be fixed
soon.
Platforms tested:
burrwhite (linux 2.4) and modi4 parallel.
Bug Fix
Description:
Put quotes around some variables so that the shell script doesn't
complain to us about "too many arguements" for a test.
Platforms tested:
Linux
Bug Fix
Description:
Placed quotes around strings which could be empty so that the shell
script doesn't complain to us about "too many arguments for test"
problems.
Platforms tested:
Linux
New Feature
Description:
The VFL flush function is called immediately before a file is closed.
This can cause duplicate syncronization actions to occur, if the VFL
close function also performs them.
Solution:
Added 'closing' parameter to VFL 'flush' operation. This allows the VFL
flush function to bypass operations that will be duplicated within the VFL
close function.
Additionally, use the 'closing' parameter to bypass calls to MPI_File_sync()
when set. Since MPI_File_close() also syncronizes the file, this avoids
the terrible performance hit taken when calling MPI_File_sync() as the file
is closing.
Platforms tested:
IRIX64 6.5 (modi4)
Code cleanup
Description:
The parallel I/O file driver is optimized to only write metadata with one
process (and broadcast the results to the other processes). This is
currently enabled by a separate call to H5FD_mpio_tas_allsame() before
each metadata write to the file. This can easily lead to problems where
the prelude function call is omitted before the actual write code or, in
a threaded environment, lead to race condititions where the value set is
reset before being used.
Solution:
Since we only want to write metadata from one process, key off of the 'type'
parameter (which has information about whether the data being written it
metadata or raw data) to H5FD_mpio_write() as the method for determining
whether to only write from one process or not.
Platforms tested:
IRIX64 6.5 (modi4)
Bug Fix
Description:
Currently, only process 0 is writing attribute data to a file. This is
incorrect, because the raw data for attributes is cached in memory until
the object header is written and other processes are not able to read the
correct attribute information.
Solution:
Have all processes participate in writing the attribute data.
Platforms tested:
IRIX64 6.5 (modi4)
New Feature
Description:
Currently, only process 0 writes metadata to disk, leading to a potential
performance bottleneck as the other processors wait for it to catch up.
Solution:
Rotate the metadata responsibilities among all processes, speading out the
work.
Platforms tested:
IRIX64 6.5 (modi4)
Small code cleanup/improvement
Description:
Query the MPI rank only once and store it in the file structure for each
process.
Platforms tested:
IRIX64 6.5 (modi4)
Purpose:
Update h5dread/write_f parameters
Description:
fortran/h5d_FORTRAN.html
h5dread/write_f -- in the 'reference' versions, which yesterday's
revisions missed):
Added new overloading to dims parameter description.
Corrected prior dims type and noted that it is deprecated and
will be removed in 1.6.
fortran/h5a_FORTRAN.html
Updated "Last modified" tag to reflect yesterday's revisions.
Platforms tested:
IE 5
Name Change
Description:
Changed the macro's name from "MILLISECOND" to "MICROSECOND" since,
as Quincey pointed out, that's what it is ;).
Platforms tested:
Linux
Purpose:
Bugfix -- Closes#702
Description:
Commented out references to and descriptions of unimplemented
H5S functions. Particularly in the UG document, Dataspaces.html.
H5Sopen H5Slock H5Ssubspace
H5Scommit H5Sselect_op H5Ssubspace_name
H5Sis_subspace H5Sselect_order H5Ssubspace_location
Added explanatory "Note to developers" in comments near top of
Dataspaces.html.
Platforms tested:
IE 5
Bug fix, feature
Description:
Added code to time pure MPI_File_write_xxx and read_xxx routines.
Moved the setting of the timer_g to when timer is created (new)
and destroyed.
Platforms tested:
modi4pp
Modification
Description:
Put some of the variables into the global space so that random
functions can access them. (The output and timer variables which
point to the output file and timer resp.)
Placed the debug level 4 prints into the timer module so that it's
easier to automatically put timer start/stop printfs for new timers
which are created.
Added timers for MPI Time calls (called HDF5_MPI_WRITE and
HDF5_MPI_READ).
Platforms tested:
Linux
Purpose:
Update description of h5dread/write_f and h5aread/write_f dims parameter.
Description:
h5dread/write_f, h5aread/write_f
Added new overloading to dims parameter description.
Noted that prior dims type is deprecated and will be removed in 1.6.
Platforms tested:
IE 5
Purpose:
Maintenance
Description:
Added information about Parallel Fortran Support for HP-UX 11.00 SysV
and write/read overloaded subroutines (bug #670)
Purpose:
bug fix
Description:
In H5TB.c, previously use an unsigned variable to represent address difference that is maybe a negative value.
This will cause a potential bug in the future when this section of code is run.
Solution:
use H5F_address_cmp macro to compare two addresses.
Platforms tested:
linux 2.2.18
Bug Fix
Description:
There was a duplicate declaration of print_indent() in the header and
in the source files.
Solution:
Removed the public declaration and made the function static again.
Platforms tested:
Arabica
Purpose:
Bugfixes -- Fixes#657.
Addresses #720 (but does not complete it).
Description:
H5Pset_fapl_split: Added note re checking on use of this driver,
i.e., that H5Pget_driver returns H5FD_MULTI.
Fixes Bug #657.
Minor copy edits, including some addressed in Bug #720.
Platforms tested:
IE 5
Removed unused code that is related to inline issue.
hdf5 C source now uses H5_inline for the non-standard
inline feature. No need to undefine/redefine the symbol
inline itself.
Platforms tested:
eirene.
Purpose:
Elaboration on a struct field
Description:
H5Gget_objinfo: Added caveats regarding 'fileno' field in
H5G_stat_t struct.
Platforms tested:
IE 5
Code cleanup
Description:
Remove an extraneous data structure for tracking the location of a
hyperslab iterator when walking through regular hyperslab selections.
Platforms tested:
FreeBSD 4.5 (sleipnir)
Purpose:
Bug#670 fix
Description:
dims parameter to the h5dwrite_f, h5dread_f, h5awrite_f and h5aread_f
subroutines was declared as INTEGER array of size 7 (max number of dimensions
in Fortran). Users could not use the same buffer dims as an argument to
the h5screate_simple_f subroutine since it should be an array of size = RANK
and type INTEGER(HSIZE_T).
Solution:
Overload subroutines with dims parameter to be assumed size array of
INTEGER(HSIZE_T) type for backward compatibility.
Subroutine with the INTEGER dims argument should be depricated in 1.6 release
Platforms tested:
Windows, Solaris2.7, IRIX64-6.5
Purpose:
1 new function; 3 revised functions; 2 bugfixes; copy edits
Solution:
H5Tget_member_index: Added this new function.
H5Tget_member_name: Revised, based on lessons learned with
H5Tget_member_index.
H5Tget_nmembers: Revised to indicate that function works for both
compound and enumeration datatypes.
--> Fixes Bug# 747.
Cross-listed H5Tget_nmembers, H5Tget_member_index, and
H5Tget_member_name under both compound and enum datatypes,
as they work for both.
H5Tset_tag: Corrected tag description (it is descriptive, uniqueness
is not required).
Corrected several spelling errors.
--> Partially fixes Bug# 760 (though just for this file *sigh*).
Platforms tested:
IE 5
Purpose:
added more tests to the H5set_extent function
Description:
there was a bug in the H5S_select_fill call when the fill value was not defined
added 2 more set of tests that call H5set_extent without the fill value being defined
there are now 4 sets of tests:
Test H5Dset_extent with chunks on the raw data cache, with and without fill value
Test H5Dset_extent with chunks written to file (b-tree routines), with and without fill value
Platforms tested:
w2000
linux
Code cleanup
Description:
Update the API tracing information
Platforms tested:
Linux 2.2 (eirene) with gcc 2.95.2 and Solaris 2.6 (baldric) with gcc 2.8.1