| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Code Cleanup
Description:
Removed some compiler warnings.
Solution:
In a few cases, NULL was being returned when a FAIL was supposed to
be returned instead. There were some header files which needed to be
included in a few of the sources. A couple of if-then statements had
assignments in the conditional part. The compiler warned that they
should have extra "()"s around them. Made the code check the values
instead.
Platforms tested:
Linux (parallel) Modi4 (parallel)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Code improvement
Description:
Now that the metadata accumulator is working correctly, the buffer size
tends to get rather large and stay there.
Solution:
Put a throttle on the accumulator buffer to reduce its size back down when
it isn't needed.
Platforms tested:
Solaris 2.7 (arabica) w/FORTRAN & FreeBSD 4.5 (sleipnir) w/C++
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Purpose:
Bug fix (#699), fix provided by a user, approved by Quincey
Description:
When 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.
Solution:
Applied a fix (see bug report 699)
Platforms tested:
Solaris 2.7 and Linux 2.2.18
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Code improvement
Description:
The metadata aggregation code in the library was not terribly smart about
extending contiguous regions of metadata in the file and would not extend
them as far as possible. This causes space in the file to be wasted, also.
Solution:
Be smarter about extending the space used in the file for metadata by
checking whether new metadata blocks allocated in the file are at the end
of the current metadata aggregation region and append them to the metadata
region if so. This has the nice side benefit of reducing the number of
bytes we waste in the file and reducing the size of the file by a small
amount in some cases.
This reduces the number of I/O operations which hit the disk for my test
program from 53 to 19 (i.e. from 393 to 19, overall).
Platforms tested:
Solaris 2.7 (arabica) w/FORTRAN and FreeBSD 4.5 (sleipnir) w/C++
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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++
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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 for the
particular test I was using. :-)
Platforms tested:
Solaris 2.7 (arabica) w/FORTRAN & FreeBSD 4.5 (sleipnir) w/C++
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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)
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Purpose:
Bug Fixing
Description:
In H5FD_family_write and H5FD_family_read, size_t is checked against
hsize_t for overflow, which fails on IA32 architecture machine supporting
large files.
Solution:
Use temporary variable which won't pass the limit of size_t.
Platforms tested:
Linux 2.4(platinum) and IRIX64 6.5(modi4)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Code cleanup
Description:
Broke the FUNC_ENTER macro into several macros, with more specialized
uses (which followup mail will describe). This was designed to move
most/all of the checks which could be done at compile time to that point,
instead of needlessly performing them (over & over :-) at run-time.
This reduces the library's size (and thus staticly linked binaries) and
has a minor speedup effect also.
Platforms tested:
IRIX64 6.5 (modi4) with parallel & FORTRAN enabled, and additional testing
on FreeBSD and Solaris immediately after the checkin.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Code cleanup.
Description:
Took Robb's recent ideas for improving the FUNC_ENTER/FUNC_LEAVE macros
equivalents in the SAF library and adapted them to our library. I added
an additional macro which is equivalent to FUNC_ENTER:
FUNC_ENTER_NOINIT - Has the API tracing code, etc. from FUNC_ENTER but
none of the library or interface initialization code. This is to
be used _only_ for static functions and those which explicitly
cannot have the library or interface initialization code enabled
(like the API termination routines, etc.).
This allowed many more of the functions in the library [but not all yet :-(]
to be wrapped with FUNC_ENTER[_NOINIT]/FUNC_LEAVE pairs.
It also reduced the size of the library and executables (by cutting out a
bunch of code which was never executed), I'll e-mail the exact results when
I've finished editing it.
Platforms tested:
IRIX64 6.5 (modi4)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Purpose:
eliminating the compiler warnings in Windows
Solution:
I am eliminating the compiler warnings in Windows.
the last 2 were:
1)
if((oid_list = H5MM_malloc(oid_count*sizeof(hid_t)))==NULL)
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL,
"memory allocation failed");
D:\disk_w\hdf5\src\H5F.c(2590) : warning C4047: '=' : 'int ' differs in levels
of indirection from 'void *'
on the HGOTO_ERROR call , I replaced the NULL with FAIL
2)
*((float*)d) = *((double*)s);
D:\disk_w\hdf5\src\H5Tconv.c(6426) : warning C4244: '=' : conversion from 'double ' to 'float ', possible loss of data
I added the type cast
*((float*)d) = (float) *((double*)s);
we have now 0 errors 0 warnings on Windows !
Platforms tested:
w2000, linux
|
|
|
|
|
|
|
|
|
|
|
| |
Code cleanup
Description:
Guard against getting into metadata broadcast in write routine and clean
up some error handling.
Platforms tested:
IRIX64 6.5 (modi4)
|
|
|
|
|
|
|
|
|
|
| |
Code cleanup
Description:
Clean up warnings on IRIX64 6.5 (modi4)
Platforms tested:
IRIX64 6.5 (modi4)
|
|
|
|
|
|
|
|
|
|
|
| |
New feature
Description:
Add 'closing' parameter to H5FDflush and VFL "flush" functions, per
http://hdf.ncsa.uiuc.edu/RFC/VFLFlush/VFLFlush.html
Platforms tested:
IRIX64 6.5 (modi4)
|
|
|
|
|
|
|
|
|
|
|
| |
Code cleanup
Description:
Change variable casts to use H5_ASSIGN_OVERFLOW, or check for overflow
before the cast with H5_CHECK_OVERFLOW.
Platforms tested:
FreeBSD 4.5 (sleipnir)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Purpose:
eliminate warnings on win32
Description:
some conversion warnings were being issued
Solution:
added some type casts
Platforms tested:
w2000, linux
changed the HDmemset to include a cast in win32; this was just to eliminate a compiler
warning. probably the macro can also be used in unix
#ifdef WIN32
#define HDmemset(X,C,Z) memset((void*)(X),C,Z)
#else /* WIN32 */
#define HDmemset(X,C,Z) memset(X,C,Z)
#endif /* WIN32 */
the list of previous warnings was
D:\disk_w\hdf5\src\H5FDstdio.c(659) : warning C4244: 'initializing' : conversion from 'unsigned __int64 ' to 'unsigned int ', possible loss of data
D:\disk_w\hdf5\src\H5Fcontig.c(435) : warning C4244: '=' : conversion from 'unsigned __int64 ' to 'unsigned int ', possible loss of data
D:\disk_w\hdf5\src\H5Fcontig.c(497) : warning C4244: '=' : conversion from 'unsigned __int64 ' to 'unsigned int ', possible loss of data
D:\disk_w\hdf5\src\H5Fcontig.c(915) : warning C4244: '=' : conversion from 'unsigned __int64 ' to 'unsigned int ', possible loss of data
D:\disk_w\hdf5\src\H5Fcontig.c(982) : warning C4244: '=' : conversion from 'unsigned __int64 ' to 'unsigned int ', possible loss of data
D:\disk_w\hdf5\src\H5Shyper.c(912) : warning C4244: '=' : conversion from 'unsigned __int64 ' to 'unsigned int ', possible loss of data
D:\disk_w\hdf5\src\H5Shyper.c(995) : warning C4244: '=' : conversion from 'unsigned __int64 ' to 'unsigned int ', possible loss of data
D:\disk_w\hdf5\src\H5Shyper.c(1936) : warning C4244: '=' : conversion from 'unsigned __int64 ' to 'unsigned int ', possible loss of data
D:\disk_w\hdf5\src\H5Shyper.c(2019) : warning C4244: '=' : conversion from 'unsigned __int64 ' to 'unsigned int ', possible loss of data
D:\disk_w\hdf5\src\H5Shyper.c(2862) : warning C4244: '=' : conversion from 'unsigned __int64 ' to 'unsigned int ', possible loss of data
D:\disk_w\hdf5\src\H5Shyper.c(2864) : warning C4244: '=' : conversion from 'unsigned __int64 ' to 'unsigned int ', possible loss of data
D:\disk_w\hdf5\src\H5Shyper.c(2948) : warning C4244: '=' : conversion from 'unsigned __int64 ' to 'unsigned int ', possible loss of data
D:\disk_w\hdf5\src\H5Shyper.c(3690) : warning C4244: '=' : conversion from 'unsigned __int64 ' to 'unsigned int ', possible loss of data
D:\disk_w\hdf5\src\H5Shyper.c(3692) : warning C4244: '=' : conversion from 'unsigned __int64 ' to 'unsigned int ', possible loss of data
D:\disk_w\hdf5\src\H5Shyper.c(3776) : warning C4244: '=' : conversion from 'unsigned __int64 ' to 'unsigned int ', possible loss of data
D:\disk_w\hdf5\src\H5Shyper.c(5167) : warning C4244: '+=' : conversion from '__int64 ' to 'unsigned int ', possible loss of data
D:\disk_w\hdf5\src\H5Tvlen.c(371) : warning C4244: '=' : conversion from 'unsigned __int64 ' to 'unsigned int ', possible loss of data
|
|
|
|
|
|
|
|
|
| |
Purpose:
code clean up
Description:
removed some debugging comments regading the code warrior port
Platforms tested:
w2000
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Code improvement.
Description:
Propagated the "fill time" property into the parallel chunk allocation
routine, allowing it to avoid writing fill values to each new chunk
allocated. This improves the performance of chunked datasets in parallel
I/O to be on par with contiguous datasets again (on modi4).
Platforms tested:
IRIX64 6.5 (modi4)
|
|
|
|
|
|
|
| |
Code cleanup
Description:
Cleaned up the function header comment for H5Pset_fill_time.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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 typos in the FUNC_ENTER macros of H5FD_sec2_flush and
H5FD_log_flush.
Platforms tested:
modi4 (just tested it compiled fine.)
|
|
|
|
|
|
|
|
|
|
|
| |
Bug fix.
Description:
Added barrier to flush routine to prevent race condition where file could
be truncated.
Platforms tested:
IRIX64 6.5 (modi4)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
Platforms tested:
IRIX64 6.5 (modi4)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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)
|
|
|
|
|
|
|
|
|
|
| |
Code cleanup
Description:
Restructure H5F_close code to use just one H5F_flush call.
Platforms tested:
IRIX64 6.5 (modi4)
|
|
|
|
|
|
|
|
|
|
| |
Back out changes.
Description:
Back out changes to VFL 'flush' API function, pending review.
Platforms tested:
IRIX64 6.5 (modi4)
|
|
|
|
|
|
|
|
|
|
| |
Bug Fix
Description:
Missed adding the 'closing' parameter to one 'flush' function.
Platforms tested:
FreeBSD 4.5 (sleipnir)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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:
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
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
| |
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:
minor bugs fixed
Description:
Typos in H5Fpkg.h and H5TB.c
Solution:
Platforms tested:
linux 2.2.18
|
|
|
|
|
|
|
| |
Purpose:
updated some comments regarding Code Warrior , removed other debugging comments
Platforms tested:
w2000
|
|
|
|
|
|
|
|
|
|
| |
Bug Fix
Description:
Add TRACE8 and TRACE9 macros
Platforms tested:
FreeBSD 4.5 (sleipnir)
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
Update API tracing information
Platforms tested:
Linux 2.2 (eirene)
|
|
|
|
|
|
|
|
|
|
| |
Purpose:
turn on daylight feature on windows
Description:
currently we have to hard code daylight feature of windows to make it pass mtime test.
Solution:
Platforms tested:
linux 2.2.18
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug Fix
Description:
Correct coordinates were not computed for iteration through irregular
hyperslab selection (although the points in the buffer that were selected
were correct).
Solution:
Add another array to track selection offset adjusted coordinates in the
selection.
Platforms tested:
FreeBSD 4.5 (sleipnir)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug Fix
Description:
Selection offsets were not being used correctly when iterating through
all hyperslabs selections and point selections.
Solution:
Use the selection offset appropriately.
Platforms tested:
FreeBSD 4.5 (sleipnir)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Migrate from configure macros of XYZ_ABC to H5_XYZ_ABC
Description:
configure generates many macros definitions on the fly and
were stored in src/H5config.h which is included by H5public.h.
But other software that uses hdf5 may also run their own configure.
There can be a clash in macro name space. We decided awhile ago
to prepend all generated macros with "H5_" to avoid conflicts.
The process has started and this commit completes it (at least attempt
to).
Solution:
Many macros symbols (e.g. SIZEOF_xxx and HAVE_xxx were changed to
H5_SIZEOF_xxx and H5_HAVE_xxx). Then H5private.h no longer includes
H5config.h. This cuts H5config.h away from HDF5 source code.
Pending issues:
The module of fortran and pablo are to be resolved in a different
commit.
Platforms tested:
eirene (parallel), arabica (solaris 7 --enable-fortran, --enable-cxx)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Purpose:
New feature
Description:
Allow H5Glink and H5Gmove to handle links across different locations.
Solution:
Added H5Glink2 and H5Gmove2 functions with new parameter of destination
location.
Platforms tested:
Linux 2.2(eirene)
|
|
|
|
|
|
|
|
|
|
|
| |
Bug fix
Description:
Move iterator initialization in H5D_read & H5D_write before any errors can
occur.
Platforms tested:
FreeBSD 4.5 (sleipnir)
|