Commit Graph

914 Commits

Author SHA1 Message Date
Thomas Radke
58a9ecf653 [svn-r2631]
Purpose:
    Bugfix
Description:
    The Stream VFD was leaking memory on every opened file.
Solution:
    In H5FD_stream_close(), finally free the file structure used to describe
    the closed file.
Platforms tested:
    Linux, SGI
2000-10-04 11:20:20 -05:00
Quincey Koziol
b53bfca418 [svn-r2611] Purpose:
Rearrange code
Description:
    The data sieve buffering code for contiguously stored datasets was
    wedged in the H5F_arr_read/H5F_arr_write routines.
Solution:
    Created a new H5Fcontig.c to hold I/O routines for contiguously stored
    datasets (like H5Fistore.c for chunked dataset I/O routines) and moved
    data sieving code into those routines.
Platforms tested:
    Solaris 2.6 (i.e. baldric)
2000-09-28 14:12:43 -05:00
Quincey Koziol
a9afb07bd8 [svn-r2610] Purpose:
Code Optimization.
Description:
    The optimized routines for copying regular hyperslabs in memory have been
    using the same matrix routines to copy their hyperslab pieces as the
    routines for irregularly shaped hyperslabs.  This ends up imposing lots of
    extra overhead on the optimized routine, since it basically "knows" all the
    matrix information it needs.
Solution:
    Keep track of the [small] amount of matrix information necessary to perform
    the regular hyperslab copies in the optimized routines themselves instead of
    using the matrix routines.  This improves the performance for the benchmark
    I'm running from ~18 seconds to ~12 seconds and should apply to parallel
    I/O situations also.
Platforms tested:
    Solaris 2.6 (i.e. baldric)
2000-09-28 12:03:32 -05:00
Quincey Koziol
9e4665ba8c [svn-r2606] Purpose:
Code Optimization
Description:
    The matrix operations are currently the hot-spot in the library code
    for regular hyperslab operations.
Solution:
    Unrolled loops for 3 of the more heavily used functions
    (H5V_stride_optimize2, H5V_hyper_stride & H5V_hyper_copy) for the common
    cases (i.e. up to 3-D datasets).  This squeezes some more blood out of
    the stone (turnip? :-) and improves the h5hypers.c benchmark on baldric
    by another 20-25%.
Platforms tested:
    Solaris 2.6 (i.e. baldric)
2000-09-27 13:23:40 -05:00
Quincey Koziol
1d02d3268e [svn-r2601] Purpose:
Bug Fix
Description:
    The core and log VFL drivers were leaking small amounts of memory when they
    were used.
Solution:
    Free the appropriate memory block (for the core driver) and don't allocate
    a block (for the log driver).
Platforms tested:
    Solaris 2.6 (i.e. baldric)
2000-09-26 22:46:39 -05:00
Quincey Koziol
183c8245af [svn-r2600] Purpose:
Implemented new feature
Description:
    Added data sieve buffering code to raw I/O data path.  This is enabled for
    all the VFL drivers except the mpio & core drivers.  Also added two new
    API functions to control the sieve buffer size: H5Pset_sieve_buf_size() and
    H5Pget_sieve_buf_size().
Platforms tested:
    Solaris 2.6 (i.e. baldric)
2000-09-26 17:50:18 -05:00
Quincey Koziol
a61b205aff [svn-r2597] Purpose:
Fix compiler warning
Description:
    "HUGE_VAL" (a double value) was being put into a float type and generating
    a warning during compile time.
Solution:
    Replaced "HUGE_VAL" with "FLT_MAX"
Platforms tested:
    FreeBSD 4.1
2000-09-26 15:29:40 -05:00
Quincey Koziol
406b5334a3 [svn-r2594] Purpose:
Small Code Cleanup
Description:
    Code to optimize adjacent (i.e. contiguous) hyperslab was ugly and used too
    many temporary variables.
Solution:
    Computed the optimized hyperslabs slightly differently and got rid of
    unnecessary temporary variables.
Platforms tested:
    FreeBSD 4.1
2000-09-26 00:03:24 -05:00
HDF Admin
c2e1541f99 [svn-r2588] Snapshot version 1.3 release 30 2000-09-23 02:08:22 -05:00
Quincey Koziol
7bd50661fe [svn-r2587] Purpose:
Bug fix (sorta)
Description:
    When the stride and block size of a hyperslab selection are equal, the
    blocks that are selected are contiguous in the dataset.  Prior to my
    hyperslab optimizations, this situation used to be detected and somewhat
    optimized to improve performance.  I've added more code to optimize for
    this situation and integrated it with the new hyperslab optimization that
    weren't very efficient for that case as they should have been.
