Commit Graph

183 Commits

Author SHA1 Message Date
Albert Cheng
d2bdbd0480 [svn-r6753] Purpose:
Code cleanup

Description:
Replaced the comm/info freeing with H5FD_mpio_comm_info_free to make
it cleaner and consistent.
Replaced couple FUNC_LEAVE_NOAPI(SUCCEED) with FUNC_LEAVE_NOAPI(ret_value).
These were bugs since it was possible errors may occur at FUNC_ENTER...()
time and this hardcoding would not report those errors.
Documented some modification history.


Platforms tested:
Did not h5committested because these are all MPI code and well protected
by HAVE_PARALLEL.
Tested in eirene and modi4, both parallel mode.

Misc. update:
2003-04-25 09:21:16 -05:00
Albert Cheng
7b976dd7a3 [svn-r6728] Purpose:
Silly bug fix.

Description:
Forgot to put the comm/info duplication code in.

Solution:
Put them back in.

Platforms tested:
Did not run h5committest since the changes are all in the MPIO driver code.
Tested on eirene and Modi4, both parallel modes.

Misc. update:
2003-04-22 00:50:12 -05:00
Albert Cheng
3585f15d91 [svn-r6708] Purpose:
Bug fixes/API changes

Description:
    Previously, the Communicator and Info object arguments supplied
    to H5Pset_fapl_mpio() are stored in the property with its handle
    values.  This meant changes to the communicator or the Info object
    after calling H5Pset_fapl_mpio would affect the how the property
    list function.  This was also the case when H5Fopen/create operated.
    They just stored the handle value.  This is not according to the
    MPI-2 defined behavior of how Info objects should be handled. (MPI-2
    defines Info objects must be parsed when called.)
    The old design was trying to avoid numerous duplicates of the same
    information (e.g., every property object holds one version, every
    file opened holds another version, when all of them are referring to
    the same original version.)  Nevertheless it is safer to implement
    it according to MPI-2 definition.
    Futhermore, the library often needs to do message passing using the
    supplied communicator.  Using the same communicator as the application
    version may result in some messages mix up.
Solution:
    H5Pset_fapl_mpio now stores a duplicate of each of the communicator
    and Info object.
    H5Pget_fapl_mpio returns a duplicate of its stored communicator and
    Info object.  It is now the responsibility of the applications to free
    those objects when done.
    H5Fopen/create also stores a duplicate of the communicator and Info
    object supplied by the File Access Property list.
    H5Fclose frees those duplicates.
    There are a few more internal VFL call back functions that they
    follow this "make duplicates" requirement.

Platforms tested:
"h5committested".
What other platforms/configurations were tested?
    Eirene (mpicc), sol(mpicc), copper(parallel)

Misc. update:
2003-04-17 22:03:52 -05:00
Bill Wendling
02be089f0c [svn-r6501] Purpose:
New Feature

Description:
    Added support for the lock and unlock function calls for file
    drivers. Only FPHDF5 uses this feature. All of these drivers don't
    define lock or unlock methods.

Platforms tested:
    Linux, Modi4, Sol

Misc. update:
2003-03-19 18:29:23 -05:00
Quincey Koziol
8831302db5 [svn-r6468] Purpose:
Potential bug fix.

Description:
    The code to rotate the metadata writing process may not be compiled
    correctly in all cases.

Solution:
    Change from using "++mpi_round" to "mpi_round+1"

Platforms tested:
    Eyeballed...
2003-03-06 07:39:12 -05:00
Quincey Koziol
1074ccf4d9 [svn-r6398] Purpose:
Code cleanup

Description:
    Clean up some compiler warnings

Platforms tested:
    FreeBSD 4.7 (sleipnir)
2003-02-12 12:04:40 -05:00
Quincey Koziol
24d8506dd5 [svn-r6387] Purpose:
Bug Fix

