IBM Books

MPI Subroutine Reference

MPI_BSEND_INIT, MPI_Bsend_init

Purpose

Creates a persistent buffered mode send request.

C synopsis

#include <mpi.h>
int MPI_Bsend_init(void* buf,int count,MPI_Datatype datatype,
    int dest,int tag,MPI_Comm comm,MPI_Request *request);

C++ synopsis

#include mpi.h
MPI::Prequest MPI::Comm::Bsend_init(const void* buf, int count, 
				    const MPI::Datatype& datatype, 
				    int dest, int tag) const;

FORTRAN synopsis

include 'mpif.h' or use mpi
MPI_BSEND_INIT(CHOICE BUF,INTEGER COUNT,INTEGER DATATYPE,
      INTEGER DEST,INTEGER TAG,INTEGER COMM,INTEGER REQUEST,
      INTEGER IERROR)

Parameters

buf
is the initial address of the send buffer (choice) (IN)

count
is the number of elements to be sent (integer) (IN)

datatype
is the type of each element (handle) (IN)

dest
is the rank of the destination task (integer) (IN)

tag
is the message tag (integer) (IN)

comm
is the communicator (handle) (IN)

request
is the communication request (handle) (OUT)

IERROR
is the FORTRAN return code. It is always the last argument.

Description

This subroutine creates a persistent communication request for a buffered mode send operation. MPI_START or MPI_STARTALL must be called to activate the send.

Because it is the MPI_START that initiates communication, any error related to insufficient buffer space occurs at the MPI_START.

Notes

Make sure you have enough buffer space available. An error occurs if the message must be buffered and there is there is not enough buffer space. The amount of buffer space needed to be safe depends on the expected peak of pending messages. The sum of the sizes of all of the pending messages at that point plus (MPI_BSEND_INIT_OVERHEAD*number_of_messages) should be sufficient.

Avoid using MPI_BSEND_INIT if possible. It adds overhead because it requires an extra memory-to-memory copy of the outgoing data. If MPI_BSEND_INIT is used, the associated receive operations may perform better with MPI_CSS_INTERRUPT enabled.

Errors

Invalid count
count < 0

Invalid datatype

Type not committed

Invalid destination
dest < 0 or dest > = groupsize

Invalid tag
tag < 0

Invalid comm

MPI not initialized

MPI already finalized

Related information

MPI_IBSEND
MPI_START


[ Top of Page | Previous Page | Next Page | Table of Contents | Index ]