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

  
 
  

home | help
MPI_Buffer_detach(3)		       MPI		    MPI_Buffer_detach(3)

NAME
     MPI_Buffer_detach -  Removes an existing buffer (for use in MPI_Bsend etc)

SYNOPSIS
     int MPI_Buffer_detach(void *buffer_addr, int *size)

     int MPI_Buffer_detach_c(void *buffer_addr, MPI_Count *size)

OUTPUT PARAMETERS
     buffer_addr
	    - initial buffer address (choice)
     size   - buffer size, in bytes (integer)

NOTES
     The  reason  that	MPI_Buffer_detach  returns  the  address and size of the
     buffer being detached is to allow nested libraries to replace  and  restore
     the buffer.  For example, consider

     int size, mysize, idummy;
     void *ptr, *myptr, *dummy;
     MPI_Buffer_detach(&ptr, &size);
     MPI_Buffer_attach(myptr, mysize);
     .
     .
     .
     .
     .
     .
     library code ...
     .
     .
     .
     MPI_Buffer_detach(&dummy, &idummy);
     MPI_Buffer_attach(ptr, size);

     This  is  much  like the action of the Unix signal routine and has the same
     strengths (it is simple) and weaknesses (it only works for nested usages).

     Note that for this approach to work, MPI_Buffer_detach must return MPI_SUC-
     CESS even when there is no buffer to detach.  In that case,  it  returns  a
     size of zero.  The MPI 1.1 standard for MPI_BUFFER_DETACH contains the text

     The statements made in this section describe the behavior of MPI for
     buffered-mode sends. When no buffer is currently associated, MPI behaves
     as if a zero-sized buffer is associated with the process.

     This  could  be  read as applying only to the various Bsend routines.  This
     implementation takes the position that this applies to MPI_BUFFER_DETACH as
     well.

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_attach .

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.

     The Fortran binding for this routine is different.   Because  Fortran  does
     not  have	pointers, it is impossible to provide a way to use the output of
     this routine to exchange buffers.	In this case, only  the  size  field  is
     set.

NOTES FOR C
     Even though the bufferptr argument is declared as void * , it is really the
     address  of a void pointer.  See the rationale in the standard for more de-
     tails.

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_attach

				    4/10/2026		    MPI_Buffer_detach(3)

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

home | help