Description:
    Metadata cache in parallel I/O can cause hangs in applications which
    perform independent I/O on chunked datasets, because the metadata cache
    can attempt to flush out dirty metadata from only a single process, instead
    of collectively from all processes.

Solution:
    Pass a dataset transfer property list down from every API function which
    could possibly trigger metadata I/O.

    Then, split the metadata cache into two sets of entries to allow dirty
    metadata to be set aside when a hash table collision occurs during
    independent I/O.

Platforms tested:
    Tested h5committest {arabica (fortran), eirene (fortran, C++)
        modi4 (parallel, fortran)}

    FreeBSD 4.7 (sleipnir) serial & parallel

Misc. update:
    Updated release_docs/RELEASE
2003-02-10 12:26:09 -05:00
Bill Wendling
fed785b2eb [svn-r6372] Purpose:
Buglet
Description:
    The title of the function in FUNC_ENTER_* was wrong.
Solution:
    Changed to correct title.
Platforms tested:
    Linux (small change).
2003-02-03 15:44:55 -05:00
Albert Cheng
daa26b6c11 [svn-r6313] Purpose:
Updated
Description:
    Updated Copyright notice.
    Replaced HGOTO_ERROR calls involving MPI calls with HMPI_GOTO_ERROR.
Platforms tested:
    Tested h5committest {arabica (fortran), eirene (fortran, C++)
	modi4 (parallel, fortran)}?  Tested on Eirene (PP) only since
	the code is in the MPIO module only.
2003-01-22 14:56:45 -05:00
Quincey Koziol
f8da76cb9f [svn-r6266] Purpose:
Code cleanup/new feature.

Description:
    Split FUNC_LEAVE into API and non-API specific versions.  This allows a
    solution to compiling this branch with C++, as well as reducing the size
    of the binaries produced.

Platforms tested:
    FreeBSD 4.7 (sleipnir) w/serial, parallel (including MPE) & thread-safe
2003-01-10 15:26:02 -05:00
Quincey Koziol
9a433b99a5 [svn-r6252] Purpose:
Lots of performance improvements & a couple new internal API interfaces.

