At the most basic level, file interoperability is the ability to
read the information previously written to a file--not just the
bits of data, but the actual information the bits represent.
MPI-/ guarantees full interoperability within a single MPI-/ environment,
and supports increased interoperability outside that environment
through the external data representation (Section 9.5.2, page ) as
well as the data conversion functions (Section 9.5.3,
page
).
Interoperability within a single MPI-/ environment
(which could be considered ``operability'') ensures that file
data written by one MPI-/ process can be read by any other MPI-/ process,
subject to the consistency constraints
(see Section 9.6.1,
page ),
provided that it would have been possible to start the two processes
simultaneously and have them reside in a single MPI_COMM_WORLD.
Furthermore, both processes must see the same data values at every absolute
byte offset in the file for which data was written.
This single environment file interoperability implies that file data is accessible regardless of the number of processes.
There are three aspects to file interoperability:
The first two aspects of file interoperability are beyond the scope of this standard, as both are highly machine dependent. However, transferring the bits of a file into and out of the MPI-/ environment (e.g., by writing a file to tape) is required to be supported by all MPI-/ implementations. In particular, an implementation must specify how familiar operations similar to POSIX cp, rm, and mv can be performed on the file. Furthermore, it is expected that the facility provided maintains the correspondence between absolute byte offsets (e.g., after possible file structure conversion, the data bits at byte offset 102 in the MPI-/ environment are at byte offset 102 outside the MPI-/ environment). As an example, a simple off-line conversion utility that transfers and converts files between the native file system and the MPI-/ environment would suffice, provided it maintained the offset coherence mentioned above. In a high quality implementation of MPI-/, users will be able to manipulate MPI-/ files using the same or similar tools that the native file system offers for manipulating its files.
The remaining aspect of file interoperability, converting between different machine representations, is supported by the typing information specified in the etype and filetype. This facility allows the information in files to be shared between any two applications, regardless of whether they use MPI-/, and regardless of the machine architectures on which they run.
MPI-/ supports multiple data representations:
``native,'' ``internal,'' and ``external32.''
An implementation may support additional data representations.
MPI-/ also supports user-defined data representations
(see Section 9.5.3, page ).
The native and internal data representations are implementation dependent,
while the external32 representation is
common to all MPI-/ implementations
and facilitates file interoperability.
The data representation is specified in the datarep argument
to MPI_FILE_SET_VIEW.
This data representation has several advantages. First, all processes reading the file in a heterogeneous MPI-/ environment will automatically have the data converted to their respective native representations. Second, the file can be exported from one MPI-/ environment and imported into any other MPI-/ environment with the guarantee that the second environment will be able to read all the data in the file.
The disadvantage of this data representation is that data precision and I/O performance may be lost in data type conversions.