Solution:
    Detect contiguous hyperslab selections (i.e. block size in a dimension is
    the same as the stride in that dimension) and store the optimized,
    contiguous version of that hyperslab.  We also store the original, un-
    optimized version of the hyperslab to give back to the user if they query
    the hyperslab selection they just made.
Platforms tested:
    FreeBSD 4.1
2000-09-22 14:28:05 -05:00
Bill Wendling
57ed75800a [svn-r2586] Purpose:
Bug Fix
Description:
	The prototype for the H5Pregister function has a variable named
	`class'. This is a reserved word in C++ and causes the C++
	compiler to freak.
Solution:
	This variable's name was changed to cls_id in the .c file, so I
	changed it in the header file to cls_id to match.
Platforms tested:
	Linux
2000-09-22 10:29:47 -05:00
Quincey Koziol
88f539bf15 [svn-r2583] Purpose:
Bug Fix.
Description:
    An assertion in the local heap code was mistakenly checking against too
    large of a value for the size of new local heap created.  When used with
    larger-sized (>10KB) variable-length objects, it was failing the check.
Solution:
    Corrected to check against the actual size of the heap allocated, without
    the heap header.
Platforms tested:
    FreeBSD 4.1
2000-09-20 14:26:18 -05:00
Quincey Koziol
e9653cbbf3 [svn-r2581] Purpose:
Clean up compiler warnings.
Platforms tested:
    FreeBSD 4.1
2000-09-19 17:11:52 -05:00
Quincey Koziol
8f171ba985 [svn-r2580] Purpose:
Restore file
Description:
    It appears that Robb's checkin earlier today erroneously overwrote this
    file with an older version... *grumble*
Solution:
    Found another copy of newest version, verified that it is operating
    correctly and re-checked it in.
Platforms tested:
    FreeBSD 4.1
2000-09-19 16:46:28 -05:00
Quincey Koziol
22867dca0e [svn-r2579] Purpose:
Clean up small compiler warnings and add missing function prototypes.
Platforms tested:
    FreeBSD 4.1
2000-09-19 16:08:15 -05:00
Bill Wendling
8272da0b67 [svn-r2574] Purpose:
H5FDstream.h needs to be installed.
Description:
	H5FDstream.h is included in the hdf5.h file and needs to be
	installed with the other public headers.
Solution:
	Added it to the rest of the install headers.
2000-09-19 12:42:50 -05:00
Robb Matzke
f2caef690b [svn-r2573] Purpose:
Fix Irix pmake bugs
Description:
	Build fails on Irix when builddir != srcdir
Solution:
	* acconfig.h
	* src/H5config.h.in			[REGENERATED]
		Added definition for HAVE_STREAM

	* config/conclude.in
	* config/depend1.in
	* config/depend2.in
	* config/depend3.in
	* config/depend4.in
		The `Dependencies' file is located in the source
		tree. This fixes bugs for Irix pmake when compiling
		outside the source tree.  Hopefully it still preserves
		Albert's changes which allow concurrent compilations
		to not stomp on each other's Dependencies files.


	* examples/Dependencies			[REGENERATED]
	* src/Dependencies			[REGENERATED]
	* test/Dependencies			[REGENERATED]
	* tools/Dependencies			[REGENERATED]
		Regenerated for testing purposes.
Platforms:
	i686-pc-linux
	mips-sgi-irix6.5
	sparc-sun-solaris2.6
2000-09-19 12:04:46 -05:00
Thomas Radke
bc5f379e7d [svn-r2560] Purpose:
Include the Stream VFD's header file H5FDstream.h.

Description:
     All the VFD's header files are included by hdf5.h itself for convenience.
2000-09-15 06:51:28 -05:00
Thomas Radke
c275f5e9c7 [svn-r2559] Purpose:
Add the Stream VFD sources to the appropriate makefile variables.

Description:
     Added H5FDstream.c to the LIB_SRC variable and H5FDstream.h
     to the PUB_HDR variable for building the Stream VFD.
2000-09-15 06:49:28 -05:00
Thomas Radke
e8e9d7b5ac [svn-r2558] Purpose:
Define HAVE_STREAM.

Description:
     If the Stream VFD was configured the configured script
     will expand this into
       '#define HAVE_STREAM 1' in H5config.h and
       '#define H5_STREAM 1'   in H5pubconf.h.