Description:
    Performance Improvements:
        - Cached file offset & length sizes in shared file struct, to avoid
            constantly looking them up in the FCPL.
        - Generic property improvements:
            - Added "revision" number to generic property classes to speed
                up comparisons.
            - Changed method of storing properties from using a hash-table
                to the TBBT routines in the library.
            - Share the propery names between classes and the lists derived
                from them.
            - Removed redundant 'def_value' buffer from each property.
            - Switching code to use a "copy on write" strategy for
                properties in each list, where the properties in each list
                are shared with the properties in the class, until a
                property's value is changed in a list.
        - Fixed error in layout code which was allocating too many buffers.
        - Redefined public macros of the form (H5open()/H5check, <variable>)
            internally to only be (<variable>), avoiding innumerable useless
            calls to H5open() and H5check_version().
        - Reuse already zeroed buffers in H5F_contig_fill instead of
            constantly re-zeroing them.
        - Don't write fill values if writing entire dataset.
        - Use gettimeofday() system call instead of time() system when
            checking the modification time of a dataset.
        - Added reference counted string API and use it for tracking the
            names of objects opening in a file (for the ID->name code).
        - Removed redundant H5P_get() calls in B-tree routines.
        - Redefine H5T datatype macros internally to the library, to avoid
            calling H5check redundantly.
        - Keep dataspace information for dataset locally instead of reading
            from disk each time.  Added new module to track open objects
            in a file, to allow this (which will be useful eventually for
            some FPH5 metadata caching issues).
        - Remove H5AC_find macro which was inlining metadata cache lookups,
            and call function instead.
        - Remove redundant memset() calls from H5G_namei() routine.
        - Remove redundant checking of object type when locating objects
            in metadata cache and rely on the address only.
        - Create default dataset object to use when default dataset creation
            property list is used to create datasets, bypassing querying
            for all the property list values.
        - Use default I/O vector size when performing raw data with the
            default dataset transfer property list, instead of querying for
            I/O vector size.
        - Remove H5P_DEFAULT internally to the library, replacing it with
            more specific default property list based on the type of
            property list needed.
        - Remove redundant memset() calls in object header message (H5O*)
            routines.
        - Remove redunant memset() calls in data I/O routines.
        - Split free-list allocation routines into malloc() and calloc()-
            like routines, instead of one combined routine.
        - Remove lots of indirection in H5O*() routines.
        - Simplify metadata cache entry comparison routine (used when
            flushing entire cache out).
        - Only enable metadata cache statistics when H5AC_DEBUG is turned
            on, instead of always tracking them.
        - Simplify address comparison macro (H5F_addr_eq).
        - Remove redundant metadata cache entry protections during dataset
            creation by protecting the object header once and making all
            the modifications necessary for the dataset creation before
            unprotecting it.
        - Reduce # of "number of element in extent" computations performed
            by computing and storing the value during dataspace creation.
        - Simplify checking for group location's file information, when file
            has not been involving in file-mounting operations.
        - Use binary encoding for modification time, instead of ASCII.
        - Hoist H5HL_peek calls (to get information in a local heap)
            out of loops in many group routine.
        - Use static variable for iterators of selections, instead of
            dynamically allocation them each time.
        - Lookup & insert new entries in one step, avoiding traversing
            group's B-tree twice.
        - Fixed memory leak in H5Gget_objname_idx() routine (tangential to
            performance improvements, but fixed along the way).
        - Use free-list for reference counted strings.
        - Don't bother copying object names into cached group entries,
            since they are re-created when an object is opened.

        The benchmark I used to measure these results created several thousand
        small (2K) datasets in a file and wrote out the data for them.  This is
        Elena's "regular.c" benchmark.

        These changes resulted in approximately ~4.3x speedup of the
        development branch when compared to the previous code in the
        development branch and ~1.4x speedup compared to the release
        branch.

        Additionally, these changes reduce the total memory used (code and
        data) by the development branch by ~800KB, bringing the development
        branch back into the same ballpark as the release branch.

        I'll send out a more detailed description of the benchmark results
        as a followup note.

    New internal API routines:
        Added "reference counted strings" API for tracking strings that get
            used by multiple owners without duplicating the strings.
        Added "ternary search tree" API for text->object mappings.

Platforms tested:
    Tested h5committest {arabica (fortran), eirene (fortran, C++)
	modi4 (parallel, fortran)}
    Other platforms/configurations tested?
        FreeBSD 4.7 (sleipnir) serial & parallel
        Solaris 2.6 (baldric) serial
2003-01-09 12:20:03 -05:00
Quincey Koziol
294647ea97 [svn-r5987] Purpose:
Code cleanup

Description:
    Clean up compile warnings.

Platforms tested:
    FreeBSD 4.6 (sleipnir) w and w/o parallel
    Linux 2.2.x (eirene) w/FORTRAN & C++
    Solaris 2.7 (arabica) w/FORTRAN
    IRIX64 6.5 (modi4) w/FORTRAN & parallel
2002-10-14 14:23:40 -05:00
Raymond Lu
d1e26ae328 [svn-r5951]
Purpose:
    New API functions
Description:
    Added API functions to return pointer to low-level file handle
    (H5Fget_vfd_handle and H5FDget_vfd_handle) and related property list
    setting functions(H5Pset_family_offset and H5Pset_multi_type).
Platforms tested:
    Linux 2.2(eirene), Solaris 2.7(arabica), IRIX64 6.5(modi4)
2002-09-30 11:31:55 -05:00
Quincey Koziol
5112232ddf [svn-r5871] Purpose:
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)
2002-08-12 08:33:42 -05:00
Quincey Koziol
8f7425d2a2 [svn-r5867] Purpose:
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
2002-08-09 15:48:23 -05:00
Quincey Koziol
d8397a6f42 [svn-r5842] Purpose:
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.
2002-08-08 11:52:55 -05:00
Quincey Koziol
99eee6dff9 [svn-r5814] Purpose:
Bug Fix

