Commit Graph

164 Commits

Author SHA1 Message Date
Quincey Koziol
4eb07936c7 [svn-r12593] Description:
Clean up some of the parallel chunk I/O compiler warnings and other minor
code rearrangement.

Tested on:
    FreeBSD 4.11 (sleipnir) w/paralllel
    h5committest
2006-08-17 14:26:42 -05:00
MuQun Yang
6916816a56 [svn-r12553] This check-in includes the following part of parallel optimization codes:
1. Provide another option for users to do independent IO with MPI file setview(collectively)
2. With the request of collective IO from users, using Independent IO with MPI file setview if we find collective IO is not good for the applications for IO per chunk(multi-chunk IO) case. Previously we used pure independent IO and that actually performed small IO(IO each row) for this case. The recent performance study suggested the independent IO with file setview can acheieve significantly better performance than collective IO when not many processes participate in the IO.
3. For applications that explicitly choose to do collective IO per chunk case, the library won't do any optimization(gather/broadcast) operations. The library simply passes the collective IO request to MPI-IO. 

Tested at copper, kagiso, heping, mir and tungsten(cmpi and mpich)
Kagiso is using LAM, t_mpi test was broken even.
The cchunk10 test  failed at heping and mir. I suspected it was an MPICH problem. Will investigate later.
Everything passed at copper.
at tungsten: the old cmpi bug(failed at esetw) is still there. Other tests passed.
Some sequential fheap tests failed at kagiso.
2006-08-08 22:00:11 -05:00
Quincey Koziol
e9d6c992d6 [svn-r12474]
Clean up some compiler warnings.

Tested on:
    FreeBSD 4.11 (sleipnir)
    Too minor to require h5committest
2006-07-15 14:49:04 -05:00
Quincey Koziol
7be3afb278 [svn-r12440] Purpose:
Code cleanup

Description:
    Trim trailing whitespace in Makefile.am and C/C++ source files to make
diffing changes easier.

Platforms tested:
    None necessary, whitespace only change
2006-06-27 09:45:06 -05:00
Quincey Koziol
3424f9f5d1 [svn-r12128] Purpose:
Code cleanup

Description:
    Clean up some compiler warnings (esp. those flagged on Windows builds)

Platforms tested:
    FreeBSD 4.11 (sleipnir)
    Too minor to require h5committest
2006-03-22 13:11:24 -05:00
MuQun Yang
19476ba364 [svn-r11963] Purpose:
bug fix for daily test

Description:
if (fm->select_chunk) is not NULL at sequential mode and not set by the library, it shouldn't be free.
Otherwise, it will cause failures in the daily test.

Solution:
Explicitly set (fm->select_chunk) to NULL for non-parallel case.


Platforms tested:
copper with parallel
heping with both sequential and parallel
shanti with sequential

Misc. update:
Hopefully only mir failed at daily test.
2006-02-22 14:50:27 -05:00
MuQun Yang
c0fbd63983 [svn-r11961] Purpose:
Bug fix in collective IO code

Description:
When select none occurs in one process, fm->select_chunk hasn't been allocated the memory(not allocated until create_file_hyper); however, this needs to be checked; it was caught with cmpi at NCSA linux cluster.



Solution:
Relocate the place to allocate the memory space for fm->select_chunk.

Platforms tested:
cmpi at tungsten
mpich at heping
kind of minor and let daily test catch other errors.

Misc. update:
This won't fix the failure at mir.
2006-02-21 17:10:23 -05:00
MuQun Yang
a6038b946e [svn-r11960] Purpose:
code clean up

Description:
Clean up some warnings in collective chunk IO code

Solution:

Platforms tested:
heping

Misc. update:
2006-02-21 09:14:22 -05:00
MuQun Yang
593f1a9a51 [svn-r11959] Purpose:
bug fix

Description:
During the process of the combination of collective chunk IO code and the original IO code,
The return value of a function call hasn't been initialized. On 32-bit mode at modi4, that value isn't set to 0 by default. So a fake error value returns.

Solution:
Re-arrange the code so that the return value will be set properly.


Platforms tested:
parallel:
modi4 - 32bit
heping
seq:
heping
Misc. update:
2006-02-20 15:47:25 -05:00
MuQun Yang
0fe91bb1a2 [svn-r11950] Purpose:
Enhanced collective chunk IO supports

