Update AMPI's version of ROMIO
ROMIO is no longer released/packaged separately from MPICH, but it still has its own separate build system and its structure is still very similar to the version (ROMIO-1.2.4) that we package with AMPI.
ROMIO-1.2.4 was released in May, 2002, while the latest version of ROMIO that ships with MPICH-3.2 is from March 2008.
It makes use of some MPI-2.2 features (mostly datatype related ones) and should have improved performance.
#2 Updated by Matthias Diener about 2 years ago
Note that the version that is currently integrated in AMPI is based (mostly) on MPICH2 0.91. Integrating ROMIO 1.2.5 from MPICH2 0.92 is already not trivial, since the configure format changed.
For reference, old mpich versions with ROMIO are here:
The closest match I have found to our current ROMIO is:
Official MPICH git repository (includes ROMIO) is here:
Despite the last change note in the README file being from 2008, ROMIO still receives regular patches in the git repo.
#3 Updated by Matthias Diener about 2 years ago
I'm preparing a series of patches to update our ROMIO to 1.2.5-1a (first patch here: https://charm.cs.illinois.edu/gerrit/#/c/2665/ ).
Currently, 15 out of 16 ROMIO tests pass with AMPI (with all patches applied):
ROMIO tests working:¶
- simple, async, i_noncontig, misc, shared_fp, error, status, file_info, noncontig, coll_test, noncontig_coll, noncontig_coll2, split_coll, excl, atomicity
ROMIO tests NOT working (1):¶
- psimple (needs PMPI support)
#15 Updated by Evan Ramos 5 months ago
#16 Updated by Matthias Diener 5 months ago
The patch above updates ROMIO to the version shipped with mpich2-1.4.1p1. For newer versions of ROMIO, we would need support for the external32 data representation, including an implementation of MPI_Pack_external and MPI_Unpack_external). With such support, we could run all ROMIO versions up to 3.3 at least.
I think we can implement the MPI_Pack_external() and MPI_Unpack_external() routines as calls to MPI_Pack() and MPI_Unpack(), since we don't insert any kind of header inside our MPI_Pack and MPI_Unpack routines (it just copies the bytes as they are). On little-endian systems though we should convert to big-endian for external32.
#20 Updated by Matthias Diener 5 months ago
From what I could see, hdf5-1.10.1 only calls MPI_File_set_view with the "native" data format, which should be fine. Independent of that, having fake external32 routines can be useful in any case. For the long term, we could look at copying mpich's external32 implementation (which is a few thousand lines of code :-S).