2000-09-15 06:47:08 -05:00
Thomas Radke
b4844aabb3 [svn-r2557] Purpose:
Added registration of the Stream Virtual File Driver.

Description:
     The Stream VFD is registered here if it was configured.
2000-09-15 06:42:53 -05:00
Thomas Radke
5a4c55b42c [svn-r2555] Purpose:
Added source files for the Stream Virtual File Driver.

Description:
     The Stream VFD allows users to stream complete HDF5 files
     via socket connections between different applications.

     Files which were created anew are flushed to any connected client
     on each H5Fflush() or H5Fclose() operation.
     Files which are opened as read-only will be read from a socket
     on a H5Fopen() call.

     The driver's H5FDset_fapl_stream() routine allows to pass in
     several parameters such as an external socket descriptor,
     some socket options, and flags for broadcasting a received file.
     If an external socket is provided the Stream VFD would use that
     for the socket calls. Otherwise it parses the filename argument
     in H5Fcreate()/H5Fopen() for a 'hostname::port' parameter.

     All files processed by the Stream VFD are kept in memory
     (same way as the core VFD does).

Platforms:
     Tested so far under Linux, Irix 32/64bit, OSF1, Solaris, Cray Unicos,
     Hitachi SR8000, IBM AIX.
     Not tested under Windows yet.
2000-09-15 06:35:39 -05:00
Quincey Koziol
a4d73cc16b [svn-r2551] Purpose:
Fix last couple of errors from introducing "regular" hyperslab feature
into the library.

Description:
    Code was blindly dereferencing data structures which aren't defined when
operating on regular hyperslabs.

Solution:
    Check for regular hyperslab defined and retrieve information from regular
hyperslab info instead of mucking about in other hyperslab information.

Platforms:
    Solaris 2.6
2000-09-14 17:54:21 -05:00
Bill Wendling
29a7f62218 [svn-r2548] Added #include <sys/resource.h> for the struct getrusage declaration.
Przemek Klosowski, Ph.D. <przemek@nist.gov> reported this problem on
Linux RH 6.1 systems.
2000-09-14 12:15:12 -05:00
Quincey Koziol
85a08f5bc9 [svn-r2546] Further patches to accomodate regular hyperslabs. More of the tests are
passing, but not all of them yet...
2000-09-13 18:49:54 -05:00
Quincey Koziol
1f109221df [svn-r2544] Optimized regular hyperslab I/O routines and data structures. On my benchmarks,
they are about 4-5 times faster than before.  We no longer generate "general"
hyperslab data structures for regular hyperslabs, the general data structures
are only generated when needed for irregular hyperslabs.

Still fixing a couple of nook-and-cranny functions to understand the new
information for the regular hyperslabs, so the tests aren't completely passing,
but I wanted to get this checked in for Elena's benchmarks.  I should have
more/all tests passing later today.
2000-09-13 16:58:18 -05:00
Albert Cheng
61e517a4b0 [svn-r2519] Snapshot version 1.3 release 29 2000-09-06 16:15:35 -05:00
Quincey Koziol
c0ec9f92a6 [svn-r2518] Backed out patch from user after further testing... 2000-09-06 15:30:00 -05:00
Bill Wendling
681b630ea5 [svn-r2517] Removed the incorrect #ifdef's. Since this file is generated from
autoheader, it was useless to add them in here...
2000-09-06 13:32:45 -05:00
Bill Wendling
a56d88a99a [svn-r2515] Added macros around the inline #define since this is a keyword in C++
and, when adding the header to a C++ program, breaks it.
2000-09-06 11:15:18 -05:00
Quincey Koziol
e5deb6dbba [svn-r2511] Fix point selections so they work properly with both staticly and dynamicly
allocated memory.
2000-09-06 10:44:07 -05:00
Quincey Koziol
24b64938a1 [svn-r2510] Took memory allocation out of loop and used some temporary variable instead of
multi-dereferenced pointer chains.  This buys us another ~20% improvement in
the hyperslab I/O speed. (From ~30 seconds to ~25 seconds on the h5hypers
benchmark)
2000-09-06 10:36:37 -05:00
Quincey Koziol
25ee8b4e8f [svn-r2509] Change code so that heap_size wasn't zero. 2000-09-06 10:34:30 -05:00
Albert Cheng
404ee60bd4 [svn-r2508] Purpose:
Bug fixes
Description:
    All tests were core=dumping in IRIX64.  The bug is in Generic
    property list creation in which malloc asked for 2*64-1 bytes
    due to coding bug.  The object creation failed but the return
    code was not checked.  Program eventually crashed.
