summaryrefslogtreecommitdiffstats
path: root/src/H5Sselect.c
Commit message (Collapse)AuthorAgeFilesLines
* [svn-r6047] Purpose:Quincey Koziol2002-11-011-0/+11
| | | | | | | | | | | | | | | | | Bug fix & code cleanup Description: Hyperslab code for collapsing dimensions was incorrectly collapsing selections inappropriately when the fastest changing dimension couldn't be collapsed. Also add some more assertions which will make similar bugs easier to find. Solution: Break out of loop earlier. Platforms tested: modi4 (parallel), too small to triple check.
* [svn-r6006] Purpose:Albert Cheng2002-10-151-4/+5
| | | | | | | | | | | | | | | | Bug fix (ID 841) Description: h5dumptst (generating h5dump test files) failed with an assertion error in H5S_select_iterate. H5S_select_iterate did not account for scalar type that has rank=0, thus no dimension sizes. Solution: Put the assertion of valid sizes only after verify rank is larger than 0. (fix is coached by Quincey.) Platforms tested: Tested h5committest {arabica (fortran), eirene (fortran, C++) modi4 (parallel, fortran)}? YES. Misc. update: Update release_docs/RELEASE for bug fixes, new features, etc. YES.
* [svn-r5924] Purpose:Quincey Koziol2002-09-131-2/+2
| | | | | | | | | | | | | Code cleanup Description: Switch order of test on array bounds to avoid reading data outside of array Located by purify. Platforms tested: FreeBSD 4.6 (sleipnir) w/C++ Solaris 2.7 (arabica) w/C++ IRIX64 6.5 (modi4) w/parallel & fortran
* [svn-r5894] Purpose:Quincey Koziol2002-08-271-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bug fix/Code cleanup/New Feature Description: Correct problems with writing fill-values to external storage and allocate the data storage at the correct times. Also, mostly straighten out the strange code which allocates and fills raw data storage for datasets. Things are still a bit odd in that the fill-values for chunked datasets are written when the space is allocated, instead of in a separate routine, but there are two reasons for this: it's inefficient (especially in parallel) to iterate through all the chunks twice, and (more importantly) the space needed to store compressed chunks isn't known until we've got a buffer of compressed fill-values ready to write to the chunk. Additionally, add in the H5D_SPACE_ALLOC_INCR and H5D_SPACE_ALLOC_DEFAULT setting for the "space time", which incorporate the previous behavior of the space allocation for chunked datasets. The default settings for the different types of dataset storage are now as follows: Contiguous - Late Chunked - Incremental Compact - Early This checkin also incorporates a change to the behavior of external data storage in two ways - fill-values are _never_ written to external storage (under the assumption that writing fill-values is triggered by allocating space in an HDF5 file, and since space is not allocated in the file, the fill-values should not be written) and external data files are now created if they don't exist when data is written to them. The fill-value will probably need to be revisited at some time in the future, this just seemed like the safer course currently. I think I cleaned up some compiler errors also, before getting bogged down in the fixes for the space allocation and fill-values. Platforms tested: FreeBSD 4.6 (sleipnir) w/serial & parallel. Will be testing on IRIX64 6.5 (modi4) in serial & parallel shortly.
* [svn-r5871] Purpose:Quincey Koziol2002-08-121-6/+6
| | | | | | | | | | | | | | | | Code cleanup Description: Combined H5P_isa_class and H5I_object functionality into a new internal H5P API function: H5P_object_verify, which checks that a property list is the appropriate class and then returns the property list object associated with the property list ID. This reduces the source code by about 200 LOC and trims the library binary some more. Platforms tested: FreeBSD 4.6 (sleipnir)
* [svn-r5867] Purpose:Quincey Koziol2002-08-091-0/+1
| | | | | | | | | | | | | Code cleanup Description: Changed the last HRETURN* statements in the FUNC_ENTER macros into HGOTO* macros, which reduces the size of the library binary in certain configurations by another 10% Platforms tested: FreeBSD 4.6 (sleipnir) serial & parallel, IRIX64 6.5 (modi4) serial & parallel
* [svn-r5843] Purpose:Quincey Koziol2002-08-081-5/+5
| | | | | | | | | | | Code cleanup Description: Clean up a few warnings which were showing up with --enable-production turned on. Platforms tested: FreeBSD 4.6 (sleipnir) serial & parallel
* [svn-r5842] Purpose:Quincey Koziol2002-08-081-10/+19
| | | | | | | | | | | | | | | | Code cleanup Description: Change most (all?) HRETURN_ERROR macros to HGOTO_ERROR macros, along with HRETURN macros to HGOTO_DONE macros. This unifies the error return path from functions and reduces the size of the library by up to 10% on some platforms. Additionally, I improved a lot of the error cleanup code in many routines. Platforms tested: FreeBSD 4.6 (sleipnir) serial & parallel and IRIX64 6.5 (modi4) serial & parallel.
* [svn-r5840] Purpose:Quincey Koziol2002-07-311-5/+5
| | | | | | | | | | | | | | Code cleanup Description: Created a new H5I function which combined the some of the functionality of H5I_get_type and H5I_object: H5I_object_verify. Using this new function in the library trims another ~200 lines of code off the library and makes the resulting binaries smaller and faster also. Platforms tested: FreeBSD 4.6 (sleipnir)
* [svn-r5839] Purpose:Quincey Koziol2002-07-311-1285/+56
| | | | | | | | | | | | | | | Code cleanup Description: Move operations on each type of selection into the source code file for each selection type (all->H5Sall.c, hyperslab->H5Shyper.c, etc.) Remove central H5S_select_<foo> operations, instead calling the operations through function pointers in each selection (a much more object-oriented approach). Platforms tested: FreeBSD 4.6 (sleipnir)
* [svn-r5835] Purpose:Quincey Koziol2002-07-241-1/+1
| | | | | | | | | | Bug fix. Description: Correct erroneous assertion. Platforms tested: IRIX64 6.5 (modi4) w/parallel
* [svn-r5834] Purpose:Quincey Koziol2002-07-241-41/+1224
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Large code cleanup/re-write Description: This is phase 1 of the data I/O re-architecture, with the following changes: - Changed the selection drivers to not actually do any I/O, they only generate the sequences of offset/length pairs needed for the I/O (or memory access, in the case of iterating or filling a selection in a memory buffer) - Wrote more abstract I/O routines which get the sequence of offset/ length pairs for each selection and access perform the I/O or memory access. Benefits of this change include: - Removed ~3400 lines of quite redundant code, with corresponding reduction in the size of library binary. - Any selection can now directly access memory when performing I/O, if no type conversions are required, instead of just "regular" hyperslab and 'all' selections, which speeds up I/O. - Sped up I/O for hyperslab selections which have contiguous lower dimensions by "flattening" them out into lesser dimensional objects for the I/O. No file format or API changes were necessary for this change. The next phase will be to create a "selection driver" for each type of selection, allowing each type of selection to directly call certain methods that only apply to that type of selection, instead of passing through dozens of functions which have switch statements to call the appropriate method for each selection type. This will also reduce the amount of code in the library and speed things up a bit more. Phase 3 will involve generating an MPI datatype for all types of selections, instead of only "regular" hyperslab and 'all' selections. This will allow collective parallel I/O for all I/O operations which don't require type conversions. It will also open up the door for allowing collective I/O on datasets which require type conversion. Phase 4 will involve changing the access pattern to deal with chunked datasets in a more optimal way (in serial). Phase 5 will deal with accessing chunked datasets more optimally for collective parallel I/O operations. Platforms tested: FreeBSD 4.6 (sleipnir) w/ parallel & C++ and IRIX64 6.5 (modi4) w/parallel
* [svn-r5471] Purpose:Quincey Koziol2002-05-291-22/+22
| | | | | | | | | | | | | | | | 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.
* [svn-r5467] Purpose:Quincey Koziol2002-05-281-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | 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)
* [svn-r5261] Purpose:Quincey Koziol2002-04-251-1/+1
| | | | | | | | | | 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-1/+1
| | | | | | | | | | | | | | | | 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-r5254] Purpose:Quincey Koziol2002-04-251-3/+13
| | | | | | | | | | | Code tweak. Description: Allow the 'fill' parameter of H5S_select_fill to be NULL and allocate a temporary buffer for it, if so. Platforms tested: FreeBSD 4.5 (sleipnir)
* [svn-r5170] Raymond Lu2002-04-111-1/+1
| | | | | | | | | | | 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-r5152] Purpose:Quincey Koziol2002-04-091-2/+67
| | | | | | | | | | | | | | | 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-0/+171
| | | | | | | | | | | | | | | | | | | | | | 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/+53
| | | | | | | | | | | | | | | | | | | | | | 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-r4914] Purpose:Quincey Koziol2002-02-071-0/+31
| | | | | | | | | | | | | | | | | | 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-r4586] Purpose:Quincey Koziol2001-11-021-89/+76
| | | | | | | | | | | | | | 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-r4355] Purpose:Quincey Koziol2001-08-141-11/+11
| | | | | | | | | | | | | | | | | | | | | | 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-r4038] Purpose:Quincey Koziol2001-06-211-1/+1
| | | | | | | | | | | | | 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-r4012] Purpose:Quincey Koziol2001-06-181-1/+1
| | | | | | | | Clean up compiler warnings. Description: Just code neatening mostly, some casts, etc. Platforms tested: FreeBSD 4.3 (hawkwind)
* [svn-r3781] Purpose:Bill Wendling2001-04-051-9/+9
| | | | | | | | | | | | | | | | | | 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-r3252] Purpose:Quincey Koziol2001-01-091-8/+7
| | | | | | | | | | | | | 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-r2657] Quincey Koziol2000-10-101-1/+1
| | | | | | | | | | | | 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-1/+3
| | | | | | | | | | | | | | | 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-r2587] Purpose:Quincey Koziol2000-09-221-2/+6
| | | | | | | | | | | | | | | | | | | 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-r2546] Further patches to accomodate regular hyperslabs. More of the ↵Quincey Koziol2000-09-131-0/+8
| | | | | | tests are passing, but not all of them yet...
* [svn-r2544] Optimized regular hyperslab I/O routines and data structures. ↵Quincey Koziol2000-09-131-19/+119
| | | | | | | | | | | | | 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-r2073] Added free-list code to the library and took out the older ↵Quincey Koziol2000-04-041-572/+5
| | | | | | | "temporary buffer" code, since the functionality was superceded. See the followup document for details on the free-list code.
* [svn-r1944] Added "H5S_SELECT_PREPEND" and "H5S_SELECT_APPEND" operations to ↵Quincey Koziol2000-01-211-4/+3
| | | | | | | | | | point selections. Also fixed bug which was not allowing the "start_point" parameter to H5Sget_select_elem_pointlist to actually get used. It was always returning a list of points selected which started with the beginning of the list of points.
* [svn-r1932] Reversed the order that hyperslab blocks are added to the ↵Quincey Koziol2000-01-061-1/+2
| | | | | | | internal list of block to reduce amount of memory moving required. This corrects the exponential increase in time to add blocks for larger numbers of blocks.
* [svn-r1836] Mainly fixed a bug in VL datatype comparisons which was causing ↵Quincey Koziol1999-11-171-1/+1
| | | | | | | 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.
* [svn-r1576] Added H5Dvlen_get_buf_size function.Quincey Koziol1999-08-191-1/+1
|
* [svn-r1566] Changed C++ "operator" keyword to "op"Quincey Koziol1999-08-101-7/+7
|
* [svn-r1385] Updated H5Rdereference, H5Rget_object_type and H5Rget_region ↵Quincey Koziol1999-06-251-2/+2
| | | | | | | | | | | to accept a location ID (i.e. a file or group ID) as well as the dataset ID. This should allow Dave to get the palettes stored in the file correctly and also enable Bob and/or Bruce's indexing stuff. This change should be folded into the documentation for these three functions for the release. Also, I fixed a number of bugs in the hyperslab and point selection iterators for H5Diterate and they are working correctly now.
* [svn-r1374] Added in code to support the H5Diterate function, which I've got ↵Quincey Koziol1999-06-241-0/+69
| | | | | | | to add tests for now. Also, I revised some of the code for hyperslab I/O, which should provide a modest speedup in situations with lots of hyperslabs.
* [svn-r1277] Added additional checks into the dataspace code to determine if ↵Albert Cheng1999-05-251-0/+52
| | | | | | | | | the hyperslabs being written out are contiguous in memory and on disk and write/read them as one I/O operation (if the datatypes don't require conversion). This should be a good performance boost for those situations. It's especially needed on the ASCI Red (TFlops) machine. - QAK (from Albert's account on modi4 :-)
* [svn-r1182] Changed name of PABLO Mask to simplify automatic definitions.Dan Wells1999-04-141-1/+1
|
* [svn-r1159] Changed cast of the reference selection type into a decode, this ↵Quincey Koziol1999-03-231-3/+5
| | | | | | should fix the reference test problems on big-endian machines.
* [svn-r1139] Added code for H5Rget_object_typeQuincey Koziol1999-03-121-26/+42
|
* [svn-r1138] Changes since 19990304Robb Matzke1999-03-121-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ---------------------- ./config/*-aix4.* [REMOVED] ./config/*-aix4.x [NEW] ./config/solaris2.5 [REMOVED] ./config/solaris2.x [NEW] ./configure.in ./configure [REGENERATED] ./MANIFEST Changed the names of the IBM-SP2 config files by replacing the minor version numbers with an `x'. The solaris config warns about old versions of gcc. The RUNSERIAL value is set to the empty string by default. The config/* file (or user) can override it by setting it to some other value. The `--enable-parallel' with no flags turns on the HAVE_PARALLEL constant in the source code but doesn't add any MPI or MPI-IO libraries to the link line. If we are compiling for parallel then configure checks that we can actually link a very simple program. This has the benefit of detecting config errors before we waste time compiling the entire library. Configure recognizes `mpcc_r' as a parallel compiler. ./src/H5A.c ./src/H5Apublic.c Fixed some compiler warnings. Changed the return type of H5Aget_name() from hssize_t to ssize_t because the name can never be larger then memory.
* [svn-r1135] Expanded API for reading lists blocks/points to allow for just a ↵Quincey Koziol1999-03-111-14/+42
| | | | | | portion of the block/point-list to be read at a time.
* [svn-r1132] Dataset region references are now finished and working ↵Quincey Koziol1999-03-101-62/+515
| | | | | | | | | | | | | | | | | | | | correctly. Also, there are five new API functions for querying selections: H5Sget_select_hyper_nblocks - retrieves the number of hyperslab blocks in current hyperslab selection for a dataspace H5Sget_select_elem_npoints - retrieves the number of element points in current element selection for a dataspace H5Sget_select_hyper_blocklist - retrieves a list of the hyperslab blocks in current hyperslab selection for a dataspace H5Sget_select_elem_pointlist - retrieves a list of the element points in current element selection for a dataspace H5Sget_select_bounds - retrieves a n-dimensional bounding box containing current selection.
* [svn-r1015] Got rid of some warning messages.Albert Cheng1999-01-071-1/+0
| | | | Tested in O2K.
* [svn-r947] Lots of patches to enable dataset region references. The testing ↵Quincey Koziol1998-11-251-70/+209
| | | | | | for these need to be finished and checked in still.