Project

General

Profile

Feature #952

Update AMPI's version of ROMIO

Added by Sam White over 3 years ago. Updated 5 months ago.

Status:
In Progress
Priority:
Normal
Category:
AMPI
Target version:
-
Start date:
01/17/2016
Due date:
% Done:

0%


Description

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.


Related issues

Related to Charm++ - Bug #1668: Ensure that all libraries/modules will build as dynamic/shared objects (.so/.dylib vs .a) Merged 08/29/2017
Duplicated by Charm++ - Bug #1606: Update ROMIO for AMPI Rejected 06/07/2017

History

#1 Updated by Sam White over 2 years ago

  • Target version changed from 6.8.0 to 6.8.1

Need to implement generalized requests, datatypes, and anything else it uses that we don't currently support.

#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:
ftp://ftp.mcs.anl.gov/pub/mpi/old

The closest match I have found to our current ROMIO is:
ftp://ftp.mcs.anl.gov/pub/mpi/old/mpich-1.2.5-1a.tar.gz

Official MPICH git repository (includes ROMIO) is here:
https://github.com/pmodels/mpich

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)

#4 Updated by Phil Miller about 2 years ago

  • Duplicated by Bug #1606: Update ROMIO for AMPI added

#5 Updated by Matthias Diener about 2 years ago

With the MPI_Comm_dup patch (https://charm.cs.illinois.edu/gerrit/#/c/2706/), all ROMIO tests (except the one requiring PMPI) pass.

#6 Updated by Sam White about 2 years ago

  • Status changed from New to In Progress

Marking "In Progress" to reflect the fact that we've updated to a more recent version, though not the most recent version.

#7 Updated by Sam White almost 2 years ago

Update our ROMIO to v1.2.6, which can be built as a shared object / dynamic library: https://charm.cs.illinois.edu/gerrit/#/c/2940/

#8 Updated by Sam White almost 2 years ago

  • Assignee changed from Sam White to Matthias Diener

#9 Updated by Phil Miller almost 2 years ago

  • Related to Bug #1668: Ensure that all libraries/modules will build as dynamic/shared objects (.so/.dylib vs .a) added

#10 Updated by Matthias Diener almost 2 years ago

Note that the patch mentioned above (https://charm.cs.illinois.edu/gerrit/#/c/2940/) does not enable compilation as a shared library yet. Some manual changes to the Makefile are necessary.

#11 Updated by Sam White almost 2 years ago

  • Target version changed from 6.8.1 to 6.9.0

#12 Updated by Matthias Diener over 1 year ago

  • Target version deleted (6.9.0)

Pushing to 6.9.1

#13 Updated by Matthias Diener over 1 year ago

  • Target version set to 6.9.1

#14 Updated by Sam White over 1 year ago

We'd still like this to be in 6.9.0 if possible. I don't expect 6.9.0 to be released in the next 3-4 weeks.

#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.

#17 Updated by Sam White 5 months ago

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.

#18 Updated by Matthias Diener 5 months ago

Apart from the endianness conversion, wouldn't we also need to adjust the size of data types to the external32 format?

#19 Updated by Sam White 5 months ago

Yeah, that too. Looking into it more, it might be worth us checking to see if HDF5 uses MPI_File_set_view with external32 or something. If not, we could implement the external32 routines as runtime aborts or something

#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).

#21 Updated by Evan Ramos 5 months ago

  • Target version deleted (6.9.1)

Gerrit patch 4933 to upgrade us to mpich2-1.4.1p1 is merged. I'll leave this issue open since it's not the newest version (see above discussion).

Also available in: Atom PDF