Commit Graph

106 Commits

Author SHA1 Message Date
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
3df2828991 [svn-r8981] Purpose:
Code cleanup

Description:
    Various minor tweaks to clean code up and bring it into closer
syncronization with the release branch.

Platforms tested:
    FreeBSD 4.10 (sleipnir) w/parallel
    h5committested
    IRIX64 6.5 (modi4)
2004-08-02 09:03:40 -05:00
Quincey Koziol
7c3df64cc4 [svn-r8731] Purpose:
Code cleanup & minor optimization

Description:
    Re-work the way interface initialization routines are specified in the
library to avoid the overhead of checking for them in routines where there is
no interface initialization routine.  This cleans up warnings with gcc 3.4,
reduces the library binary size a bit (about 2-3%) and should speedup the
library's execution slightly.

Platforms tested:
    FreeBSD 4.10 (sleipnir) w/gcc34
    h5committest
2004-06-23 10:36:35 -05:00
Quincey Koziol
0a29514b9d [svn-r8383] Purpose:
Code cleanup

Description:
    Clean up lots of warnings based on those reported from the SGI compilers
as well as gcc.

Platforms tested:
    SGI O3900, IRIX64 6.5 (Cheryl's SGI machine)
    FreeBSD 4.9 (sleipnir) w/ & w/o parallel
    h5committest
2004-04-17 23:10:09 -05:00
Albert Cheng
5f7cc58755 [svn-r8272] Purpose:
bug fix.

Description:
H5FD_mpio_init was calling the public API version of H5Iget_type()
which would clear the error stack, thus cleared away error messages
prematurely.

Solution:
Changed it to call the private version of H5I_get_type() which
does not clear the error stack.

Platforms tested:
o2 (SGI) parallel.
2004-03-22 23:39:37 -05:00
Quincey Koziol
517643f146 [svn-r8144] Purpose:
Bug fix.

Description:
    Revert the optimization to the MPI-I/O VFD from earlier this week that
eliminated calling MPI_File_set_size() when a file was truncated.  This doesn't
work because of the way we track the 'eoa' (end of allocated space) in the
file: we just advance the eoa value when space is allocated in the file and we
don't zero out the space in the file.  This causes a problem where we assume
that all "newly allocated" space in the file contains zero bytes, but if we
don't call MPI_File_set_size(), the file can contain the previous data (if the
file previously existed) and not zeros.
    Unfortunately, because we allow independent raw data parallel I/O, there
is no way to address this issue. :-(

Solution:
    Revert to previous method of retrieving the file's size, etc. from before
the optimization.

Platforms tested:
    FreeBSD 4.9 (sleipnir) w/parallel
    too minor to require h5committest.
2004-02-01 22:58:29 -05:00
Quincey Koziol
fd442eae18 [svn-r8140] Purpose:
Bug fix

Description:
    Move assertion to allow closing non-HDF5 files with the MPI-I/O VFD to
work correctly again.

Platforms tested:
    FreeBSD 4.9 (sleipnir)
    h5committest
2004-01-31 23:06:22 -05:00
Quincey Koziol
10382a1799 [svn-r8134] Purpose:
Code cleanup

Description:
    Add destructor to match constructor fr VFLs when they are shut down by the
library.

Solution:
    Added H5FD_*_term() routines to "undo" changes made in H5FD_*_init()
routines.

Platforms tested:
    IBM p690 (copper)
    too minor to require h5committest
2004-01-31 10:19:48 -05:00
Quincey Koziol
138bc92ebd [svn-r8126] Purpose:
Bug fix/optimization

Description:
    Address slowdown in MPI-I/O file metadata operations that was introduced
mid-stream.  We now _require_ a POSIX compliant parallel file system for the
MPI-I/O file driver (as well as for the MPI-POSIX file driver).
    Also optimized file open operation when the file is being created by
reducing the number of collective & syncronizing calls.
    Additionally, refactor the MPI routines into a common place, eliminating
duplicated code.

Platforms tested:
    FreeBSD 4.9 (sleipnir) w/parallel
    h5committest
2004-01-30 20:38:44 -05:00
Quincey Koziol
feaa5bb9d5 [svn-r8038] Purpose:
Bug fix

Description:
    When two property lists are compared, the H5Pequal routine was just
comparing the raw information for the property values.  This causes problems
when the raw information contains pointers to other information.

Solution:
    Allow a 'compare' callback to be registered for properties, so that a user
application get perform the comparison itself, allowing for "deep" compares of
the property value.
    This was exported to the H5Pregister & H5Pinsert routines in the development
branch, but not the release branch.

Platforms tested:
    FreeBSD 4.9 (sleipnir)
    h5committest
2004-01-08 09:55:11 -05:00
Quincey Koziol
5db6c61f18 [svn-r7993] Purpose:
Code cleanup, bug fixes

Description:
    Wrap up rest of changes necessary for fixing the "short" MPI-I/O read
problem that Robb reported.

Platforms tested:
    FreeBSD 4.9 (sleipnir)
    too minor to require h5committest
2003-12-29 14:34:11 -05:00
Albert Cheng
41e958a30f [svn-r7978] Purpose:
Bug fix

Description:
MPIO driver did not detect partial read or write.  It assumed if read
completed, all bytes requested are read.  Therefore, if a dataset was
not completely written yet, the unread part will not be filled with
default fill value.

Solution:
Added the MPI_Get_elements call to find exactly how many bytes
are read (or written).  For read case, if not enough is read,
the rest is padded with zeros.  For write case, it is an error
if not able to write them all in first attempt. (It is not
always possible to repeat write for MPIO since file-view may
be changed, collective would hang, etc. So, we do just one attempt.)

Platforms tested:
eirene (pp).  Should work for other platforms since these
have been tested in v1.6.

Misc. update:
2003-12-25 17:43:20 -05:00
Quincey Koziol
31431be374 [svn-r7917] Purpose:
Code cleanup

Description:
    Clean up compiler warnings, especially the 'FUNC' variable not used which
comes out in production mode.

Solution:
    Had to add a new FUNC_ENTER_NOAPI_NOINIT_NOFUNC macro for those non-API
functions which don't need the 'FUNC' variable defined.  (This will be _so_
much easier when C99 is standard on all our supposed platforms, since it has a
__FUNC__ macro... )