Description:
1. When using collective IO with chunking storage without any tuning, performance may become worse under some circumstances.
2. Current HDF5 handles raw-data IO per chunk. So for many small chunks, many small IOs will be passed into MPI-IO. That may cause bad performance.
3. For one IO per chunk case, sometimes performance with collective is worse than performance with independent. An obvious case is when only one process is doing IO and all other process are not doing IO, the collective IO will only add overheads for communication. We want to avoid this case. Some management inside our library needs to be done.


Solution:
- Added managements of collective IO supports for chunking storage
         inside parallel HDF5
         1) Implemented One IO with collective mode for all chunks in the
            application by building one MPI derived datatype accross all
            chunks.
         2) Implemented the decision-making support to do collective IO inside
            MPI-IO per chunk.
         3) Added the decision-making support to do one IO accross all chunks
            or to do multiple IOs with each IO per chunk.
         4) Added the support to handle the case some processes won't do any IOs in
            collectively.
         5) Some MPI-IO package(mpich 1.2.6 or lower, e.g.) cannot handle
            collective IO correctly for the case when some processes have no
            contributions to IOs, a special macro is added to change
            collective IO mode to independent IO mode inside HDF5 library.



Platforms tested:

Parallel:

IBM AIX 5.2(copper)
Linux (heping) mpich-1.2.6
SDSC Teragrid mpich-1.2.5
Linux(Tungsten) mpich-1.2.6
Altix(NCSA cobalt)

Seq:
Linux(heping)

Misc. update:
2006-02-16 12:08:34 -05:00
Quincey Koziol
a1708eb023 [svn-r11712] Purpose:
New feature

Description:
    Check in baseline for compact group revisions, which radically revises the
source code for managing groups and object headers.

WARNING!!!!  WARNING!!!!  WARNING!!!!  WARNING!!!!  WARNING!!!!  WARNING!!!!
WARNING!!!!  WARNING!!!!  WARNING!!!!  WARNING!!!!  WARNING!!!!  WARNING!!!!

    This initiates the "unstable" phase of the 1.7.x branch, leading up
to the 1.8.0 release.  Please test this code, but do _NOT_ keep files created
with it - the format will change again before the release and you will not
be able to read your old files!!!

WARNING!!!!  WARNING!!!!  WARNING!!!!  WARNING!!!!  WARNING!!!!  WARNING!!!!
WARNING!!!!  WARNING!!!!  WARNING!!!!  WARNING!!!!  WARNING!!!!  WARNING!!!!


Solution:
    There's too many changes to really describe them all, but some of them
include:
    - Stop abusing the H5G_entry_t structure and split it into two separate
        structures for non-symbol table node use within the library: H5O_loc_t
        for object locations in a file and H5G_name_t to store the path to
        an opened object.  H5G_entry_t is now only used for storing symbol
        table entries on disk.

    - Retire H5G_namei() in favor of a more general mechanism for traversing
        group paths and issuing callbacks on objects located.  This gets us out
        of the business of hacking H5G_namei() for new features, generally.

    - Revised H5O* routines to take a H5O_loc_t instead of H5G_entry_t

    - Lots more...

Platforms tested:
    h5committested and maybe another dozen configurations.... :-)
2005-11-14 21:55:39 -05:00
Quincey Koziol
275d19661e [svn-r11593] Purpose:
Code cleanup

Description:
    Clean up & standardize a bit in preparation for coding standards
discussion.

Platforms tested:
    FreeBSD 4.11 (sleipnir)
    Too minor to require h5committest
2005-10-21 10:52:54 -05:00
Raymond Lu
1143f47e2d [svn-r11415] Purpose: Internal design change.
Description: H5T_register() replaces any existing data conversion path
with a new path.

Solution: Added a parameter to H5T_register() and H5T_path_find() to
signal the library whether the new conversion path is from API function
H5Tregister() or from private function like H5T_init_interface().  If it
is from H5Tregister(), replace existing path.  If it's from H5T_init_interface()
and the library is trying to register default hard conversion functions,
don't replace existing path because the path is registered by the library.
For example, the library registered H5T_conv_int_float() and is trying to
register H5T_conv_long_float().  The size of long is equal to int.  There's
no need to replace the path H5T_conv_int_float().

