summaryrefslogtreecommitdiffstats
path: root/src/H5Shyper.c
Commit message (Collapse)AuthorAgeFilesLines
* [svn-r5289] Purpose:Quincey Koziol2002-04-301-3/+10
| | | | | | | | | | | | | | | | 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)
* [svn-r5286] Purpose:Quincey Koziol2002-04-291-5/+5
| | | | | | | | | | | | | | 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)
* [svn-r5261] Purpose:Quincey Koziol2002-04-251-289/+2
| | | | | | | | | | Code cleanup Description: Remove more debugging printf's that were ifdef'd out. Platforms tested: FreeBSD 4.5 (sleipnir)
* [svn-r5259] Purpose:Quincey Koziol2002-04-251-89/+49
| | | | | | | | | | | | | | | | Code cleanup Description: Previously, the I/O pipeline (pline), external file list (efl) and fill- value (fill) structs were passed down the raw data function call chain, even into and/or through functions which didn't use them. Since all three of these pieces of information are available from the dataset creation property list, just pass the dataset creation property list down the function call chain and query for the information needed in a particular function. Platforms tested: FreeBSD 4.5 (sleipnir)
* [svn-r5219] Purpose:Quincey Koziol2002-04-221-1/+1
| | | | | | | | | | Code cleanup Description: Clean up warnings from gcc 3.1 Platforms tested: FreeBSD 4.5 (sleipnir)
* [svn-r5170] Raymond Lu2002-04-111-3/+3
| | | | | | | | | | | Purpose: New feature Description: Fill-value's behaviors for contiguous dataset have been redefined. Basicly, dataset won't allocate space until it's necessary. Full details are available at http://hdf.ncsa.uiuc.edu/RFC/Fill_Value, at this moment. Platforms tested: Linux 2.2.
* [svn-r5168] Pedro Vicente Nunes2002-04-111-3/+0
| | | | | | | | | | | | | | | | | | | | | | Purpose: H5Dset_extent API function Description: 1 new public function: H5Dset_extent, that allows shrinking a dataset several private functions that free the previously allocated chunks H5F_istore_prune_by_extent, H5B_prune_by_extent : removes the chunks H5F_istore_initialize_by_extent : initializes them with the fill value H5S_select_fill is used to fill the selection in the memory buffer Platforms tested: Windows 2000 SUN( arabica) LINUX (eirene) IRIX64 (modi4)
* [svn-r5152] Purpose:Quincey Koziol2002-04-091-8/+403
| | | | | | | | | | | | | | | New Feature Description: Added new H5Dfill() routine to fill the elements in a selection for a memory buffer with a fill value. This is a user API wrapper around some internal routines which were needed for the fill-value modifications from Raymond as well as Pedro's code for reducing the size of a chunked dataset. Platforms tested: FreeBSD 4.5 (sleipnir) [and IRIX64 6.5 (modi4) in parallel, in a few minutes]
* [svn-r5138] Purpose:Quincey Koziol2002-04-031-1/+42
| | | | | | | | | | | | | | | | | | | | | | Bug Fix & Code Cleanup Description: The MPI-IO optimized transfer routines (H5S_mpio_spaces_read/H5S_mpio_space_write) are not being invoked in all the cases where they could be used. Additionally, the code for determining if an optimized transfer is wrapped into the actual I/O transfer routine in a very confusing way. Solution: Re-enabled MPI-IO optimized transfer routines in all the cases where they should work. Extracted all the pre-conditions for optimized transfers into separate routines from the transfer routines. Platforms tested: FreeBSD 4.5 (sleipnir) & IRIX64 6.5 (modi4)
* [svn-r5130] Purpose:Quincey Koziol2002-04-021-0/+78
| | | | | | | | | | | | | | | | | | | | | | Bug Fix & Feature Description: The selection offset was being ignored for optimized hyperslab selection I/O operations. Additionally, I've found that the restrictions on optimized selection I/O operations were too strict and found a way to allow more hyperslabs to use the optimized I/O routines. Solution: Incorporate the selection offset into the selection location when performing optimized I/O operations. Allow optimized I/O on any single hyperslab selection and also allow hyperslab operations on chunked datasets. Platforms tested: FreeBSD 4.5 (sleipnir)
* [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.