Description:
    It was possible to create corrupted metadata information (either in memory
    or in the file or both) with a parallel I/O program because of the way
    metadata writes were being handled for writes out of the metadata cache.

Solution:
    Added a dataset transfer property called "block before metadata write"
    which is used by the MPI-I/O and MPI-posix drivers to sync up all the
    processes before attempting a metadata write.  This property is currently
    only for metadata writes from the metadata cache.

Platforms tested:
    IRIX64 6.5 (modi4) w/parallel
2002-07-19 14:27:09 -05:00
Quincey Koziol
363ec52b7c [svn-r5799] Purpose:
New feature.

Description:
    Added MPI-posix VFL driver.  This driver uses MPI to coordinate actions, but
    performs I/O directly with posix sec(2) I/O functions.  This driver should
    _NOT_ be used if the file accessed is not on a parallel filesystem.

Platforms tested:
    FreeBSD 4.6 (sleipnir) w/parallel & IRIX64 6.5 (modi4) w/parallel
2002-07-15 10:21:32 -05:00
Quincey Koziol
ace1f474b7 [svn-r5690] Purpose:
Bug Fix

Description:
    When parallel I/O is used, the MPI-I/O VFL driver uses a "lazy" model to
    call MPI_File_set_view() in order to reduce the number of calls to this
    function.  However, this is unsafe, because if a collective I/O which uses
    MPI derived types (and thus uses MPI_File_set_view()) is immediately
    followed by an independent I/O, the code will attempt to call
    MPI_File_set_view() in order to switch back to the default view of the
    file.  MPI_File_set_view() is a collective call however, and this causes
    the application to hang.

Solution:
    Removed "lazy" MPI_File_set_view() code, instead set the file view when it
    is needed (with MPI derived types) and immediately set the file view back to
    the default view before leaving the I/O routine.

Platforms tested:
    IRIX64 6.5 (modi4) w/parallel.  Also, tested with the latest development
    and release code for the SAF library, which now works correctly with this
    change.  (Although the release branch of the SAF library seems to have a
    bug, this 1.4.4 release candidate code gets as far as the version the SAF
    library is released on top of (1.4.2-patch1, I believe)).
2002-06-24 08:47:14 -05:00
Quincey Koziol
3659ae4176 [svn-r5677] Purpose:
Code improvement

Description:
    Some small code cleanups and took out the code the was turning off the
    metadata cache for parallel I/O (!)

Platforms tested:
    IRIX64 6.5 (modi4) w/parallel
2002-06-19 12:07:52 -05:00
Quincey Koziol
ea052ffd55 [svn-r5674] Purpose:
Code cleanup

Description:
    Removed more compiler warnings, etc.

Platforms tested:
    Linux 2.2.x (eirene) w/parallel
2002-06-19 11:06:55 -05:00
Quincey Koziol
aefc39ac32 [svn-r5667] Purpose:
Code cleanup

Description:
    Turn on more warnings in the IRIX builds and clean them up.

Platforms tested:
    IRIX64 6.5 (modi4) w/parallel
2002-06-19 07:54:53 -05:00
Quincey Koziol
972707dcd3 [svn-r5660] Purpose:
Code optimization

Description:
    Avoid creating MPI types (and thus requiring a MPI_File_set_view() call)
    when contiguous selections are used for dataset I/O.  This should be a
    performance improvement for those sorts of selections.

Platforms tested:
    Linux 2.2.x (eirene) w/parallel && IRIX64 6.5 (modi4) w/parallel & FORTRAN
2002-06-18 09:02:17 -05:00
Quincey Koziol
15a916df4b [svn-r5652] Purpose:
Code cleanup

Description:
    Use dataset transfer property list to hold information about the MPI types
    for the current transfer, instead of setting pseudo-global variables in
    the file's struct.

