Let be the set of file handles created
from one particular collective open of the file
,
and
be the set of file handles created
from a different collective open of
.
Note that nothing restrictive is said about
and
:
the sizes of
and
may be different,
the groups of processes used for each open may or may not intersect,
the file handles in
may be destroyed
before those in
are created, etc.
Consider the following three cases:
a single file handle (e.g.,
),
two file handles created from a single collective open
(e.g.,
and
), and
two file handles from different collective opens
(e.g.,
and
).
For the purpose of consistency semantics, a matched
pair (Section 9.4.5,
page ) of split
collective data access operations (e.g.,
MPI_FILE_READ_ALL_BEGIN and
MPI_FILE_READ_ALL_END) compose a single data access
operation.
Similarly, a nonblocking data access routine
(e.g., MPI_FILE_IREAD) and the
routine which completes the request
(e.g., MPI_WAIT) also compose a single data
access operation.
For all cases below, these data access operations
are subject to the same constraints as blocking data access operations.
Assume that and
are two data access operations.
Let
(
) be the set of absolute byte displacements
of every byte accessed in
(
).
The two data accesses overlap
if
.
The two data accesses conflict
if they overlap and at least one is a write access.
Let be a sequence of file operations on a single file handle,
bracketed by MPI_FILE_SYNCs on that file handle.
(Both opening and closing a file implicitly perform an MPI_FILE_SYNC.)
is a ``write sequence''
if any of the data access operations in the sequence are writes
or if any of the file manipulation operations in the sequence
change the state of the file
(e.g., MPI_FILE_SET_SIZE or MPI_FILE_PREALLOCATE).
Given two sequences,
and
,
we say they
are not concurrent
if one sequence is guaranteed to completely precede the other (temporally).
The requirements for guaranteeing sequential consistency among all accesses to a particular file are divided into the three cases given below. If any of these requirements are not met, then the value of all data in that file is implementation dependent.