301 lines
11 KiB
Groff
301 lines
11 KiB
Groff
.\" Man page generated from reStructuredText.
|
||
.
|
||
.TH "MPI_RGET_ACCUMULATE" "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
|
||
..
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
\fI\%MPI_Get_accumulate\fP, \fI\%MPI_Rget_accumulate\fP \- Combines the contents of the
|
||
origin buffer with that of a target buffer and returns the target buffer
|
||
value.
|
||
.SH SYNTAX
|
||
.SS C Syntax
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
#include <mpi.h>
|
||
|
||
int MPI_Get_accumulate(const void *origin_addr, int origin_count,
|
||
MPI_Datatype origin_datatype, void *result_addr,
|
||
int result_count, MPI_Datatype result_datatype,
|
||
int target_rank, MPI_Aint target_disp, int target_count,
|
||
MPI_Datatype target_datatype, MPI_Op op, MPI_Win win)
|
||
|
||
int MPI_Rget_accumulate(const void *origin_addr, int origin_count,
|
||
MPI_Datatype origin_datatype, void *result_addr,
|
||
int result_count, MPI_Datatype result_datatype,
|
||
int target_rank, MPI_Aint target_disp, int target_count,
|
||
MPI_Datatype target_datatype, MPI_Op op, MPI_Win win,
|
||
MPI_Request *request)
|
||
.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_GET_ACCUMULATE(ORIGIN_ADDR, ORIGIN_COUNT, ORIGIN_DATATYPE, RESULT_ADDR,
|
||
RESULT_COUNT, RESULT_DATATYPE, TARGET_RANK, TARGET_DISP, TARGET_COUNT,
|
||
TARGET_DATATYPE, OP, WIN, IERROR)
|
||
<type> ORIGIN_ADDR, RESULT_ADDR(*)
|
||
INTEGER(KIND=MPI_ADDRESS_KIND) TARGET_DISP
|
||
INTEGER ORIGIN_COUNT, ORIGIN_DATATYPE, TARGET_COUNT, TARGET_DATATYPE,
|
||
TARGET_RANK, TARGET_COUNT, TARGET_DATATYPE, OP, WIN, IERROR
|
||
|
||
MPI_RGET_ACCUMULATE(ORIGIN_ADDR, ORIGIN_COUNT, ORIGIN_DATATYPE, RESULT_ADDR,
|
||
RESULT_COUNT, RESULT_DATATYPE, TARGET_RANK, TARGET_DISP, TARGET_COUNT,
|
||
TARGET_DATATYPE, OP, WIN, REQUEST, IERROR)
|
||
<type> ORIGIN_ADDR, RESULT_ADDR(*)
|
||
INTEGER(KIND=MPI_ADDRESS_KIND) TARGET_DISP
|
||
INTEGER ORIGIN_COUNT, ORIGIN_DATATYPE, TARGET_COUNT, TARGET_DATATYPE,
|
||
TARGET_RANK, TARGET_COUNT, TARGET_DATATYPE, OP, WIN, REQUEST, IERROR
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS Fortran 2008 Syntax
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
USE mpi_f08
|
||
|
||
MPI_Get_accumulate(origin_addr, origin_count, origin_datatype, result_addr,
|
||
result_count, result_datatype, target_rank, target_disp,
|
||
target_count, target_datatype, op, win, ierror)
|
||
TYPE(*), DIMENSION(..), INTENT(IN) :: origin_addr
|
||
TYPE(*), DIMENSION(..) :: result_addr
|
||
INTEGER, INTENT(IN) :: origin_count, result_count, target_rank, target_count
|
||
TYPE(MPI_Datatype), INTENT(IN) :: origin_datatype, target_datatype, result_datatype
|
||
INTEGER(KIND=MPI_ADDRESS_KIND), INTENT(IN) :: target_dist
|
||
TYPE(MPI_Op), INTENT(IN) :: op
|
||
TYPE(MPI_Win), INTENT(IN) :: win
|
||
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||
|
||
MPI_Rget_accumulate(origin_addr, origin_count, origin_datatype,
|
||
result_addr, result_count, result_datatype, target_rank,
|
||
target_disp, target_count, target_datatype, op, win, request,
|
||
ierror)
|
||
TYPE(*), DIMENSION(..), INTENT(IN) :: origin_addr
|
||
TYPE(*), DIMENSION(..) :: result_addr
|
||
INTEGER, INTENT(IN) :: origin_count, result_count, target_rank, target_count
|
||
TYPE(MPI_Datatype), INTENT(IN) :: origin_datatype, target_datatype, result_datatype
|
||
INTEGER(KIND=MPI_ADDRESS_KIND), INTENT(IN) :: target_dist
|
||
TYPE(MPI_Op), INTENT(IN) :: op
|
||
TYPE(MPI_Win), INTENT(IN) :: win
|
||
TYPE(MPI_Request), INTENT(OUT) :: request
|
||
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SH INPUT PARAMETERS
|
||
.INDENT 0.0
|
||
.IP \(bu 2
|
||
\fBorigin_addr\fP : Initial address of buffer (choice).
|
||
.IP \(bu 2
|
||
\fBorigin_count\fP : Number of entries in buffer (nonnegative integer).
|
||
.IP \(bu 2
|
||
\fBorigin_datatype\fP : Data type of each buffer entry (handle).
|
||
.IP \(bu 2
|
||
\fBresult_addr\fP : Initial address of result buffer (choice).
|
||
.IP \(bu 2
|
||
.INDENT 2.0
|
||
.TP
|
||
.B \fBresult_count\fP
|
||
Number of entries in result buffer (nonnegative
|
||
integer).
|
||
.UNINDENT
|
||
.IP \(bu 2
|
||
\fBresult_datatype\fP : Data type of each result buffer entry (handle).
|
||
.IP \(bu 2
|
||
\fBtarget_rank\fP : Rank of target (nonnegative integer).
|
||
.IP \(bu 2
|
||
.INDENT 2.0
|
||
.TP
|
||
.B \fBtarget_disp\fP
|
||
Displacement from start of window to beginning of
|
||
target buffer (nonnegative integer).
|
||
.UNINDENT
|
||
.IP \(bu 2
|
||
.INDENT 2.0
|
||
.TP
|
||
.B \fBtarget_count\fP
|
||
Number of entries in target buffer (nonnegative
|
||
integer).
|
||
.UNINDENT
|
||
.IP \(bu 2
|
||
\fBtarget_datatype\fP : Data type of each entry in target buffer (handle).
|
||
.IP \(bu 2
|
||
\fBop\fP : Reduce operation (handle).
|
||
.IP \(bu 2
|
||
\fBwin\fP : Window object (handle).
|
||
.UNINDENT
|
||
.SH OUTPUT PARAMETER
|
||
.INDENT 0.0
|
||
.IP \(bu 2
|
||
\fI\%MPI_Rget_accumulate\fP: RMA request
|
||
.IP \(bu 2
|
||
\fBierror\fP : Fortran only: Error status (integer).
|
||
.UNINDENT
|
||
.SH DESCRIPTION
|
||
.sp
|
||
\fI\%MPI_Get_accumulate\fP is a function used for one\-sided MPI communication
|
||
that adds the contents of the origin buffer (as defined by origin_addr,
|
||
origin_count, and origin_datatype) to the buffer specified by the
|
||
arguments target_count and target_datatype, at offset target_disp, in
|
||
the target window specified by target_rank and win, using the operation
|
||
op. \fI\%MPI_Get_accumulate\fP returns in the result buffer result_addr the
|
||
contents of the target buffer before the accumulation.
|
||
.sp
|
||
Any of the predefined operations for \fI\%MPI_Reduce\fP, as well as MPI_NO_OP,
|
||
can be used. User\-defined functions cannot be used. For example, if op
|
||
is MPI_SUM, each element of the origin buffer is added to the
|
||
corresponding element in the target, replacing the former value in the
|
||
target.
|
||
.sp
|
||
Each datatype argument must be a predefined data type or a derived data
|
||
type, where all basic components are of the same predefined data type.
|
||
Both datatype arguments must be constructed from the same predefined
|
||
data type. The operation op applies to elements of that predefined type.
|
||
The target_datatype argument must not specify overlapping entries, and
|
||
the target buffer must fit in the target window.
|
||
.sp
|
||
A new predefined operation, MPI_REPLACE, is defined. It corresponds to
|
||
the associative function f(a, b) =b; that is, the current value in the
|
||
target memory is replaced by the value supplied by the origin.
|
||
.sp
|
||
A new predefined operation, MPI_NO_OP, is defined. It corresponds to the
|
||
assiciative function f(a, b) = a; that is the current value in the
|
||
target memory is returned in the result buffer at the origin and no
|
||
operation is performed on the target buffer.
|
||
.sp
|
||
\fI\%MPI_Rget_accumulate\fP is similar to \fI\%MPI_Get_accumulate\fP, except that it
|
||
allocates a communication request object and associates it with the
|
||
request handle (the argument request) that can be used to wait or test
|
||
for completion. The completion of an \fI\%MPI_Rget_accumulate\fP operation
|
||
indicates that the data is available in the result buffer and the origin
|
||
buffer is free to be updated. It does not indicate that the operation
|
||
has been completed at the target window.
|
||
.SH NOTES
|
||
.sp
|
||
The generic functionality of \fI\%MPI_Get_accumulate\fP might limit the
|
||
performance of fetch\-and\-increment or fetch\-and\-add calls that might be
|
||
supported by special hardware operations. \fI\%MPI_Fetch_and_op\fP thus allows
|
||
for a fast implementation of a commonly used subset of the functionality
|
||
of \fI\%MPI_Get_accumulate\fP\&.
|
||
.sp
|
||
\fI\%MPI_Get\fP is a special case of \fI\%MPI_Get_accumulate\fP, with the operation
|
||
MPI_NO_OP. Note, however, that \fI\%MPI_Get\fP and \fI\%MPI_Get_accumulate\fP have
|
||
different constraints on concurrent updates.
|
||
.sp
|
||
It is the user’s responsibility to guarantee that, when using the
|
||
accumulate functions, the target displacement argument is such that
|
||
accesses to the window are properly aligned according to the data type
|
||
arguments in the call to the \fI\%MPI_Get_accumulate\fP function.
|
||
.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.
|
||
.sp
|
||
\fBSEE ALSO:\fP
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
\fI\%MPI_Put\fP \fI\%MPI_Reduce\fP
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SH COPYRIGHT
|
||
2003-2025, The Open MPI Community
|
||
.\" Generated by docutils manpage writer.
|
||
.
|