Platforms tested:
    Linux 2.2.x (eirene) w/parallel & IRIX64 6.5 (modi4) w/parallel & FORTRAN
2002-06-17 11:38:43 -05:00
Quincey Koziol
2ae3f6b866 [svn-r5650] Purpose:
Code cleanup

Description:
    Change MPI-I/O code to use the address of the dataset for the displacement,
    instead of having a separate displacement value.  Removed displacement
    parameter from H5FD_mpio_setup parameters.

Platforms tested:
    Linux 2.2.x (eirene) w/parallel & IRIX64 6.5 (modi4) w/parallel.
2002-06-17 09:12:34 -05:00
Quincey Koziol
35c3c893e8 [svn-r5550] Purpose:
Code Improvement

Description:
    Split the metadata accumulator code into two parts: one for allowing writes
    of the accumulator buffer during reads (when the buffer is dirty and needs
    to be flushed to disk in order to hold the new metadata being read in) and
    another for only allowing writes of the buffer during writes.

    This allows the MPI-I/O VFL driver to use the metadata accumulator (but
    only during writes) and benefit from the reduced number of metadata I/O
    operations that it brings.

Platforms tested:
    IRIX64 6.5 (modi4) w/parallel
2002-06-06 22:34:21 -05:00
Quincey Koziol
6b1208407f [svn-r5536] Purpose:
New feature.

Description:
    Added a "small data" block allocation mechanism to the library, similar to
    the mechanism used for allocating metadata currently.

    See the RFC for more details:
        http://hdf.ncsa.uiuc.edu/RFC/SmallData/SmallData.html

    This reduces the number of I/O operations which hit the disk for my test
    program from 19 to 15 (i.e. from 393 to 15, overall).

Platforms tested:
    Solaris 2.7 (arabica) w/FORTRAN and FreeBSD 4.5 (sleipnir) w/C++
2002-06-05 10:23:20 -05:00
Bill Wendling
dd51aae3ca [svn-r5530] Purpose:
Code Cleanup
Description:
    Removed some compiler warnings.
Solution:
    In a few cases, NULL was being returned when a FAIL was supposed to
    be returned instead. There were some header files which needed to be
    included in a few of the sources. A couple of if-then statements had
    assignments in the conditional part. The compiler warned that they
    should have extra "()"s around them. Made the code check the values
    instead.
Platforms tested:
    Linux (parallel) Modi4 (parallel)
2002-06-04 16:29:05 -05:00
Quincey Koziol
e69e970a1c [svn-r5471] Purpose:
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.
2002-05-29 10:07:55 -05:00
Quincey Koziol
ca912c389e [svn-r5467] Purpose:
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)
2002-05-28 13:17:12 -05:00
Quincey Koziol
d11c3a233f [svn-r5447] Purpose:
Code cleanup

Description:
    Guard against getting into metadata broadcast in write routine and clean
    up some error handling.

Platforms tested:
    IRIX64 6.5 (modi4)
2002-05-21 15:36:51 -05:00
Quincey Koziol
86170c3d00 [svn-r5440] Purpose:
New feature

Description:
    Add 'closing' parameter to H5FDflush and VFL "flush" functions, per
        http://hdf.ncsa.uiuc.edu/RFC/VFLFlush/VFLFlush.html

Platforms tested:
    IRIX64 6.5 (modi4)
2002-05-20 11:01:57 -05:00
Quincey Koziol
a6b4cba798 [svn-r5429] Purpose:
Bug fix/Code improvement.

Description:
    Currently, the chunk data allocation routine invoked to allocate space for
    the entire dataset is inefficient.  It writes out each chunk in the dataset,
    whether it is already allocated or not.  Additionally, this happens not
    only when it is created, but also anytime it is opened for writing, or the
    dataset is extended.  Worse, there's too much parallel I/O syncronization,
    which slows things down even more.