Platforms tested: h5committest and fuss.
2005-09-14 16:54:19 -05:00
Elena Pourmal
b379a469c0 [svn-r11402] Purpose: Maintenance
Description: Compiler complained about const type * variables that were
             used in the functions that require "non const" parameters.
             Compilation failed.

Solution: Use casting to avoid compilation errors.

Platforms tested: SX-6, heping and mir with new g95

Misc. update:
2005-09-12 22:19:58 -05:00
Quincey Koziol
6b45f5172c [svn-r11245] Purpose:
Code cleanup

Description:
    Trim trailing whitespace, which is making 'diff'ing the two branches
difficult.

Solution:
    Ran this script in each directory:

foreach f (*.[ch] *.cpp)
    sed 's/[[:blank:]]*$//' $f > sed.out && mv sed.out $f
end


Platforms tested:
    FreeBSD 4.11 (sleipnir)
    Too minor to require h5committest
2005-08-13 15:53:35 -05:00
Quincey Koziol
45f1eba213 [svn-r11241] Purpose:
Code cleanup

Description:
    Fix logic error in previous checkin and also finish refactoring I/O
initialization, including simplifying all the collective & parallel cases
into a more unified mechanism.

Platforms tested:
    FreeBSD 4.11 (sleipnir) w/ & w/o parallel
    Linux 2.4 (mir)
2005-08-13 13:09:57 -05:00
Quincey Koziol
2efc3027ec [svn-r11240] Purpose:
Bug fix

Description:
    Fix logic error for non-parallel file I/O with library built for parallel
I/O capability.

Platforms tested:
    Linux 2.4 (mir) w/parallel
2005-08-13 11:00:28 -05:00
Quincey Koziol
c5aa1f7a5f [svn-r11236] Purpose:
Code cleanup & bug fix

Description:
    Refactor recent collective chunk changes to simplify them.  Also, compute
the number of chunks by checking the number of objects in the chunk skip list
instead of getting the boundaries of the selection and counting the chunks that
it overlaps, which is faster and computes correct number for certain selections.

Platforms tested:
    FreeBSD 4.11 (sleipnir) w/parallel
    Too minor to require h5committest
2005-08-12 22:09:38 -05:00
Quincey Koziol
1ba06a8395 [svn-r11235] Purpose:
Code cleanup

Description:
    Refactor, simplify and cleanup Kent's recent checking for collective
chunk I/O.  There's a bug that I need to talk to Kent about and some more
cleanups still, but this is reasonable for an interim point.

Platforms tested:
    FreeBSD 4.11 (sleipnir) w/parallel
    Too minor for h5committest
2005-08-12 10:53:55 -05:00
MuQun Yang
870c5b2f66 [svn-r11231] Purpose:
bug fix for collective chunk IO, phase 1
Optimization hasn't been done yet, the collective chunk IO bug should be fixed.
Description:
In chunking storage, memory space and file space will be remapped, So to check
whether file space and memory space are regular in order to use optimized MPI derived
datatype for collective call one has to check per-chunk wise instead of per hyperslab wise.
Even a regular memory space will be stored in span-tree and will be irregular before chunk IO.

Solution:
1. Check file space and memory space per chunk wise instead of per hyperslab wise.
2. For collective IO mode, number of chunks covered by hyperslab may be different. Since we are
handing per chunk per IO, for the extra chunk IO for some(not all) processors, collective mode will
cause program hanged. So for the extra chunk Io mode independent IO has to be used.
3. On some platforms, Complex MPI derived datatype is not working, so we have to use independent IO for collective IO mode if the selection is irregular. However, when the selection is regular, we do want to use collective IO since that will improve performance. Special cares have to be added for this case.


Platforms tested:
copper(AIX 5.1) Linux(heping mpich 1.2.6), Teragrid machine, Cobalt(altix), modi4

Misc. update:
2005-08-11 13:48:09 -05:00
Quincey Koziol
d641030436 [svn-r10951] Purpose:
Bug fix

Description:
    Hyperslab selections that had a selection offset and were applied to a
chunked dataset could get into an infinite loop or core dump if the same
selection was used multiple times, with different selection offsets.

Solution:
    "Normalize" the selection with the selection offset, generate the