Solution:
H5F.c:
    Check the return code from new file object creation and flag
    error accordingly.
H5FL.c:
    H5FL_arr_free is a replacement for H5MM_xfree which accepts
    null value as a legal argument value.  H5FL_arr_free assert
    on it.  Since other parts of the code have been passing null
    value to H5MM_xfree, H5FL_arr_free must accept it too until
    all the calling routines are changed to not pass Null.
H5P.c:
    some routine passes in 0 as the hashsize value which is uintn.
    The expression (hashsize-1) underflows to the largest unsigned
    int for some machines.  Thus the calloc failed.  Cast hashsize
    to unsigned int first (this assumes hashsize stays within the
    signed int data range.
H5Smpio.c:
    Added the extra parameter because the H5FD_write has been redefined.

Platforms tested:
    IRIX64 -64 and -n32
2000-09-05 22:40:21 -05:00
Bill Wendling
da05036244 [svn-r2505] Some of the RETURN macros were returning NULL instead of FAIL...Fixed. 2000-09-05 18:10:06 -05:00
Quincey Koziol
72555fec5a [svn-r2504] Revised routine to add hyperslabs to the selection, sorting the arrays of
hyperslab boundaries after adding them all, instead of maintaining the sorted
order during each addition.  This boosts performance for sub-sampled (i.e.
strided) hyperslabs by about a factor of 10!  :-)
2000-09-04 11:25:34 -05:00
Quincey Koziol
e85425db19 [svn-r2502] Added limits to the free lists, so they will automatically garbage collect and
not eat all the memory in the machine (by default :-)
2000-08-31 18:11:06 -05:00
Quincey Koziol
312cd2c57d [svn-r2501] Added several free lists for commonly used & abused data structures. Also
added code to allow metadata to be allocated out of a more contiguous block
("metadata aggregation") and also code for "catching" small metadata write
calls and building a buffer of the small pieces of metadata for later writing
as one, larger, block ("metadata accumulation").  These features are enabled
on a per VFL driver basis with the new VFL 'query' call and both currently
enabled for the sec2, family and stdio drivers.  The mpio VFL driver enables
only the "metadata aggregation" code, not the "metadata accumulation" code.
All the other drivers have these features turned off.
2000-08-31 14:40:07 -05:00
Quincey Koziol
2910c496e1 [svn-r2500] Added fields to file data structures to allow metadata aggregation and
accumulation to be enabled and tracked.  Also updated some prototypes.
2000-08-31 14:35:44 -05:00
Quincey Koziol
8420b10455 [svn-r2499] Changed H5FDwrite prototype to include new 'type of data' parameter 2000-08-31 14:34:40 -05:00
Quincey Koziol
1ec946fac8 [svn-r2498] Added new VFL 'query' code and added new 'type of data' parameter to write
call.
2000-08-31 14:33:58 -05:00
Quincey Koziol
362baf1299 [svn-r2497] Removing metadata aggregation & accumulation prototyping code (it's in H5FD.c
now) and updated driver to add the new VFL 'query' call.
2000-08-31 14:28:16 -05:00
Quincey Koziol
a3b9c876e1 [svn-r2496] Changed H5F_block_write prototype & added metadata allocation field to file
access property lists.
2000-08-31 14:26:42 -05:00
Quincey Koziol
b678afccd8 [svn-r2495] More type of data parameter additions for H5F_block_write. 2000-08-31 14:26:06 -05:00
Quincey Koziol
0709cc1025 [svn-r2494] Changed the default size of object headers from 16 bytes to 256 bytes. 2000-08-31 14:25:10 -05:00
Quincey Koziol
7e7b6854e6 [svn-r2493] Added a set/get pair of property modifiers to allows users to set/query the
metadata allocation size for file access property lists.  These are new API
functions and should be documented for the next release.
2000-08-31 14:24:36 -05:00
Quincey Koziol
d2b293884e [svn-r2492] Added type of data parameter to H5F_block_write calls and also added the
metadata allocation size to the default file access property lists.
2000-08-31 14:23:13 -05:00
Quincey Koziol
49fd0efca3 [svn-r2491] Added type of data parameter to H5F_block_write calls. 2000-08-31 14:22:03 -05:00
HDF Admin
3ff571ab58 [svn-r2477] Snapshot version 1.3 release 28 2000-08-19 02:21:53 -05:00
Quincey Koziol
1d54c2ad20 [svn-r2476] Added free lists to track various data structures in memory, to reduce malloc
abuse.
2000-08-16 15:13:02 -05:00