| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug Fix
Description:
The "dirty" flag for symbol table entries and symbol table nodes was not
being cleared when they were flushed to the file, causing lots of extra
metadata I/O.
Solution:
Reset the symbol table entry & nodes' flags when thy are flushed to disk.
This reduces the number of I/O operations which hit the disk for my test
program from 83 to 53 (i.e. from 393 to 53, overall).
Platforms tested:
Solaris 2.7 (arabica) w/FORTRAN & FreeBSD 4.5 (sleipnir) w/C++
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Tidy up
Description:
Old version showed tons of output even if MPI_Offset is too small
to support multiple GB sized files and destined to fail.
Output is pretty confusing.
Solution:
Prints the signness and size of MPI_Offset for information.
Skipped tests if MPI_Offset is not big enough to support the file
sizes.
Platforms tested:
modi4, eirene, burrwhite (all parallel).
|
|
|
|
|
|
|
|
|
|
|
| |
Add Report Generator
Description:
This is a generator for ASCII and Excel(tm)(c) reports generated by
the pio_perf benchmark we run. There are instructions at the top of
the file on how to run the program and the input format it expects,
etc.
Platforms tested:
Linux
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Code cleanup/bug fix
Description:
The "metadata accumulator" cache in the library (which is designed to catch
small metadata writes/reads and bundle them together into larger I/O
buffers) was incorrectly detecting the important case of metadata pieces
being written sequentially to the file, adjoining but not overlapping.
Additionally, the metadata accumulator was not being used to cache data
read in from disk, only caching writes.
Solution:
Fix accumulator to correctly cache adjoining metadata writes and also to
cache metadata read from disk.
Between these two fixes, the number of I/O requests which resulted in actual
reads/writes to the filesystem dropped from 393 requests to 82. :-)
Platforms tested:
Solaris 2.7 (arabica) w/FORTRAN & FreeBSD 4.5 (sleipnir) w/C++
|
|
|
|
|
|
|
|
|
|
|
| |
Purpose:
Maintenance
Description:
User reported a spelling error (bug 686).
Solution:
Fixed spelling
Platforms tested:
N/A
|
|
|
|
|
|
|
|
|
|
| |
Folded in the feature Bill added to v1.5.
We can now set the MPI_Info object to more than one key/value
pairing. By setting the HDF5_MPI_INFO environment variable to a
semicolon separated list of "key=value" pairs, we can set the
MPI_Info variable to them.
Platforms tested:
modi4, eirene, burrwhite, all PP.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
New feature
Description:
pio_perf.c:
per_engine.c:
folded in the new feature from v1.5.
New feature added is the interleaved I/O performance test.
Only POSIX interface is implemented for now. The MPIO and PHDF5
will be added later.
pio_perf.h:
Added a few macros to print rank and size of MPI_COMM_WORLD in
a unifed style.
Platforms tested:
modi4, eirene, burrwhite
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Test Bug Fix
Description:
Under certain [obscure] circumstances, an object header would get paged out
of the metadata cache, and when it was accessed again and brought back into
the cache, and immediately had additional metadata added to it (an
attribute, usually, or perhaps adding an object to a group), and needed to
be extended with a continuation message, but there was no room in any
existing object header chunks for the continuation message and an existing
object header message needed to be moved to the new object header chunk (I
told you it was obscure :-), the object header message moved to the new
chunk (not the new metadata being added) would get corrupted. *whew* :-)
Solution:
Actually copy the "raw" object header message information of the object
header message being moved to the new chunk, instead of relying on the
"native" object header message information being re-encoded when the object
header is flushed. This is because when an object header is paged out of
the metadata cache and subsequently brought back in, the "native"
information pointer in memory is reset to NULL and only the "raw"
information exists.
[Actually, this additional testing doesn't trigger the bug, which needs
_lots_ of objects to be created and accessed, but it does execise the
object header continuation code more than other tests in the library.]
Platforms tested:
Solaris 2.7 (arabica) & FreeBSD 4.5 (sleipnir)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Code Bug Fix
Description:
Under certain [obscure] circumstances, an object header would get paged out
of the metadata cache, and when it was accessed again and brought back into
the cache, and immediately had additional metadata added to it (an
attribute, usually, or perhaps adding an object to a group), and needed to
be extended with a continuation message, but there was no room in any
existing object header chunks for the continuation message and an existing
object header message needed to be moved to the new object header chunk (I
told you it was obscure :-), the object header message moved to the new
chunk (not the new metadata being added) would get corrupted. *whew* :-)
Solution:
Actually copy the "raw" object header message information of the object
header message being moved to the new chunk, instead of relying on the
"native" object header message information being re-encoded when the object
header is flushed. This is because when an object header is paged out of
the metadata cache and subsequently brought back in, the "native"
information pointer in memory is reset to NULL and only the "raw"
information exists.
Platforms tested:
Solaris 2.7 (arabica) & FreeBSD 4.5 (sleipnir)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Document Bug Fix
Description:
Under certain [obscure] circumstances, an object header would get paged out
of the metadata cache, and when it was accessed again and brought back into
the cache, and immediately had additional metadata added to it (an
attribute, usually, or perhaps adding an object to a group), and needed to
be extended with a continuation message, but there was no room in any
existing object header chunks for the continuation message and an existing
object header message needed to be moved to the new object header chunk (I
told you it was obscure :-), the object header message moved to the new
chunk (not the new metadata being added) would get corrupted. *whew* :-)
Solution:
Actually copy the "raw" object header message information of the object
header message being moved to the new chunk, instead of relying on the
"native" object header message information being re-encoded when the object
header is flushed. This is because when an object header is paged out of
the metadata cache and subsequently brought back in, the "native"
information pointer in memory is reset to NULL and only the "raw"
information exists.
Platforms tested:
Solaris 2.7 (arabica) & FreeBSD 4.5 (sleipnir)
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug Fix
Description:
C++ uses the "off_t" type for external files as well. I'm assuming
that there's going to be a problem with 4 byte off_ts and 8 byte
off_ts in the C++ code as well. I compiled everything on Linux and it
worked, but I don't think we have a check for this bug in the library
yet...
Platforms tested:
Linux
|
|
|
|
|
|
|
|
|
|
|
| |
Purpose:
Maintenance
Description:
Many F90 compilers were not happy about character*(*) declarations.
Solution:
Used F90 character(len=*) declarations.
Platforms tested:
Solaris 2.7 and Linux 2.4
|
|
|
|
|
|
|
|
|
|
|
| |
Purpose:
Code cleanup
Description:
Many F90 compilers were not happy about character*(*) declarations.
Solution:
Used F90 character(len=*) declarations.
Platforms tested:
Solaris 2.7 and Linux 2.4
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug Fix
Description:
On Linux 2.4 kernel, we need to check for Linux LFS support. There
was a failure in the Fortran code when we tried to pass a 4 byte
off_t variable to a function which expected an 8 byte off_t. This is
due to there being no check for the LFS support in the Fortran code.
Solution:
Added the check for Linux LFS support.
Platforms tested:
Elena will test on Linux platform...
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Show IO API types selected. (Changed the default setting algorithm
slightly.)
Solution:
[details about the changes, algorithm, etc...]
[Please as detail as you can since your own explanation is
better than others guessing it from the code.]
Platforms tested:
[machines you have tested the changed version. This is absolute
important. Test it out on at least two or three different platforms
such as Big-endian-32bit (SUN/IRIX), little-endian-32(LINUX) and
64-bit (IRIX64/UNICOS/DEC-ALPHA) would be good.]
|
|
|
|
|
|
|
| |
Renamed pio_info_g as h5_io_info_g to better reflect its
general purpose.
Platforms tested:
eirene(pp)
|
|
|
|
|
|
|
|
|
| |
Sync with v1.5 changes.
(Including the H5_WANT_H5_V1_4_COMPAT code is okay since it will never
be true in v1.4)
Did another Dependencies regeneration too.
Platforms tested:
eirene(pp)
|
|
|
|
|
|
| |
updated the Dependencies file
Platforms tested:
no test.
|
|
|
|
|
|
| |
Sync it with the v1.5
Platforms tested:
eirene(pp)
|
|
|
|
|
|
| |
Sync it with the v1.5 copy.
Platforms tested:
eirene(pp);
|
|
|
|
|
|
|
|
| |
Folded recent changes of v1.5 to v1.4.
(Added feature to print bench test parameters/options.
Fixed pio_info_g duplicated declarations.)
Platforms tested:
eirene(pp)
|
| |
|
|
|
|
|
|
|
|
|
| |
feature
Description:
Setup a macro, H5_HAVE_NOFILL, to indicate if Dataset no fill feature
is supported. If not, --no-fill is an invalid option.
Platforms tested:
modi4.
|
|
|
|
|
|
|
|
|
| |
Bug fix
Description:
Fix the POSIX read/write part to check the return code of
Seek/read/write correctly.
Platforms tested:
LLNL SP
|
|
|
|
|
|
|
|
|
|
| |
Features.
Description:
print library version information in help page too.
Specify the nofill feature supported in v1.5 only.
Print the values of the KB, MB and GB in case a user wants to see them.
Platforms tested:
modi4
|
|
|
|
|
|
|
|
|
| |
Feature.
Description:
Will print standard library name if program name is not given
for the print_version().
Platforms tested:
modi4
|
|
|
|
|
|
|
|
|
|
|
| |
Purpose:
update project file
Description:
forget updating dset_cpp and dset_cppdll in order to erase linking errors.
Solution:
update it
Platforms tested:
windows 2000
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Option Update
Description:
Updated the options so that it takes the following:
--api=AL -A AL where AL is a comma separated list of the values
"posix", "mpiio", and "phdf5". You can run any mixture of them
you wish.
--debug=DL -D DL where DL is a comma separated list of values
[1-4], r, and t. You can run any mixture of them.
Platforms tested:
Linux-pp
|
|
|
|
|
|
|
|
|
|
|
|
| |
Purpose:
update install_windows.txt
remove hdf4-related stuff in the install_windows.txt
modify the this file to reflect the retirement of HAVE_*** in HDF5 configuration process.
Description:
1) hdf4 related tools have been moved out of HDF5 CVS tree, The install doc should reflect this.
2) Albert finished macro changes from HAVE_*** to H5_HAVE_***. The doc should reflect this.
Solution:
Platforms tested:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Merged in a bunch of changes Quincey made. Added some of mine
here and there.
Description:
Below is Quincey's summary.
The -r and -t changes were changed to "-D r" and "-D t" as they are
of the debug purposes. Need to save option letters for hundreds of
future features.
The nofill for chunk storage is not supported since v1.4 does not have
the feature.
- Added option (-r) to display the throughput when doing I/O on just the
dataset data. This is somewhat redundant for the posix I/O functions
and MPI-I/O, but it's useful for HDF5.
- Added option (-t) to display the times along with the throughputs.
- Added options (-a <size> and -T <size>) to align objects in the HDF5 file.
These are ignored for posix and MPI-I/O benchmarks.
- Added option (-c) to create the HDF5 datasets using chunked storage.
The chunks are created with the same size as the buffer size used for
I/O, so all I/O to the dataset is chunk-aligned.
- Changed code to allow 0-sized datasets to be created. This is useful
when measuring the overhead for creating lots of datasets in HDF5.
- Cleaned up code to eliminate warnings and modularize things better.
Platforms tested:
modi4 (pp)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The term RAWIO was confusing (lacking a better term).
It was intended to represent the "raw" way of doing I/O such that
an application may use the open/read/write interface (actually Posix)
or the parallel file system's native API (e.g. gpfs_open).
It was too confusing to mean multiple things.
Solution:
Split the RAW IO into two different IO API, POSIX and NATIVE.
Posix is a standard that some applications that have used it for
the serial version, may want to continue using it in the parallel
environment.
Changed the output and variable/macro/what-not names from RAWxxx
to POSIXxxx. No algorithm changes.
Platforms tested:
modi4(pp), eirene(serial)
|
|
|
|
|
|
|
|
|
|
| |
Code Cleanup
Description:
Compilers moaned about those unused mpi_err variables.
Solution:
Removed them for now. Will make it cleaner later.
Platforms tested:
modi4(pp), eirene.
|
|
|
|
|
|
|
|
|
|
|
| |
Code cleanup
Description:
Guard against getting into metadata broadcast in write routine and improve
some error handling.
Platforms tested:
IRIX64 6.5 (modi4)
|
|
|
|
|
|
|
|
|
| |
Feature
Description:
moved the routines of setting up and dumping MPI-info object to
test library so that it is avaiable for all tests too.
Platforms tested:
modi4(pp), eirene (serial)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Document Bug fix/Code improvement below:
Description:
Currently, the chunk data allocation routine invoked to allocate space for
the entire dataset is inefficient. It writes out each chunk in the dataset,
whether it is already allocated or not. Additionally, this happens not
only when it is created, but also anytime it is opened for writing, or the
dataset is extended. Worse, there's too much parallel I/O syncronization,
which slows things down even more.
Solution:
Only attempt to write out chunks that don't already exist. Additionally,
share the I/O writing between all the nodes, instead of writing everything
with process 0. Then, only block with MPI_Barrier if chunks were actually
created.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug fix/Code improvement.
Description:
Currently, the chunk data allocation routine invoked to allocate space for
the entire dataset is inefficient. It writes out each chunk in the dataset,
whether it is already allocated or not. Additionally, this happens not
only when it is created, but also anytime it is opened for writing, or the
dataset is extended. Worse, there's too much parallel I/O syncronization,
which slows things down even more.
Solution:
Only attempt to write out chunks that don't already exist. Additionally,
share the I/O writing between all the nodes, instead of writing everything
with process 0. Then, only block with MPI_Barrier if chunks were actually
created.
Platforms tested:
IRIX64 6.5 (modi4)
|
|
|
|
|
|
| |
corrected a typo in a printf statement.
Platforms tested:
modi4
|
|
|
|
|
|
|
|
|
|
| |
feature
Description:
Added a global MPI_Info object to be used by all applicable IO API (MPI-IO
and PHDF5). Added a function to set up the info object according to
$HDF5_MPI_INFO if set.
Platforms tested:
LLNL Blue/frost
|
|
|
|
|
|
|
| |
Removed some local macro definition, instead use the macros defined
by the hdf5 library configure.
Platforms tested:
LLNL blue
|
|
|
|
|
|
|
| |
Corrected typos in the FUNC_ENTER macros of H5FD_sec2_flush and
H5FD_log_flush.
Platforms tested:
modi4 (just tested it compiled fine.)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Code cleanup/Performance enhancement
Description:
The code to extend the file size in H5FD_mpio_flush is getting run even when
the file size doesn't change. Also, it's sort of sidestepping MPI-I/O when
extending the file, instead of using MPI-I/O features to set the file's size
Solution:
Only extend the file's size when the allocated size has increased. Also
use MPI_File_set_size() to change the file's size. (Including barrier).
Platforms tested:
IRIX64 6.5 (modi4)
|
|
|
|
| |
Document Bug Fix
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug Fix
Description:
When H5Freopen is called, the file to reopen's 'intent' (read/write
permissions, etc) is not being copied to the new file's 'intent'
information.
Solution:
Copy it. :-)
Platforms tested:
IRIX64 6.5 (modi4)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug fix
Description:
Calling MPI_Get_count needs to be done with the same MPI type as was used
for the transfer and we are always using MPI_BYTE, even when a different
MPI type was used for the transfer.
Solution:
Only query MPI_Get_count with MPI_BYTE when we really used MPI_BYTE for the
transfer. Wait for later to query MPI_Get_count with other MPI types.
Platforms tested:
IRIX64 6.5 (modi4)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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)
|
|
|
|
| |
Document performance enhancement
|
|
|
|
|
|
|
| |
Dumb bug fix. Forgot a debug printing statement.
Removed it.
Platforms tested:
Burrwhite (linux 2.4) parallel.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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:
LLNL blue/frost.
|