Solution:
    Only attempt to write out chunks that don't already exist.  Additionally,
    share the I/O writing between all the nodes, instead of writing everything
    with process 0.  Then, only block with MPI_Barrier if chunks were actually
    created.

Platforms tested:
    IRIX64 6.5 (modi4)
2002-05-17 07:53:46 -05:00
Quincey Koziol
2e2a1d8e31 [svn-r5419] Purpose:
Bug fix.

Description:
    Added barrier to flush routine to prevent race condition where file could
    be truncated.

Platforms tested:
    IRIX64 6.5 (modi4)
2002-05-14 15:28:37 -05:00
Quincey Koziol
390209e72e [svn-r5418] Purpose:
Code cleanup/Performance enhancement

Description:
    The code to extend the file size in H5FD_mpio_flush is getting run even when
    the file size doesn't change.  Also, it's sort of sidestepping MPI-I/O when
    extending the file, instead of using MPI-I/O features to set the file's size.

Solution:
    Only extend the file's size when the allocated size has increased.  Also
    use MPI_File_set_size() to change the file's size.

Platforms tested:
    IRIX64 6.5 (modi4)
2002-05-14 15:15:12 -05:00
Quincey Koziol
d7b3f5d35e [svn-r5412] Purpose:
Bug fix

Description:
    Calling MPI_Get_count needs to be done with the same MPI type as was used
    for the transfer and we are always using MPI_BYTE, even when a different
    MPI type was used for the transfer.

Solution:
    Only query MPI_Get_count with MPI_BYTE when we really used MPI_BYTE for the
    transfer.  Wait for later to query MPI_Get_count with other MPI types.

Platforms tested:
    IRIX64 6.5 (modi4)
2002-05-14 10:08:10 -05:00
Quincey Koziol
c5a9d502a3 [svn-r5408] Purpose:
Performance enhancement

Description:
    Doing an MPI_File_sync() just before a file is closed causing a large
    performance loss.

Solution:
    Add flag to MPI file driver to avoid performance the MPI_File_sync() when
    the flag is set before a call to H5F_flush().

Platforms tested:
    IRIX64 6.5 (modi4)
2002-05-13 15:21:59 -05:00
Quincey Koziol
14b00edf0a [svn-r5403] Purpose:
Back out changes.

Description:
    Back out changes to VFL 'flush' API function, pending review.

Platforms tested:
    IRIX64 6.5 (modi4)
2002-05-13 12:48:07 -05:00
Quincey Koziol
084b35362b [svn-r5393] Purpose:
New Feature

Description:
    The VFL flush function is called immediately before a file is closed.
    This can cause duplicate syncronization actions to occur, if the VFL
    close function also performs them.

Solution:
    Added 'closing' parameter to VFL 'flush' operation.  This allows the VFL
    flush function to bypass operations that will be duplicated within the VFL
    close function.

    Additionally, use the 'closing' parameter to bypass calls to MPI_File_sync()
    when set.  Since MPI_File_close() also syncronizes the file, this avoids
    the terrible performance hit taken when calling MPI_File_sync() as the file
    is closing.

Platforms tested:
    IRIX64 6.5 (modi4)
2002-05-10 13:38:10 -05:00
Quincey Koziol
9815305745 [svn-r5390] Purpose:
Code cleanup

Description:
    The parallel I/O file driver is optimized to only write metadata with one
    process (and broadcast the results to the other processes).  This is
    currently enabled by a separate call to H5FD_mpio_tas_allsame() before
    each metadata write to the file.  This can easily lead to problems where
    the prelude function call is omitted before the actual write code or, in
    a threaded environment, lead to race condititions where the value set is
    reset before being used.

Solution:
    Since we only want to write metadata from one process, key off of the 'type'
    parameter (which has information about whether the data being written it
    metadata or raw data) to H5FD_mpio_write() as the method for determining
    whether to only write from one process or not.

Platforms tested:
    IRIX64 6.5 (modi4)
