When MPI-IO is used correctly, a file name will refer to the same file system at every task. In one detectable error situation, a file will appear to be on different file system types. For example, a particular file could be visible to some tasks as a GPFS file and to others as NFS-mounted.
The default for MP_CSS_INTERRUPT is no. If you do not override the default, MPI-IO enables interrupts while files are open. If you have forced interrupts to yes or no, MPI-IO does not alter your selection.
MPI-IO depends on hidden threads that use MPI message passing. MPI-IO cannot be used with MP_SINGLE_THREAD set to yes.
For AFS, DFS, and NFS, MPI-IO uses file locking for all accesses by default. If other tasks on the same node share the file and also use file locking, file consistency is preserved. If the MPI_FILE_OPEN is done with mode MPI_MODE_UNIQUE_OPEN, file locking is not done.
For information about file hints, see MPI_FILE_OPEN in IBM Parallel Environment for AIX: MPI Subroutine Reference.
For information about the following file tasks, see IBM Parallel Environment for AIX: MPI Subroutine Reference.
MPI-1 treated all errors as occurring in relation to some communicator. Many MPI-1 functions were passed a specific communicator and for the rest it was to be assumed that the error context was MPI_COMM_WORLD. MPI-1 provided a default error handler called MPI_ERRORS_ARE_FATAL for each communicator and defined functions similar to those listed below for defining and attaching alternate error handlers. The MPI-IO operations use an MPI_File in much the way other MPI operations use an MPI_Comm, except that the default error handler for MPI-IO operations is MPI_ERRORS_RETURN. The following functions are needed to allow error handlers to be defined and attached to MPI file objects:
For information about these subroutines, see IBM Parallel Environment for AIX: MPI Subroutine Reference.
Set the MP_IO_ERRLOG environment variable to indicate whether to turn on error logging for I/O operations. For example:
export MP_IO_ERRLOG=yes
turns on error logging. When an error occurs, a line of information will be logged into file /tmp/mpi_io_errdump.app_name.userid.taskid, recording the time the error occurs, the POSIX filesystem call involved, the file descriptor, and the returned error number.
The MPI-2 standard provides the following Info functions as a means for a user to construct a set of hints and pass these hints to some MPI-IO operations:
An info object is an opaque object consisting of zero or more (key,value) pairs. Info objects are the means by which users provide hints to the implementation about things like the structure of the application or the type of expected file accesses. In MPI-2, the APIs that use info objects span MPI-IO, MPI 1-sided, and dynamic tasks. Both key and value are specified as strings, but the value may actually represent an integer, boolean or other type. Some keys are reserved by MPI, and others may be defined by the implementation. The implementation defined keys should use a distinct prefix which other implementations would be expected to avoid. All PE MPI hints begin with IBM_ (see MPI_FILE_OPEN in IBM Parallel Environment for AIX: MPI Subroutine Reference). The MPI-2 requirement that hints, valid or not, cannot change the semantics of a program limits the risks from misunderstood hints.
By default, info objects in PE MPI only accept recognized keys. This allows a program to identify whether a given key is understood. If the key is not understood, the attempt to place it in an info object will behave as a no-op. An attempt to retrieve the key will find no key/value present. The environment variable MP_HINTS_FILTERED=no will cause info operations to accept arbitrary key/value pairs.
The following type constructors are provided as a means for MPI programs to describe the data layout in a file and relate that layout to memory data which is distributed across a set of tasks. The functions exist only for MPI-IO.
Set the MP_IO_BUFFER_SIZE environment variable to indicate the default size of the data buffers used by the MPI-IO agents. For example:
export MP_IO_BUFFER_SIZE=16M
sets the default size of the MPI-IO data buffer to 16MB. The default value of this environment variable is the number of bytes corresponding to 16 file blocks. This value depends on the block size associated with the file system storing the file. Valid values are any positive size up to 128MB. The size can be expressed as a number of bytes, as a number of kilobytes (1024 bytes), using k or K as a suffix, or as a number of megabytes (1024*1024 bytes), using m or M as a suffix.