Non-Blocking Communication
[Point-to-Point Communication]

Collaboration diagram for Non-Blocking Communication:

Detailed Description

Non-blocking sending and receiving messages.

Because of restrictions of the Cell Broadband Engine non-blocking communication can only be provided with a lot of limitations. In fact the only operation where non-blocking communication make sense is synchronous send.

MOC_ISend uses blocking buffered send or non-blocking synchronous send according to the message size.

Note:
Every non-blocking communication operation has to be finished using MOC_Test or MOC_Wait, otherwise resources are no freed and some data are not copied correctly.


Data Structures

struct  moc_request_struct
 Communication-Request (Handle). More...

Typedefs

typedef struct moc_request_struct MOC_Request
 Communication-Request (Handle).

Functions

int MOC_ISend (void *buf, int count, MOC_Datatype datatype, int dest, int tag, MOC_Comm comm, MOC_Request *request)
 Performs a non-blocking standard mode send operation.
int MOC_ISsend (void *buf, int count, MOC_Datatype datatype, int dest, int tag, MOC_Comm comm, MOC_Request *request)
 Performs a non-blocking synchronous mode send operation.
int MOC_Test (MOC_Request *request, int *flag, MOC_Status *status)
 Tests, if a non-blocking communication has been completed.
int MOC_Wait (MOC_Request *request, MOC_Status *status)
 Wait till a non-blocking communication has been completed.


Typedef Documentation

Communication-Request (Handle).

< Communication-Request (Handle)


Function Documentation

int MOC_ISend ( void *  buf,
int  count,
MOC_Datatype  datatype,
int  dest,
int  tag,
MOC_Comm  comm,
MOC_Request *  request 
)

Performs a non-blocking standard mode send operation.

Note:
This routine returns as soon as possible.
Parameters:
buf in Pointer to buffer where data is stored
count in Number of elements to be send (not equal to actual byte-value)
datatype in Type of elements to be send
dest in Rank of receiving process
tag in Tag of message
comm in communicator of message
request out communication request (handle)
Return values:
MOC_SUCCESS No error; MPI routine completed successfully.
... error-code

int MOC_ISsend ( void *  buf,
int  count,
MOC_Datatype  datatype,
int  dest,
int  tag,
MOC_Comm  comm,
MOC_Request *  request 
)

Performs a non-blocking synchronous mode send operation.

Note:
This routine returns as soon as possible (After the message-envelope has been written into the receiver's message-queue).
Parameters:
buf in Pointer to buffer where data is stored
count in Number of elements to be send (not equal to actual byte-value)
datatype in Type of elements to be send
dest in Rank of receiving process
tag in Tag of message
comm in communicator of message
request out communication request (handle)
Return values:
MOC_SUCCESS No error; MPI routine completed successfully.
... error-code

int MOC_Test ( MOC_Request *  request,
int *  flag,
MOC_Status *  status 
)

Tests, if a non-blocking communication has been completed.

Parameters:
request in Communication-Request (Handle)
flag out true, if communication-request has been completed
status out Object holding status-information
Return values:
MOC_SUCCESS No error; MPI routine completed successfully.
... error-code

int MOC_Wait ( MOC_Request *  request,
MOC_Status *  status 
)

Wait till a non-blocking communication has been completed.

Parameters:
request in Communication-Request (Handle)
status out Object holding status-information
Return values:
MOC_SUCCESS No error; MPI routine completed successfully.
... error-code


Generated on Thu Feb 12 13:48:21 2009 for MPI On Cell (Documentation) by  doxygen 1.5.6