selections for the chunks overlapped and then "denormalize" the selection.

Platforms tested:
    FreeBSD 4.11 (sleipnir)
    Too minor to require h5committest
2005-06-18 00:10:22 -05:00
Quincey Koziol
98244eb5dd [svn-r10705] Purpose:
Code cleanup

Description:
    Clean up a few compiler warnings of various sorts...

Platforms tested:
    FreeBSD 4.11 (sleipnir)
    Too minor to require h5committest
2005-04-30 16:05:34 -05:00
Quincey Koziol
227c58bd98 [svn-r10574] Purpose:
Code cleanup

Description:
    Clarify error string.

Platforms tested:
    FreeBSD 4.11 (sleipnir)
    Too minor to require h5committest
2005-04-07 19:41:27 -05:00
MuQun Yang
1d6c4017ec [svn-r10545] Purpose:
Activating collective IO supports for irregular selction inside HDF5 dataset.
This support doesn't include to build the final complicated MPI derived datatype support for chunking storage.

Description:
Support collective chunk IO for both contiguous and chunking storage for irregular selection( using H5S_SELECT_OR for multiple hyperslab selection)
Solution:
Using MPI derived datatype to realize this feature.
Problems still need to be investigated:
 Big size irregular hyperslab selection test may cause MPI hang or abnormalexit with MPICH family on various platforms. This is really hard to debug since sometimes it can work and sometimes it cannot work. We will continue investigating those cases. This may not be parallel HDF5 bugs since with the recent version of poe at IBM platforms, all tests passed.


Platforms tested:
1. Linux heping 2.4.21-27.0.1 with mpich
2. AIX 5.1 copper with mpcc_r
3. Altix cobalt SGI linux 2.4.21-sgi304rp05031014_10149 with icc -lmpi
4. Linux Cluster SDSC TG, intel 8-r2 with mpich 1.2.5
5. NCSA Linux Cluster Tungsten, MPICH-TCP-1.2.5.2, Intel 8.0 under lustre
6. NCSA Linux Cluster Tungsten, MPICH-LAM-INTEL711, sometimes not working
7. NCSA Linux CLuster Tungsten, champion-pro-1.2.0-3, not working for other collective IO tests, but work for irregular selection collective IO test.

Misc. update:
2005-04-05 14:41:20 -05:00
Quincey Koziol
45a16682e2 [svn-r10187] Purpose:
Code cleanup, mostly

Description:
    Remove remaining TBBT error info

    Add new error code for block tracker

Platforms tested:
    FreeBSD 4.11 (sleipnir)
    Solaris 2.9 (shanti)
2005-03-10 21:33:09 -05:00
Raymond Lu
70c0ba03ce [svn-r9959] Purpose: Bug fix
Description: For variable-length string, H5Tget_class returned H5T_STRING as
its class.  But H5Tdetect_class and H5Tget_member_class considered it as
H5T_VLEN.  This is fixed to let all these 3 functions treat it as H5T_STRING.
Some test cases have been added to dtypes.c


Platforms tested:  heping - already tested for v1.6 with h5committest

Misc. update:  RELEASE.txt
2005-02-08 13:30:29 -05:00
Elena Pourmal
c1df1b3ea4 [svn-r9857] Purpose: Maintenance
Description: Removed PABLO from the source

Solution:

Platforms tested: arabica with 64-bit, copper with parallel,
                  heping with GNU C and C++ and PGI fortran (but
                  I disabled hl, there is some weird problem only
                  on heping: F9XMODFLAG is not
                  propagated to the Makefile files

Misc. update:
2005-01-21 20:16:57 -05:00
Quincey Koziol
4357fccbd3 [svn-r9762] Purpose:
Code cleanup

Description:
    Change pablo mask to conform to the style used by the rest of the library

Platforms tested:
    None needed - very, very minor
2005-01-06 16:21:52 -05:00
Quincey Koziol
7fae6be03c [svn-r9734] Purpose:
Code cleanup

Description:
    Convert chunk iteration code to use skip lists instead of threaded, balanced
binary trees.

Platforms tested:
    FreeBSD 4.10 (sleipnir) w/parallel & szip
    Too minor to require h5committest
2004-12-30 11:26:45 -05:00
Quincey Koziol
427ff7da28 [svn-r9727] Purpose:
Bug Fix/Code Cleanup/Doc Cleanup/Optimization/Branch Sync :-)