2002-05-10 12:11:06 -05:00
Quincey Koziol
fcdc05f307 [svn-r5385] Purpose:
New Feature

Description:
    Currently, only process 0 writes metadata to disk, leading to a potential
    performance bottleneck as the other processors wait for it to catch up.

Solution:
    Rotate the metadata responsibilities among all processes, speading out the
    work.

Platforms tested:
    IRIX64 6.5 (modi4)
2002-05-10 10:37:48 -05:00
Quincey Koziol
69cf1dd230 [svn-r5381] Purpose:
Small code cleanup/improvement

Description:
    Query the MPI rank only once and store it in the file structure for each
    process.

Platforms tested:
    IRIX64 6.5 (modi4)
2002-05-09 07:53:29 -05:00
Albert Cheng
ad641fa7b6 [svn-r5135] Purpose:
Features.
Description:
    Error stack used to report only hdf5 predefined error messages
    because it takes only static strings.  Runtime defined messages
    were not pushed to the stack.
    Added the means and macros to push MPI error strings onto the
    hdf5 error stack.  Added a new minor error class as H5E_MPIERR
    for this class of messages.
    H5Epulbic.h, H5E.c:
	Added H5E_MPIERR and its minor class description.
    H5Eprivate.h:
	Added HMPI_XXX macros to push MPI error strings to the stack.
    H5FDmpio.c:
	Changed couple places to use the new macros to test the new
	macros.  A more through changes to make use of these new
	macros will be done later.
Platforms tested:
    eirene (serial, parallel)
    modi4(parallel)
2002-04-02 23:44:26 -05:00
Bill Wendling
2b629eaceb [svn-r4732]
Purpose:
	Bug Fix
Description:
	Committing the changes in the MPI/IO stuff so that parallel HDF5
	will work on HP-UX. It seems that on HP-UX, the MPI_Status variable
	needs to be initialized to 0 for it to work (i.e., in some other MPI
	calls, if there's garbage in the MPI_Status variable, then it will
	barf).
Solution:
	Initialized to 0.
Platforms tested:
	HP-UX parallel, Linux.
2001-12-18 13:35:23 -05:00
Raymond Lu
d28fd08f4a [svn-r4696]
Purpose:
    Modify H5Fclose behavior
Description:
    The HDF5 actual file close behaves in several ways in terms of if there
    are still objects(dataset, group, datatype) opened in file.
Solution:
    Added a new file access property, file close degree.  It has four values,
	H5F_CLOSE_DEFAULT
	H5F_CLOSE_WEAK
	H5F_CLOSE_SEMI
	H5F_CLOSE_STRONG
    The way a file is closed is decided by these values.
Platforms tested:
    IRIX64 6.5, SunOS 5.6, FreeBSD 4.4
2001-12-11 14:53:44 -05:00
Quincey Koziol
db8fa602a6 [svn-r4634] Purpose:
Bug fix
Description:
    A couple more compile problems from the recent elimination of IDs from
    internal function calls.
Platforms tested:
    IRIX64 6.5 (modi4)
2001-11-21 12:01:10 -05:00
Quincey Koziol
6ab0e9f092 [svn-r4620] Purpose:
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)
2001-11-20 14:07:22 -05:00
Quincey Koziol
0001a13617 [svn-r4589] Purpose:
Code cleanup
Description:
    Clean up various compiler warnings from generic property updates.
Platforms tested:
    FreeBSD 4.4 (hawkwind)
2001-11-03 17:27:54 -05:00
Raymond Lu
b3afaccfe5 [svn-r4572]
Purpose:
    Followup file access property list changes.
Platforms tested:
    IRIX64, SunOS 5.7, FreeBSD.
2001-10-25 14:29:37 -05:00
Raymond Lu
b6da4ea427 [svn-r4569]
Purpose:
    Generic Property List Change
Description:
    Changed file access list to the new generic list.
Platforms tested:
    IRIX64, SunOS5.7, FreeBSD
2001-10-24 13:02:27 -05:00