summaryrefslogtreecommitdiffstats
path: root/src/H5Shyper.c
Commit message (Collapse)AuthorAgeFilesLines
* [svn-r5126] Purpose:Quincey Koziol2002-04-011-13/+87
| | | | | | | | | | | Bug Fix (sorta) Description: "small" contiguous hyperslabs were not being detected correctly by H5S_hyper_select_contigous() leading to poorer performance than possible. Solution: Corrected check for small hyperslabs. Also cleaned up the H5S_find() code. Platforms tested: FreeBSD 4.5 (sleipnir)
* [svn-r5082] Purpose:Quincey Koziol2002-03-261-2/+8
| | | | | | | | | | | | | | | | | | | | Bug Fix Description: When reading a contiguous hyperslab that spanned the entire dataset and was larger that the type conversion buffer, the hyperslab routines need to fill the type conversion buffer and then return to the I/O routines. When the I/O routines resume the hyperslab operation, it was possible to have a combination of coordinates which caused the hyperslab iterator to incorrectly advance in the file, causing some data to be re-read or re-written. Solution: Corrected the H5S_hyper_iter_next routine to correctly handle contiguous hyperslabs that span the entire dataset dimensions. Platforms tested: Linux (eirene)
* [svn-r4914] Purpose:Quincey Koziol2002-02-071-79/+220
| | | | | | | | | | | | | | | | | | Bug fix & feature add Description: Added new API function H5Sget_select_type to determine type of selection in a dataspace. Return values are defined by the H5S_sel_type enumerated type in H5Spublic.h Also, hyperslab operations involving a "all" or "none" selection are not generating the correct resulting selections. Solution: Added more code to make hyperslab operations against an "all" or "none" selection generate the correct results. Platforms tested: FreeBSD 4.5 (sleipnir)
* [svn-r4706] Purpose:Quincey Koziol2001-12-121-4/+4
| | | | | | | | | | | | Code cleanup Description: Tweaked internal error handling macros to reduce the size of the library's object code by about 10-20%. Also cleaned up some compiler warnings... Platforms tested: FreeBSD 4.4 (sleipnir)
* [svn-r4693] Purpose:Quincey Koziol2001-12-111-2/+2
| | | | | | | | | | | | | | | | | | | | Bug Fix Description: The code in H5Sselect_hyperslab_valid contained an fencepost error and is allowing selections which overlap the extent by exactly one element in any dimension to pass as valid instead of flagging the selection as invalid. This bug only affects hyperslabs which have been OR'ed together, not the selection from a single H5Sselect_hyperslab. This fixes bug #550. Solution: Changed an '>' to an '>=' and added new regression test to check for error. Platforms tested: FreeBSD 4.4 (sleipnir)
* [svn-r4644] Purpose:Quincey Koziol2001-11-271-5/+2
| | | | | | | | Code cleanup Description: Fix small warning on SGI compilers Platforms tested: IRIX64 6.5 (modi4)
* [svn-r4643] Purpose:Quincey Koziol2001-11-271-69/+57
| | | | | | | | | | | | | | | | | | | | | | Code cleanup Description: Windows is generating hundreds of warnings from some of the practices in the library. Mostly, they are because size_t is 32-bit and hsize_t is 64-bit on Windows and we were carelessly casting the larger values down to the smaller ones without checking for overflow. Also, some other small code cleanups,etc. Solution: Re-worked some algorithms to eliminate the casts and also added more overflow checking for assignments and function parameters which needed casts. Kent did most of the work, I just went over his changes and fit them into the the library code a bit better. Platforms tested: FreeBSD 4.4 (hawkwind)
* [svn-r4628] Purpose:Quincey Koziol2001-11-201-1/+1
| | | | | | | | Fix typo... Description: Copy & paste error... :-) Platforms tested: FreeBSD 4.4 (hawkwind)
* [svn-r4620] Purpose:Quincey Koziol2001-11-201-9/+28
| | | | | | | | | Code cleanup Description: Get rid of IDs from internal function calls and some small cleanups from the old-stype => generic property list conversion. Platforms tested: FreeBSD 4.4 (hawkwind)
* [svn-r4590] Purpose:Quincey Koziol2001-11-041-74/+74
| | | | | | | | | Code cleanup Description: Fix a bunch of warnings and also make the linux compilers happy with some casts. Platforms tested: Linux 2.2 (eirene)
* [svn-r4586] Purpose:Quincey Koziol2001-11-021-2609/+5168
| | | | | | | | | | | | | | Code speedups, etc. Description: Bring in new algorithms and data structures for dealing with hyperslabs. This speeds up the hyperslab I/O for non-regular hyperslabs by a huge amount. Currently, the new API functions are ifdef'ed out, pending discussion and consensus approval. Platforms tested: FreeBSD 4.4 (hawkwind)
* [svn-r4560] Purpose:Quincey Koziol2001-10-201-0/+8
| | | | | | | | | | | | | Bug fix. Description: H5S_select_hyperslab fails to correctly define a hyperslab when the space to put the hyperslab into is currently a 'none' selection and the hyperslab operation is the 'or' operation. Solution: Detect the situation and internally modify the hyperslab operation to be a 'set' operation, since that's the next affect desired. Platforms tested: FreeBSD 4.4. (hawkwind)
* [svn-r4473] Purpose:Quincey Koziol2001-09-251-15/+15
| | | | | | | | | | | | | | | | | | | | | Code cleanup for better compatibility with C++ compilers Description: C++ compilers are choking on our C code, for various reasons: we used our UNUSED macro incorrectly when referring to pointer types we used various C++ keywords as variables, etc. we incremented enum's with the ++ operator. Solution: Changed variables, etc.to avoid C++ keywords (new, class, typename, typeid, template) Fixed usage of UNUSED macro from this: char UNUSED *c to this: char * UNUSED c Switched the enums from x++ to x=x+1 Platforms tested: FreeBSD 4.4 (hawkwind)
* [svn-r4355] Purpose:Quincey Koziol2001-08-141-108/+108
| | | | | | | | | | | | | | | | | | | | | | Code cleanup (sorta) Description: When the first versions of the HDF5 library were designed, I remembered vividly the difficulties of porting code from a 32-bit platform to a 16-bit platform and asked that people use intn & uintn instead of int & unsigned int, respectively. However, in hindsight, this was overkill and unnecessary since we weren't going to be porting the HDF5 library to 16-bit architectures. Currently, the extra uintn & intn typedefs are causing problems for users who'd like to include both the HDF5 and HDF4 header files in one source module (like Kent's h4toh5 library). Solution: Changed the uintn & intn's to unsigned and int's respectively. Platforms tested: FreeBSD 4.4 (hawkwind)
* [svn-r4324] Purpose:Quincey Koziol2001-08-101-50/+44
| | | | | | | | | | | | | | | | | | | | | | | | New Features! Description: Start migrating the internal use of property lists in the library from the older implementation to the new generic property lists. Currently, only the dataset transfer property lists are migrated to the new architecture, all the rest of the property list types are still using the older architecture. Also, the backward compatibility features are not implemented yet, so applications which use dataset transfer properties may need to make the following changes: H5Pcreate(H5P_DATASET_XFER) -> H5Pcreate_list(H5P_DATASET_XFER_NEW) and H5Pclose(<a dataset transfer property list>) -> H5Pclose_list(id) This still may have some bugs in it, especially with Fortran, but I should be wrapping up those later today. Platforms tested: FreeBSD 4.4 (hawkwind)
* [svn-r4196] Purpose:Quincey Koziol2001-07-121-2/+10
| | | | | | | | | | | | Bug Fix Description: Using a 'long long' type (i.e. hsize_t) in a switch statement is apparently not allowed by the HP/UX 10.20 system compiler and causes the compile to fail. Solution: Cast the variable to a size_t for the switch. Platforms tested: HP/UX 10.20 (sangamon)
* [svn-r4181] Purpose:Quincey Koziol2001-07-101-346/+1158
| | | | | | | | | Bug Fix, Code Cleanup, Code Optimization, etc. Description: Fold in the hyperslab speedups, clean up compile warnings and change a few things from using 'unsigned' or 'hsize_t' to use 'size_t' instead. Platforms tested: FreeBSD 4.3 (hawkwind), Solaris 2.7 (arabica), Irix64 6.5 (modi4)
* [svn-r4038] Purpose:Quincey Koziol2001-06-211-23/+23
| | | | | | | | | | | | | Code clean/bug fix Description: H5FL (free-list manager) code currently is taking an hsize_t as the size of a memory block to allocate. On many machines, the size of an hsize_t is greater than the size of a size_t, potentially leading to incorrect memory allocations in rare circumstances. Solution: Changed hsize_t parameters and variables to size_t. Platforms tested: FreeBSD 4.3 (hawkwind)
* [svn-r4002] Purpose:Quincey Koziol2001-06-141-5/+3
| | | | | | | | | | | | | Bug fix/code improvement. Description: 'all' selections were (ab)using the array reading code and required that the internal data transfer buffer size be big enough to hold the an entire slab of the data, which was confusing and limiting for users. Solution: Changed 'all' selections to use sequence reading code instead of array reading code. Platforms tested: FreeBSD 4.3 (hawkwind)
* [svn-r3781] Purpose:Bill Wendling2001-04-051-12/+12
| | | | | | | | | | | | | | | | | | Update Description: Changed #include <hdf_file.h> construct to #include "hdf_file.h" so that the GNU compiler can more easily pick up the dependencies which it places in the .depend and Dependencies files. Also regenerated the Dependencies to go along with this. Platforms tested: Linux
* [svn-r3479] Purpose:Quincey Koziol2001-02-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Bug Fixes Description: Fixed a bug in H5Shyper.c where 'contiguous' hyperslabs (i.e. ones which took up an entire dataset) were not being detected correctly and would instead be read a part at a time instead of all at once. Also fixed a bug in the handling of hyperslabs for chunked datasets where hyperslabs from chunks which weren't aligned on exact dimension bounaries were not reading/writing data correctly. Solution: H5Shyper.c was a single line change from a 'block' size to a 'count' size. H5Fseq.c changes we much more significant and involved detecting when non-chunk aligned sequences of data were being written and constructing hyperslab blocks to pass down to the chunking I/O routine (which only understand hyperslab I/O requests, not element sequence requests). This was complicated by the need to align the hyperslabs requested on dimension boundaries... Platforms tested: FreeBSD 4.2. (hawkwind)
* [svn-r3302] Purpose:Quincey Koziol2001-01-181-65/+102
| | | | | | | | | | | | | Bug fix Description: Certain combinations of hyperslabs, especially those that have to be strip-mined during I/O were causing data to be incorrectly transferred. Solution: Changed the code in H5S_get_hyper_regions to be more careful about the regions of the current dimension that are valid. Sometimes, regions which had already been iterated through were being re-processed. Platforms tested: FreeBSD 4.2 (hawkwind)
* [svn-r3252] Purpose:Quincey Koziol2001-01-091-358/+371
| | | | | | | | | | | | | Code cleanup. Description: Fixed _lots_ (I mean _tons_) of warnings spit out by the gcc with the extra warnings. Including a few show-stoppers for compression on IRIX machines. Solution: Changed lots of variables' types to more sensible and consistent types, more range-checking, more variable typecasts, etc. Platforms tested: FreeBSD 4.2 (hawkwind), IRIX64-64 (modi4)
* [svn-r3065] Purpose:Quincey Koziol2000-12-021-4/+4
| | | | | | | | Code cleanup Description: Remove some warnings... Platforms tested: FreeBSD 4.2 (hawkwind) & IRIX64 6.5 (modi4)
* [svn-r3061] Purpose:Quincey Koziol2000-12-011-10/+51
| | | | | | | | | | | | | | Bug fix. Description: Cray T3E (and J90?) was failing on partial I/O tests. The bug was in the optimized hyperslab routines for cases where a hyperslab filled the temporary datatype conversion buffer and the optimized hyperslab routine needed to start in the middle of a hyperslab. Solution: Corrected code to detect the situation and read in the correct amount of elements in the hyperslab. Platforms tested: Cray T3E (mcurie.nersc.gov)
* [svn-r2804] Purpose:Quincey Koziol2000-11-071-0/+4
| | | | | | | | | | | | Bug Fix Description: Selections in 1-D dataspaces would get into an infinite loop in H5S_hyper_select_iterate_mem_opt (called by H5Diterate and H5Dget_vlen_buf_size) due to some incorrect logic. Solution: Handled 1-D cases correctly and get out of loop. Platforms tested: Eyeballed...
* [svn-r2736] Purpose:Quincey Koziol2000-10-251-218/+274
| | | | | | | | | | Code optimization Description: Minor tweaks throughout the optimized regular hyperslab code to increase speed. This set of improvements increase the benchmark time from taking ~5.46 seconds to ~4.50 seconds, or around a 20% further speedup. Platforms tested: Solaris 2.6 (baldric)
* [svn-r2707] Purpose:Quincey Koziol2000-10-191-15/+91
| | | | | | | | | | | | | Optimization for parallel I/O Description: When contiugous hyperslabs are defined (i.e. with the block=stride), the library was only aggregating the hyperslabs together for the fastest changing dimension. Solution: Add some extra code to detect when contiguous hyperslabs span more than one row and output the entire contiguous section at once. Platforms tested: FreeBSD 4.1.1 (hawkwind)
* [svn-r2657] Quincey Koziol2000-10-101-274/+19
| | | | | | | | | | | | Purpose: Parallel Bug Fixes Description: Was out of sync with header file re-arrangements I checked in last night. Solution: Fixed to use new header files, etc. Platforms tested: O2K (modi4)
* [svn-r2652] Purpose:Quincey Koziol2000-10-101-50/+94
| | | | | | | | | | | | | | | Maintainance & performance enhancements Description: Re-arranged header files to protect private symbols better. Changed optimized regular hyperslab I/O to compute the offsets more efficiently from previous method of using matrix operations. Added sequential I/O operations at a more abstract level (at the same level as H5F_arr_read/write), to support the optimized hyperslab I/O. Platforms tested: Solaris 2.6 (baldric) & FreeBSD 4.1.1 (hawkwind)
* [svn-r2647] Purpose:Albert Cheng2000-10-101-15/+19
| | | | | | | | | | | | | | Bug fiX Description: H5S_hyper_select_valid would report hyperslab invalid if the one of the count values is zero. The verifying algorithm did not take into consideration that block or count can contain zeros to indicate no element is wanted. Solution: Added code to test if block or count is zero. If so, skip the rest of the validity check. Platforms tested: IRIX64 -64.
* [svn-r2610] Purpose:Quincey Koziol2000-09-281-28/+325
| | | | | | | | | | | | | | | | | | 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)
* [svn-r2594] Purpose:Quincey Koziol2000-09-261-24/+18
| | | | | | | | | | | | 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
* [svn-r2587] Purpose:Quincey Koziol2000-09-221-2/+56
| | | | | | | | | | | | | | | | | | | 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
* [svn-r2581] Purpose:Quincey Koziol2000-09-191-33/+23
| | | | | | Clean up compiler warnings. Platforms tested: FreeBSD 4.1
* [svn-r2580] Purpose:Quincey Koziol2000-09-191-333/+1952
| | | | | | | | | | | | 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
* [svn-r2579] Purpose:Quincey Koziol2000-09-191-3/+1
| | | | | | Clean up small compiler warnings and add missing function prototypes. Platforms tested: FreeBSD 4.1
* [svn-r2573] Purpose:Robb Matzke2000-09-191-1949/+332
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* [svn-r2546] Further patches to accomodate regular hyperslabs. More of the ↵Quincey Koziol2000-09-131-50/+193
| | | | | | tests are passing, but not all of them yet...
* [svn-r2544] Optimized regular hyperslab I/O routines and data structures. ↵Quincey Koziol2000-09-131-293/+1767
| | | | | | | | | | | | | 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.
* [svn-r2510] Took memory allocation out of loop and used some temporary ↵Quincey Koziol2000-09-061-8/+21
| | | | | | | | 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)
* [svn-r2504] Revised routine to add hyperslabs to the selection, sorting the ↵Quincey Koziol2000-09-041-78/+36
| | | | | | | | 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! :-)
* [svn-r2454] Took out another unneeded assertion which was causing problems.Quincey Koziol2000-08-011-1/+0
|
* [svn-r2450] Remove asserts on non-existent variables..Quincey Koziol2000-08-011-2/+1
|
* [svn-r2448] Re-did section of hyperslab initialization code to avoid tons of ↵Quincey Koziol2000-07-281-114/+111
| | | | | | realloc() calls. Speeds user's test code up by ~25 times... :-)
* [svn-r2110] Re-wrote a good chunk of the hyperslab code to work correctly in ↵Quincey Koziol2000-04-111-411/+301
| | | | | | | several situations which weren't tested before. Things should be both faster and easier to understand in this code now.
* [svn-r2098] Fixed error in iterating through hyperslabs in certain ↵Quincey Koziol2000-04-071-32/+146
| | | | | | situations where hyperslabs were staggered in the dataset.
* [svn-r2073] Added free-list code to the library and took out the older ↵Quincey Koziol2000-04-041-128/+438
| | | | | | | "temporary buffer" code, since the functionality was superceded. See the followup document for details on the free-list code.
* [svn-r1857] Fixed error in decoding hyperslab regions for dataset region ↵Quincey Koziol1999-12-071-1/+1
| | | | | | references. Data is ok in the file, just mixed up when trying to dereference the region.
* [svn-r1836] Mainly fixed a bug in VL datatype comparisons which was causing ↵Quincey Koziol1999-11-171-2/+2
| | | | | | | non-equal VL types to compare as equal. Added some asserts to make certain nothing slips through again. Also cleaned up a few warnings from the SGI compiler.