Description:
    Generally speaking, this is the "signed->unsigned" change to selections.
However, in the process of merging code back, things got stickier and stickier
until I ended up doing a big "sync the two branches up" operation.  So... I
brought back all the "infrastructure" fixes from the development branch to the
release branch (which I think were actually making some improvement in
performance) as well as fixed several bugs which had been fixed in one branch,
but not the other.

    I've also tagged the repository before making this checkin with the label
"before_signed_unsigned_changes".

Platforms tested:
    FreeBSD 4.10 (sleipnir) w/parallel & fphdf5
    FreeBSD 4.10 (sleipnir) w/threadsafe
    FreeBSD 4.10 (sleipnir) w/backward compatibility
    Solaris 2.7 (arabica) w/"purify options"
    Solaris 2.8 (sol) w/FORTRAN & C++
    AIX 5.x (copper) w/parallel & FORTRAN
    IRIX64 6.5 (modi4) w/FORTRAN
    Linux 2.4 (heping) w/FORTRAN & C++


Misc. update:
2004-12-29 09:26:20 -05:00
Quincey Koziol
ac051f825f [svn-r9665] Purpose:
Fix whitespace

Description:
    Clean up whitespace a bit

Platforms tested:
    None, just eyeballed, very minor
2004-12-13 23:25:50 -05:00
MuQun Yang
b06deb5322 [svn-r9657] Purpose:
small bug fix

Description:
When checking whether the current chunk covers the irregular hyperslab,
the ending point of the chunk is not updated.
This will cause the wrong checking output and fail for some irregular hyperslab
selection.

Solution:
Updating the ending point of the chunk.

Platforms tested:
Linux 2.4 + parallel (too small to use h5committest)

Misc. update:
2004-12-13 11:59:10 -05:00
MuQun Yang
cb58a0d8c6 [svn-r9574] Purpose:
Adding code for using MPI derived datatype to handle collective IO

Description:
No testing yet, won't affect the library.

Solution:

Platforms tested:
linux 2.4 + mpich 1.2.6
Aix 5.1 + mpcc_r

Misc. update:
2004-11-24 16:11:36 -05:00
MuQun Yang
539080945c [svn-r9529] Purpose:
Check in some new fixes for MPI derived datatype routines

Description:
MPI derived datatype algorithm seems working for a simple case;
however, there are still other problems need to be solved. So the
code cannot be used for the time being. Check-in only for debugging.
It won't affect other part of the library.
Solution:

Platforms tested:
Linux 2.4 (heping, serial and parallel)
(Since no new tests were added and changes are mostly restricted to
one fuction, no need to test three platforms).


Misc. update:
2004-11-15 15:46:59 -05:00
MuQun Yang
1702d75b3a [svn-r9519] Purpose:
Adding codes for the general MPI derived datatype in order to
better incorporate new fixes of HDF5 library.

Description:
Note: These codes have not been tested for general use.
Don't call these functions in your developments of the HDF5 library.
Also these codes are stand-alone codes, they should not affect
other library codes.

Solution:

Platforms tested:
Heping(C and Parallel linux 2.4, mpich 1.2.6)
Arabica(C,C++,Fortran, Solaris 2.7)
Copper(C,c++,Fortran, AIX 5.1, NOTE: c++ FAILED, seems not due to the recent check-in)

Misc. update:
2004-11-11 16:00:01 -05:00
Quincey Koziol
f102816b0f [svn-r9413] Purpose:
Code cleanup

Description:
    Fix a couple of return values from NULL -> FAIL.

Platforms tested:
    FreeBSD 4.10 (sleipnir)
    Too minor to require h5committest
2004-10-12 15:59:32 -05:00
Quincey Koziol
74a448d084 [svn-r9358] Purpose:
Bug fix

Description:
    Relax restrictions on parallel I/O to allow compressed, chunked datasets
to be read in parallel (collective access will be degraded to independent
access, but will retrieve the information still).

Platforms tested:
    FreeBSD 4.10 (sleipnir) w/parallel
    Solaris 2.7 (arabica)
    IRIX64 6.5 (modi4)
    h5committest
