295 lines
9.8 KiB
Groff
295 lines
9.8 KiB
Groff
.\" Man page generated from reStructuredText.
|
|
.
|
|
.TH "MPI_FILE_OPEN" "3" "Feb 14, 2025" "" "Open MPI"
|
|
.
|
|
.nr rst2man-indent-level 0
|
|
.
|
|
.de1 rstReportMargin
|
|
\\$1 \\n[an-margin]
|
|
level \\n[rst2man-indent-level]
|
|
level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
-
|
|
\\n[rst2man-indent0]
|
|
\\n[rst2man-indent1]
|
|
\\n[rst2man-indent2]
|
|
..
|
|
.de1 INDENT
|
|
.\" .rstReportMargin pre:
|
|
. RS \\$1
|
|
. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
|
|
. nr rst2man-indent-level +1
|
|
.\" .rstReportMargin post:
|
|
..
|
|
.de UNINDENT
|
|
. RE
|
|
.\" indent \\n[an-margin]
|
|
.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
.nr rst2man-indent-level -1
|
|
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
|
..
|
|
.sp
|
|
\fI\%MPI_File_open\fP — Opens a file (collective).
|
|
.SH SYNTAX
|
|
.SS C Syntax
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
.sp
|
|
.nf
|
|
.ft C
|
|
#include <mpi.h>
|
|
|
|
int MPI_File_open(MPI_Comm comm, const char *filename,
|
|
int amode, MPI_Info info,
|
|
MPI_File *fh)
|
|
.ft P
|
|
.fi
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.SS Fortran Syntax
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
.sp
|
|
.nf
|
|
.ft C
|
|
USE MPI
|
|
! or the older form: INCLUDE \(aqmpif.h\(aq
|
|
MPI_FILE_OPEN(COMM, FILENAME, AMODE, INFO, FH, IERROR)
|
|
CHARACTER*(*) FILENAME
|
|
INTEGER COMM, AMODE, INFO, FH, IERROR
|
|
.ft P
|
|
.fi
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.SS Fortran 2008 Syntax
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
.sp
|
|
.nf
|
|
.ft C
|
|
USE mpi_f08
|
|
MPI_File_open(comm, filename, amode, info, fh, ierror)
|
|
TYPE(MPI_Comm), INTENT(IN) :: comm
|
|
CHARACTER(LEN=*), INTENT(IN) :: filename
|
|
INTEGER, INTENT(IN) :: amode
|
|
TYPE(MPI_Info), INTENT(IN) :: info
|
|
TYPE(MPI_File), INTENT(OUT) :: fh
|
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
|
.ft P
|
|
.fi
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.SH INPUT PARAMETERS
|
|
.INDENT 0.0
|
|
.IP \(bu 2
|
|
\fBcomm\fP: Communicator (handle).
|
|
.IP \(bu 2
|
|
\fBfilename\fP: Name of file to open (string).
|
|
.IP \(bu 2
|
|
\fBamode\fP: File access mode (integer).
|
|
.IP \(bu 2
|
|
\fBinfo\fP: Info object (handle).
|
|
.UNINDENT
|
|
.SH OUTPUT PARAMETERS
|
|
.INDENT 0.0
|
|
.IP \(bu 2
|
|
\fBfh\fP: New file handle (handle).
|
|
.IP \(bu 2
|
|
\fBierror\fP: Fortran only: Error status (integer).
|
|
.UNINDENT
|
|
.SH DESCRIPTION
|
|
.sp
|
|
\fI\%MPI_File_open\fP opens the file identified by the filename
|
|
\fIfilename\fP on all processes in the \fIcomm\fP communicator
|
|
group. \fI\%MPI_File_open\fP is a collective routine; all processes
|
|
must provide the same value for \fIamode,\fP and all processes must
|
|
provide filenames that reference the same file which are textually
|
|
identical (note: Open MPI I/O plugins may have restrictions on
|
|
characters that can be used in filenames. For example, the ROMIO
|
|
plugin may disallow the colon (“:”) character from appearing in a
|
|
filename). A process can open a file independently of other processes
|
|
by using the MPI_COMM_SELF communicator. The file handle returned,
|
|
\fIfh,\fP can be subsequently used to access the file until the file is
|
|
closed using \fI\%MPI_File_close\fP\&. Before calling
|
|
\fI\%MPI_Finalize\fP, the user is required to close (via
|
|
MPI_File_close) all files that were opened with
|
|
\fI\%MPI_File_open\fP\&. Note that the communicator \fIcomm\fP is unaffected
|
|
by \fI\%MPI_File_open\fP and continues to be usable in all MPI
|
|
routines. Furthermore, use of \fIcomm\fP will not interfere with I/O
|
|
behavior.
|
|
.sp
|
|
Initially, all processes view the file as a linear byte stream; that is,
|
|
the \fIetype\fP and \fIfiletype\fP are both MPI_BYTE. The file view can be
|
|
changed via the \fI\%MPI_File_set_view\fP routine.
|
|
.sp
|
|
The following access modes are supported (specified in amode, in a
|
|
bit\-vector OR in one of the following integer constants):
|
|
.INDENT 0.0
|
|
.IP \(bu 2
|
|
\fBMPI_MODE_APPEND\fP
|
|
.IP \(bu 2
|
|
\fBMPI_MODE_CREATE\fP: Create the file if it does not exist.
|
|
.IP \(bu 2
|
|
\fBMPI_MODE_DELETE_ON_CLOSE\fP
|
|
.IP \(bu 2
|
|
\fBMPI_MODE_EXCL\fP: Error creating a file that already exists.
|
|
.IP \(bu 2
|
|
\fBMPI_MODE_RDONLY\fP: Read only.
|
|
.IP \(bu 2
|
|
\fBMPI_MODE_RDWR\fP: Reading and writing.
|
|
.IP \(bu 2
|
|
\fBMPI_MODE_SEQUENTIAL\fP
|
|
.IP \(bu 2
|
|
\fBMPI__MODE_WRONLY\fP: Write only.
|
|
.IP \(bu 2
|
|
\fBMPI_MODE_UNIQUE_OPEN\fP
|
|
.UNINDENT
|
|
.sp
|
|
The modes \fBMPI_MODE_RDONLY\fP, \fBMPI_MODE_RDWR\fP, \fBMPI_MODE_WRONLY\fP,
|
|
and \fBMPI_MODE_CREATE\fP have identical semantics to their POSIX
|
|
counterparts. It is erroneous to specify \fBMPI_MODE_CREATE\fP in
|
|
conjunction with \fBMPI_MODE_RDONLY\fP\&. Errors related to the access
|
|
mode are raised in the class \fBMPI_ERR_AMODE\fP\&.
|
|
.sp
|
|
On single\-node clusters, files are opened by default using nonatomic
|
|
mode file consistency semantics. The more stringent atomic\-mode
|
|
consistency semantics, required for atomicity of overlapping accesses,
|
|
are the default when processors in a communicator group reside on more
|
|
than one node. This setting can be changed using \fI\%MPI_File_set_atomicity\fP\&.
|
|
.sp
|
|
The \fI\%MPI_File_open\fP interface allows the user to pass information
|
|
via the \fIinfo\fP argument. It can be set to \fBMPI_INFO_NULL\fP\&. See the
|
|
\fI\%HINTS section\fP for a list of
|
|
hints that can be set.
|
|
.SH HINTS
|
|
.sp
|
|
The following hints can be used as values for the \fIinfo\fP argument.
|
|
.sp
|
|
\fBSETTABLE HINTS\fP
|
|
.INDENT 0.0
|
|
.IP \(bu 2
|
|
\fBMPI_INFO_NULL\fP
|
|
.IP \(bu 2
|
|
\fBshared_file_timeout\fP: Amount of time (in seconds) to wait for
|
|
access to the shared file pointer before exiting with
|
|
\fBMPI_ERR_TIMEDOUT\fP\&.
|
|
.IP \(bu 2
|
|
\fBrwlock_timeout\fP: Amount of time (in seconds) to wait for
|
|
obtaining a read or write lock on a contiguous chunk of a UNIX file
|
|
before exiting with \fBMPI_ERR_TIMEDOUT\fP\&.
|
|
.IP \(bu 2
|
|
\fBnoncoll_read_bufsize\fP: Maximum size of the buffer used by MPI I/O
|
|
to satisfy multiple noncontiguous read requests in the noncollective
|
|
data\-access routines.
|
|
.sp
|
|
\fBNOTE:\fP
|
|
.INDENT 2.0
|
|
.INDENT 3.5
|
|
A buffer size smaller than the distance (in bytes) in a
|
|
UNIX file between the first byte and the last byte of the
|
|
access request causes MPI I/O to iterate and perform
|
|
multiple UNIX \fIread()\fP or \fIwrite()\fP calls. If the request
|
|
includes multiple noncontiguous chunks of data, and the
|
|
buffer size is greater than the size of those chunks, then
|
|
the UNIX \fIread()\fP or \fIwrite()\fP (made at the MPI I/O level)
|
|
will access data not requested by this process in order to
|
|
reduce the total number of \fIwrite()\fP calls made. If this
|
|
is not desirable behavior, you should reduce this buffer
|
|
size to equal the size of the contiguous chunks within the
|
|
aggregate request.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.IP \(bu 2
|
|
\fBnoncoll_write_bufsize\fP: Maximum size of the buffer used by MPI
|
|
I/O to satisfy multiple noncontiguous write requests in the
|
|
noncollective data\-access routines.
|
|
.sp
|
|
See the above note in \fBnoncoll_read_bufsize\fP\&.
|
|
.IP \(bu 2
|
|
\fBcoll_read_bufsize\fP: Maximum size of the buffer used by MPI I/O to
|
|
satisfy multiple noncontiguous read requests in the collective
|
|
data\-access routines.
|
|
.sp
|
|
See the above note in \fBnoncoll_read_bufsize\fP\&.
|
|
.IP \(bu 2
|
|
\fBcoll_write_bufsize\fP: Maximum size of the buffer used by MPI I/O
|
|
to satisfy multiple noncontiguous write requests in the collective
|
|
data\-access routines.
|
|
.sp
|
|
See the above note in \fBnoncoll_read_bufsize\fP\&.
|
|
.IP \(bu 2
|
|
\fBmpiio_concurrency\fP: (boolean) controls whether nonblocking I/O
|
|
routines can bind an extra thread to an LWP. .sp
|
|
.IP \(bu 2
|
|
\fBmpiio_coll_contiguous\fP: (boolean) controls whether subsequent
|
|
collective data accesses will request collectively contiguous
|
|
regions of the file.
|
|
.UNINDENT
|
|
.sp
|
|
\fBNON\-SETTABLE HINTS\fP
|
|
.INDENT 0.0
|
|
.IP \(bu 2
|
|
\fBfilename\fP: Access this hint to get the name of the file.
|
|
.UNINDENT
|
|
.SH ERRORS
|
|
.sp
|
|
Almost all MPI routines return an error value; C routines as the return result
|
|
of the function and Fortran routines in the last argument.
|
|
.sp
|
|
Before the error value is returned, the current MPI error handler associated
|
|
with the communication object (e.g., communicator, window, file) is called.
|
|
If no communication object is associated with the MPI call, then the call is
|
|
considered attached to MPI_COMM_SELF and will call the associated MPI error
|
|
handler. When MPI_COMM_SELF is not initialized (i.e., before
|
|
\fI\%MPI_Init\fP/\fI\%MPI_Init_thread\fP, after \fI\%MPI_Finalize\fP, or when using the Sessions
|
|
Model exclusively) the error raises the initial error handler. The initial
|
|
error handler can be changed by calling \fI\%MPI_Comm_set_errhandler\fP on
|
|
MPI_COMM_SELF when using the World model, or the mpi_initial_errhandler CLI
|
|
argument to mpiexec or info key to \fI\%MPI_Comm_spawn\fP/\fI\%MPI_Comm_spawn_multiple\fP\&.
|
|
If no other appropriate error handler has been set, then the MPI_ERRORS_RETURN
|
|
error handler is called for MPI I/O functions and the MPI_ERRORS_ABORT error
|
|
handler is called for all other MPI functions.
|
|
.sp
|
|
Open MPI includes three predefined error handlers that can be used:
|
|
.INDENT 0.0
|
|
.IP \(bu 2
|
|
\fBMPI_ERRORS_ARE_FATAL\fP
|
|
Causes the program to abort all connected MPI processes.
|
|
.IP \(bu 2
|
|
\fBMPI_ERRORS_ABORT\fP
|
|
An error handler that can be invoked on a communicator,
|
|
window, file, or session. When called on a communicator, it
|
|
acts as if \fI\%MPI_Abort\fP was called on that communicator. If
|
|
called on a window or file, acts as if \fI\%MPI_Abort\fP was called
|
|
on a communicator containing the group of processes in the
|
|
corresponding window or file. If called on a session,
|
|
aborts only the local process.
|
|
.IP \(bu 2
|
|
\fBMPI_ERRORS_RETURN\fP
|
|
Returns an error code to the application.
|
|
.UNINDENT
|
|
.sp
|
|
MPI applications can also implement their own error handlers by calling:
|
|
.INDENT 0.0
|
|
.IP \(bu 2
|
|
\fI\%MPI_Comm_create_errhandler\fP then \fI\%MPI_Comm_set_errhandler\fP
|
|
.IP \(bu 2
|
|
\fI\%MPI_File_create_errhandler\fP then \fI\%MPI_File_set_errhandler\fP
|
|
.IP \(bu 2
|
|
\fI\%MPI_Session_create_errhandler\fP then \fI\%MPI_Session_set_errhandler\fP or at \fI\%MPI_Session_init\fP
|
|
.IP \(bu 2
|
|
\fI\%MPI_Win_create_errhandler\fP then \fI\%MPI_Win_set_errhandler\fP
|
|
.UNINDENT
|
|
.sp
|
|
Note that MPI does not guarantee that an MPI program can continue past
|
|
an error.
|
|
.sp
|
|
See the \fI\%MPI man page\fP for a full list of \fI\%MPI error codes\fP\&.
|
|
.sp
|
|
See the Error Handling section of the MPI\-3.1 standard for
|
|
more information.
|
|
.SH COPYRIGHT
|
|
2003-2025, The Open MPI Community
|
|
.\" Generated by docutils manpage writer.
|
|
.
|