Point-to-Point Communication
[Developer Documentation]

Collaboration diagram for Point-to-Point Communication:

Detailed Description

Internals about Point-to-Point Communication.


Modules

 DMA-Helper Functions
 Functions wrapping DMA-Transfers.
 Blocking Communication
 Internals about blocking Point-to-Point Communication.
 Non-Blocking Communication
 Internals about non-blocking communication.

Internal shared functions

moc_message_envelope_t * IMOC_get_entry (int source, int tag, MOC_Comm comm, int isSpecial, MOC_Status *status)
 Get the next valid message-envelope from "source" with specified "tag" and "comm".
int IMOC_getFreeEntry (moc_message_envelope_t *pqueue, uint8_t tag, MOC_Comm comm, int isSpecial, int *index)
 Get next free entry in message-queue (a local copy of the message-queue has to be used).
int IMOC_getFreeMID (int *mid)
 Get free message-ID.
int IMOC_waitForMessageCompletion (uint8_t mid)
 Wait till message with message-ID mid has been received.
int IMOC_testForMessageCompletion (uint8_t mid, uint8_t *status)
 Tests if message with message-ID mid has been received.

Internal constants

#define MEMCPY_GET_TRESHOLD   156
 Defines a treshold, when to use memcpy and when to use DMA in a get-operation on the PPU.
#define MEMCPY_PUT_TRESHOLD   2210
 Defines a treshold, when to use memcpy and when to use DMA in a put-operation on the PPU.


Define Documentation

#define MEMCPY_GET_TRESHOLD   156

Defines a treshold, when to use memcpy and when to use DMA in a get-operation on the PPU.

Definition at line 49 of file imoc.h.

Referenced by MOC_Barrier(), MOC_Bsend(), MOC_ISsend(), and MOC_Ssend().

#define MEMCPY_PUT_TRESHOLD   2210

Defines a treshold, when to use memcpy and when to use DMA in a put-operation on the PPU.

Definition at line 55 of file imoc.h.


Function Documentation

moc_message_envelope_t* IMOC_get_entry ( int  source,
int  tag,
MOC_Comm  comm,
int  isSpecial,
MOC_Status *  status 
)

Get the next valid message-envelope from "source" with specified "tag" and "comm".

Parameters:
source in rank of sending node
tag in message-tag
comm in message-communicator
isSpecial in true to return special-message
status inout MOC_status-instance to add some information (e.g. source by MOC_ANY_SOURCE)
Returns:
pointer to the appropriate message-queue-entry.

Definition at line 13 of file imoc_get_entry.c.

References moc_message_envelope_struct::bits, moc_node_handle_ppu_struct::comm_size, moc_message_envelope_struct::communicator, moc_message_envelope_struct::flags, IMOC_LOCAL_QUEUE, moc_node_handle_ppu_struct::message_queue_base, MOC_ANY_SOURCE, MOC_ANY_TAG, MOC_Status_struct::MOC_SOURCE, node_handle, moc_node_handle_ppu_struct::queue_size, moc_node_handle_ppu_struct::rank, and moc_message_envelope_struct::tag.

Referenced by MOC_Barrier(), MOC_Iprobe(), MOC_Probe(), and MOC_Recv().

Here is the caller graph for this function:

int IMOC_getFreeEntry ( moc_message_envelope_t *  pqueue,
uint8_t  tag,
MOC_Comm  comm,
int  isSpecial,
int *  index 
)

Get next free entry in message-queue (a local copy of the message-queue has to be used).

To ensure correct ordering message-tag and -comm and -type has to be specified.

Parameters:
pqueue in pointer to local copy of remote message-queue
tag in message-tag
comm in message-communicator
isSpecial in true if message should be a special message
index out index of free entry
Returns:
0 when success otherwise error-code

Definition at line 9 of file imoc_get_free_entry.c.

References moc_message_envelope_struct::bits, MOC_ERR_MESSAGE_EXHAUSTED, node_handle, and moc_node_handle_ppu_struct::queue_size.

Referenced by MOC_Barrier(), MOC_Bsend(), MOC_ISsend(), and MOC_Ssend().

Here is the caller graph for this function:

int IMOC_getFreeMID ( int *  mid  ) 

Get free message-ID.

Note:
Message-ID is index of message-status-array
Parameters:
mid out free message-ID
Return values:
MOC_SUCCESS No error; MPI routine completed successfully.
MOC_ERR_MESSAGE_EXHAUSTED No further messages possible.

Definition at line 9 of file imoc_get_free_mid.c.

References moc_message_status_struct::bits, moc_node_handle_ppu_struct::comm_size, moc_message_status_struct::flags, MOC_ERR_MESSAGE_EXHAUSTED, node_handle, moc_node_handle_ppu_struct::queue_size, and moc_node_handle_ppu_struct::status_array_base.

Referenced by MOC_Bsend(), MOC_ISsend(), and MOC_Ssend().

Here is the caller graph for this function:

int IMOC_testForMessageCompletion ( uint8_t  mid,
uint8_t *  status 
)

Tests if message with message-ID mid has been received.

Tests if message-status-flag 'outstanding' is 0.

Parameters:
mid in message-ID
status out status of message
Return values:
MOC_SUCCESS No error; MPI routine completed successfully.

Definition at line 9 of file imoc_test_message.c.

References moc_message_status_struct::bits, moc_message_status_struct::flags, node_handle, and moc_node_handle_ppu_struct::status_array_base.

Referenced by MOC_Test().

Here is the caller graph for this function:

int IMOC_waitForMessageCompletion ( uint8_t  mid  ) 

Wait till message with message-ID mid has been received.

Waits till message-status-flag 'outstanding' is 0.

Parameters:
mid in message-ID
Returns:
0 when success otherwise error-code

Definition at line 9 of file imoc_wait_message.c.

References moc_message_status_struct::bits, moc_message_status_struct::flags, node_handle, and moc_node_handle_ppu_struct::status_array_base.

Referenced by MOC_Ssend(), and MOC_Wait().

Here is the caller graph for this function:


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