2004-10-04 15:29:31 -05:00
Quincey Koziol
7af838b69c [svn-r9354] Purpose:
Bug fix & code cleanup

Description:
    More dataset cleanups to get to a point where we can fix the chunked I/O
bug.

    Also fix a couple of errors in the recent file object resurrection changes
which should hopefully address the recent daily test failres (H5T.c)

Platforms tested:
    FreeBSD 4.10 (sleipnir) w/parallel
    Solaris 2.7 (arabica)
    h5committest
2004-10-01 18:00:42 -05:00
Quincey Koziol
7d457ba693 [svn-r9342] Purpose:
Bug fix/code cleanup

Description:
    Clean up raw data I/O code to bundle the I/O parameters (dataset, DXPL ID,
etc) into a single struct to pass around through the dataset I/O routines,
since they are always passed together, until very near the bottom of the I/O
stack.

Platforms tested:
    FreeBSD 4.10 (sleipnir) w/parallel
    Solaris 2.7 (arabica)
    IRIX64 6.5 (modi4)
    h5committest
2004-09-29 22:46:58 -05:00
James Laird
5c0011a713 [svn-r9329]
Purpose:
Feature

Description:
Datatypes and groups now use H5FO "file object" code that was previously
only used by datasets.  These objects will hold a file open if the file
is closed but they have not yet been closed.  If these objects are unlinked
then relinked, they will not be destroyed.  If they are opened twice (even
by two different names), both IDs will "see" changes made to the object
using the other ID.
When an object is opened using two different names (e.g., if a dataset was
opened under one name, then mounted and opened under its new name), calling
H5Iget_name() on a given hid_t will return the name used to open that hid_t,
not the current name of the object (this is a feature, and a change from the
previous behavior of datasets).

Solution:
Used H5FO code that was already in place for datasets.  Broke H5D_t's, H5T_t's,
and H5G_t's into a "shared" struct and a private struct.  The shared structs
(H5D_shared_t, etc.) hold the object's information and are used by all IDs
that point to a given object in the file.  The private structs are pointed
to by the hid_t and contain the object's group entry information (including its
name) and a pointer to the shared struct for that object.
This changed the naming of structs throughout the library (e.g., datatype->size
is now datatype->shared->size).  I added an updated H5Tinit.c to windows.zip.

Platforms tested:
Visual Studio 7, sleipnir, arabica, verbena

Misc. update:
2004-09-28 14:04:19 -05:00
Quincey Koziol
9fc48a0097 [svn-r9312] Purpose:
Bug fix.

Description:
    Allow I/O to occur on 0 element selections.

Platforms tested:
    h5committest
2004-09-22 22:05:15 -05:00
Quincey Koziol
daa96590d3 [svn-r8987] Purpose:
Code cleanup

Description:
    Fix another batch of minor differences between the development and release
branches.

Platforms tested:
    FreeBSD 4.10 (sleipnir) w/parallel
    Too minor to require h5committest
2004-08-02 12:51:50 -05:00
James Laird
5a19f181b3 [svn-r8953]
Purpose:
Bug fix

Description:
When a simple dataspace is created, its extent should be set before using it,
or it will silently function as a NULL dataspace.

Solution:
Added checks on user-supplied dataspaces.  Now dataspaces without extents set
will throw errors; users must explicitly set a dataspace to be NULL.

Platforms tested:
sleipnir, windows
2004-07-27 11:55:19 -05:00
Quincey Koziol
b015e55614 [svn-r8941] Purpose:
Code optimization

Description:
    Changed calloc() calls to malloc() calls allocating background buffers
during dataset writes, since the background buffer information will be read
from disk anyway, overwriting any existing values.

Platforms tested:
    Solaris 2.7 (arabica)
    FreeBSD 4.10 (sleipnir) w/parallel
    Too minor to require h5committest
2004-07-25 23:30:04 -05:00
Quincey Koziol
ecd9f0a10e [svn-r8932] Purpose:
Code cleanup

Description:
    Clean up collective chunking code a bit.

    Also, add '--enable-instrument' configure flag to have a mechanism for
