Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
MPI_Buffer_attach(3)		       MPI		    MPI_Buffer_attach(3)

NAME
     MPI_Buffer_attach -  Attaches a user-provided buffer for sending

SYNOPSIS
     int MPI_Buffer_attach(void *buffer, int size)

     int MPI_Buffer_attach_c(void *buffer, MPI_Count size)

INPUT PARAMETERS
     buffer
	    - initial buffer address (choice)
     size   - buffer size, in bytes (non-negative integer)

NOTES
     The  size	given  should  be the sum of the sizes of all outstanding Bsends
     that you intend to have, plus MPI_BSEND_OVERHEAD for each	Bsend  that  you
     do.  For the purposes of calculating size, you should use MPI_Pack_size .

     In other words, in the code
     MPI_Buffer_attach(buffer, size);
     MPI_Bsend(..., count=20, datatype=type1,  ...);
     .
     .
     .
     MPI_Bsend(..., count=40, datatype=type2, ...);

     the  value of size in the MPI_Buffer_attach call should be greater than the
     value computed by
     MPI_Pack_size(20, type1, comm, &s1);
     MPI_Pack_size(40, type2, comm, &s2);
     size = s1 + s2 + 2 * MPI_BSEND_OVERHEAD;

     The 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 mpi.h (for C) and mpif.h (for Fortran).

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 MPI_Info object
     concurrently.  The user is responsible in this case for using  some  mecha-
     nism,  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.,
     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
     MPI_Buffer_detach .

NOTES FOR FORTRAN
     All  MPI  routines in Fortran (except for MPI_WTIME and MPI_WTICK ) have an
     additional argument ierr at the end of the argument list.	ierr is an inte-
     ger 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 call state-
     ment.

     All  MPI  objects	(e.g.,	MPI_Datatype , MPI_Comm ) are of type INTEGER in
     Fortran.

ERRORS
     All MPI routines (except MPI_Wtime and MPI_Wtick ) return an error value; C
     routines as the value of the function and Fortran routines in the last  ar-
     gument.   Before  the  value  is returned, the current MPI error handler is
     called.  By default, this error handler aborts the MPI job.  The error han-
     dler may  be  changed  with  MPI_Comm_set_errhandler  (for  communicators),
     MPI_File_set_errhandler  (for  files),  and MPI_Win_set_errhandler (for RMA
     windows).	The MPI-1 routine MPI_Errhandler_set may be used but its use  is
     deprecated.   The predefined error handler MPI_ERRORS_RETURN may be used to
     cause error values to be returned.  Note that MPI does not  guarantee  that
     an  MPI  program  can  continue past an error; however, MPI implementations
     will attempt to continue whenever possible.

     MPI_SUCCESS
	    - No error; MPI routine completed successfully.
     MPI_ERR_ARG
	    - Invalid argument.  Some argument is invalid and is not  identified
	    by a specific error class (e.g., MPI_ERR_RANK ).
     MPI_ERR_OTHER
	    -  Other  error;  use MPI_Error_string to get more information about
	    this error code.

SEE ALSO
     MPI_Buffer_detach, MPI_Bsend

				    4/10/2026		    MPI_Buffer_attach(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=MPI_Buffer_attach_c&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help