160 lines
3.6 KiB
Groff
160 lines
3.6 KiB
Groff
.TH MPI_Buffer_attach 3 "6/5/2019" " " "MPI"
|
|
.SH NAME
|
|
MPI_Buffer_attach \- Attaches a user-provided buffer for sending
|
|
.SH SYNOPSIS
|
|
.nf
|
|
int MPI_Buffer_attach(void *buffer, int size)
|
|
.fi
|
|
.SH INPUT PARAMETERS
|
|
.PD 0
|
|
.TP
|
|
.B buffer
|
|
- initial buffer address (choice)
|
|
.PD 1
|
|
.PD 0
|
|
.TP
|
|
.B size
|
|
- buffer size, in bytes (integer)
|
|
.PD 1
|
|
|
|
.SH NOTES
|
|
The size given should be the sum of the sizes of all outstanding Bsends that
|
|
you intend to have, plus
|
|
.I MPI_BSEND_OVERHEAD
|
|
for each Bsend that you do.
|
|
For the purposes of calculating size, you should use
|
|
.I MPI_Pack_size
|
|
\&.
|
|
|
|
In other words, in the code
|
|
.nf
|
|
MPI_Buffer_attach(buffer, size);
|
|
MPI_Bsend(..., count=20, datatype=type1, ...);
|
|
\&.
|
|
\&.
|
|
\&.
|
|
MPI_Bsend(..., count=40, datatype=type2, ...);
|
|
.fi
|
|
|
|
the value of
|
|
.I size
|
|
in the
|
|
.I MPI_Buffer_attach
|
|
call should be greater than
|
|
the value computed by
|
|
.nf
|
|
MPI_Pack_size(20, type1, comm, &s1);
|
|
MPI_Pack_size(40, type2, comm, &s2);
|
|
size = s1 + s2 + 2 * MPI_BSEND_OVERHEAD;
|
|
.fi
|
|
|
|
The
|
|
.I MPI_BSEND_OVERHEAD
|
|
gives the maximum amount of space that may be used in
|
|
the buffer for use by the BSEND routines in using the buffer. This value
|
|
is in
|
|
.I mpi.h
|
|
(for C) and
|
|
.I mpif.h
|
|
(for Fortran).
|
|
|
|
.SH THREAD AND INTERRUPT SAFETY
|
|
|
|
The user is responsible for ensuring that multiple threads do not try to
|
|
update the same MPI object from different threads. This routine should
|
|
not be used from within a signal handler.
|
|
|
|
The MPI standard defined a thread-safe interface but this does not
|
|
mean that all routines may be called without any thread locks. For
|
|
example, two threads must not attempt to change the contents of the
|
|
same
|
|
.I MPI_Info
|
|
object concurrently. The user is responsible in this
|
|
case for using some mechanism, such as thread locks, to ensure that
|
|
only one thread at a time makes use of this routine.
|
|
Because the buffer for buffered sends (e.g.,
|
|
.I MPI_Bsend
|
|
) is shared by all
|
|
threads in a process, the user is responsible for ensuring that only
|
|
one thread at a time calls this routine or
|
|
.I MPI_Buffer_detach
|
|
\&.
|
|
|
|
|
|
.SH NOTES FOR FORTRAN
|
|
All MPI routines in Fortran (except for
|
|
.I MPI_WTIME
|
|
and
|
|
.I MPI_WTICK
|
|
) have
|
|
an additional argument
|
|
.I ierr
|
|
at the end of the argument list.
|
|
.I ierr
|
|
is an integer and has the same meaning as the return value of the routine
|
|
in C. In Fortran, MPI routines are subroutines, and are invoked with the
|
|
.I call
|
|
statement.
|
|
|
|
All MPI objects (e.g.,
|
|
.I MPI_Datatype
|
|
,
|
|
.I MPI_Comm
|
|
) are of type
|
|
.I INTEGER
|
|
in Fortran.
|
|
|
|
.SH ERRORS
|
|
|
|
All MPI routines (except
|
|
.I MPI_Wtime
|
|
and
|
|
.I MPI_Wtick
|
|
) return an error value;
|
|
C routines as the value of the function and Fortran routines in the last
|
|
argument. Before the value is returned, the current MPI error handler is
|
|
called. By default, this error handler aborts the MPI job. The error handler
|
|
may be changed with
|
|
.I MPI_Comm_set_errhandler
|
|
(for communicators),
|
|
.I MPI_File_set_errhandler
|
|
(for files), and
|
|
.I MPI_Win_set_errhandler
|
|
(for
|
|
RMA windows). The MPI-1 routine
|
|
.I MPI_Errhandler_set
|
|
may be used but
|
|
its use is deprecated. The predefined error handler
|
|
.I MPI_ERRORS_RETURN
|
|
may be used to cause error values to be returned.
|
|
Note that MPI does
|
|
.B not
|
|
guarentee that an MPI program can continue past
|
|
an error; however, MPI implementations will attempt to continue whenever
|
|
possible.
|
|
|
|
.PD 0
|
|
.TP
|
|
.B MPI_SUCCESS
|
|
- No error; MPI routine completed successfully.
|
|
.PD 1
|
|
.PD 0
|
|
.TP
|
|
.B MPI_ERR_BUFFER
|
|
- Invalid buffer pointer. Usually a null buffer where
|
|
one is not valid.
|
|
.PD 1
|
|
.PD 0
|
|
.TP
|
|
.B MPI_ERR_INTERN
|
|
- An internal error has been detected. This is fatal.
|
|
Please send a bug report to
|
|
.I mpi-bugs@mcs.anl.gov
|
|
\&.
|
|
|
|
.PD 1
|
|
|
|
.SH SEE ALSO
|
|
MPI_Buffer_detach, MPI_Bsend
|
|
.br
|