determining that optimized operations happened correctly in the library (instead
of just the "normal" way) by allowing 'flag' properties to be set outside the
library and set when the "right" thing happens.  This is mainly for debugging
and regression checks, so we make certain we don't break optimized I/O by
accident.  It's enabled by default when --enable-debug is on (which is on by
default in the development branch and off by default in the release branch),
but can also be independently controlled with its own configure flag.

Platforms tested:
    FreeBSD 4.10 (sleipnir) w/parallel
    IBM p690 (copper) w/parallel
2004-07-22 15:46:27 -05:00
MuQun Yang
1232d53a32 [svn-r8923] Purpose:
To add a special section of codes for collective-chunk IO tests.

Description:
The current patch of collective chunk IO support in HDF5 can only handle
some special("however, can cover many applications") cases,
Inside source code, we did a careful checking to make sure other cases would
not fall into this category and would not use collective IO.
We also would like to test whether those collective conditions were met in our
test programs.
The current parallel HDF5 handled those collective IO requests in a special way.
If the library finds it cannot do collective IO, it will silently change to independent IO.
So basically there is no better way to check whether the library is doing what it should do without "hacking" into HDF5 source codes for the purpose of testing. But the "hacking" should not affect library work and should be easily pulled out after we get more general collective IO algorithm to work.

With Quincey's suggestion, we used HDF5 property APIs to finish the job.
Solution:
The approach includes three parts:
1) In the test program, insert a property inside data transfer property list.
   Set a default value for this property.
2) Inside H5Dio.c, when the library finds that it cannot do collective IO with chunking storage, it will change the default value.
3) Then the test program will recheck the value after H5Dwrite or H5Dread to evaluate whether
the current collective IO case is doing the right thing.

Note: The test won't stop after it finds that the library is not doing the right thing and probably it will finish normally. The current approach is that the test program just printed out an error message. It should be changed later.
Platforms tested:o
copper,arabica,eirene

Misc. update:
2004-07-21 18:40:27 -05:00
MuQun Yang
8933c59694 [svn-r8906] Purpose:
Adding the first round of patches about supporting collective chunk IO in HDF5

Description:
The current HDF5 library doesn't support collective MPIO with chunk storage. When users set collective option in their data transfer with chunk storage, the library silently converted the option to INDEPENDENT and that caused trememdous performance penalty. Some application like
WRF-parallel HDF5 IO module has to use contiguous storage for this reason. However, chunking storage has its own advantage(supporting compression filters and extensible dataset), so to make collective MPIO possible inside HDF5 with chunking storage is a very important task.

This check-in make collective chunk IO possible for some special cases. The condition is as follows(either case is fine with using collective chunk IO)
1. for each process, the hyperslab selection of the file data space of each dataset is regular and it is fit in one chunk.

2. for each process, the hyperslab selection of the file data space of each dataset is single and the number of chunks for the hyperslab selection should be equal.

Solution:
Lift up the contiguous storage requirement for collective IO.
Use H5D_isstore_get_addr to get the corresponding chunk address. Then the original library routines will take care of getting the correct address to make sure that MPI FILE TYPE is built correctly for collective IO>

Platforms tested:
arabica(sol), copper(AIX), eirene(Linux)
parallel test is checked at copper.

Misc. update:
2004-07-20 16:35:41 -05:00
Quincey Koziol
00909f278d [svn-r8901] Purpose:
Bug fix

Description:
    Allow buffer parameter to H5Dread & H5Dwrite to be NULL if there are no
elements to transfer.

Platforms tested:
    FreeBSD 4.10 (sleipnir) w/parallel
    Too minor to require h5committest
2004-07-20 12:11:36 -05:00
Quincey Koziol
7cac82cf68 [svn-r8801] Purpose:
Code optimization

Description:
    Set up datatype ID for dataset's datatype on disk.  This allows us to avoid
repeatedly copying the datatype when an ID is needed.

    Also, clean up a few warnings in various other places.

Platforms tested:
    Solaris 2.7 (arabica)
    FreeBSD 4.10 (sleipnir) w/parallel
    Too minor to require h5committest
2004-07-03 15:03:09 -05:00
Quincey Koziol
e5e786f589 [svn-r8782] Purpose:
Code cleanup

Description:
    Clean up almost all warnings from Windows builds.

Platforms tested:
    FreeBSD 4.10 (sleipnir) w/parallel
    Too minor to require h5committest
2004-07-01 15:02:47 -05:00