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