Platforms tested:
    FreeBSD 4.9 (sleipnir)
    too minor for h5committest (although there were lots of files changed, the
        change was minor in each one)
2003-12-06 15:38:31 -05:00
Quincey Koziol
1619a308cb [svn-r7860] Purpose:
Bug fix

Description:
    Our previous "optimization" of metadata writing which only wrote metadata
from one process was abusing MPI-I/O and after some consultation with Rob Ross
and Rajeev Thakur, Albert & I have come up with a solution...

Solution:
    Instead of only writing from one process, issue a collective write
operation with all processes, for metadata writes.

Platforms tested:
    FreeBSD 4.9 (sleipnir)
    h5committest
2003-11-20 09:36:59 -05:00
Quincey Koziol
90e269d552 [svn-r7789] Purpose:
Bug fix & code cleanups

Description:
    Change our use of MPI derived datatypes to not create datatypes with
"0-sized" lengths, which causes the LANL Q machine to hang.

    Also, get rid of "prefer MPI derived datatypes" environment variable since
it has no advantage.

Platforms tested:
    FreeBSD 4.9 (sleipnir) w & w/o parallel
    h5committest
2003-10-29 14:32:36 -05:00
Quincey Koziol
10b6bab2ab [svn-r7767] Purpose:
Code cleanup

Description:
    Untwist the last few sections of code before starting on fixing the
problems with reading off the end of the file in earnest.

Platforms tested:
    FreeBSD 4.9 (sleipnir)
    FreeBSD 4.9 (sleipnir) w/parallel
    h5committest not necessary - parallel only changes
2003-10-28 10:33:56 -05:00
Quincey Koziol
f4240b2639 [svn-r7765] Purpose:
Code cleanup

Description:
    More collective/independent cleanups to straighten out code contortions.

Platforms tested:
    FreeBSD 4.9 (sleipnir)
    FreeBSD 4.9 (sleipnir) w/parallel
    Linux 2.4 (verbena) w/fortran & C++
    Solaris 2.7 (arabica) w/64-bit extensions enabled
2003-10-28 09:42:24 -05:00
Quincey Koziol
8a43391a11 [svn-r7754] Purpose:
Code cleanup

Description:
    Straighten out more goofiness in the MPI code dealing with collective I/O
transfers - mostly make certain that a view is set if-and-only-if collective
I/O is occurring on raw data (and vice versa for views and independent I/O)

Platforms tested:
    FreeBSD 4.9 (sleipnir) w/parallel & FPHDF5
    too minor to repquire h5committest
2003-10-27 16:38:27 -05:00
Quincey Koziol
d7bde16f45 [svn-r7480] Purpose:
Bug fix

Description:
    The MPI_File_set_size() routine on ASCI Red is not able to extend files
so that they are larger than 2GB.

Solution:
    Add an extra macro which controls whether MPI_File_set_size() can handle
>2GB offsets or if our "older" way of reading a byte, then writing a byte at
the appropriate offset should be used.

Platforms tested:
    FreeBSD 4.9 (sleipnir)
    h5committest
2003-09-16 12:33:00 -05:00
Quincey Koziol
2eee483e9b [svn-r7393] Purpose:
Code cleanup

Description:
    De-linted more code

Platforms tested:
    FreeBSD 4.8 (sleipnir) w/parallel
    too minor to require h5committest
2003-08-23 10:55:06 -05:00
Quincey Koziol
87a5f6480c [svn-r7122] Purpose:
Code cleanup/Feature removal

Description:
    Remove "round robin" writing of metadata in MPI VFDs (and a couple of other
places).  This never really worked the way I hoped it would and it causes
problems on certain machines.

Platforms tested:
    FreeBSD 4.8 (sleipnir) w/parallel
    Too small for triple check.
2003-06-30 10:53:02 -05:00
Quincey Koziol
7d9c86097a [svn-r6843] Purpose:
Code cleanup

Description:
    Clean up warnings exposed by compiling on O2K.  Also, revert some of Bill
and my changes to the H5S_mpi_opt_types_g, etc. and settle them back into their
original location.

Platforms tested:
    h5committested.
2003-05-09 13:18:21 -05:00
Albert Cheng
51dd09ec04 [svn-r6769] Purpose:
Minor improvement

Description:
Moved the H5FD_mpio_Debug initialization to H5FD_mpio_init() so
that it is done only once instead of every file open.

Fixed blocked out patch that checks on INFO object so that
H5FD_mpio_Debug can be set via the INFO object.

(All these had been done to v1.4, now folded them int v1.5)

Platforms tested:
Did not h5committest since this is purely parallel code.
The changes were made in an isolated copy in Copper.
Tested in Copper parallel.

Misc. update:
2003-04-28 18:08:35 -05:00
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