|
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.
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 struct moc_request_struct MOC_Request |
Communication-Request (Handle).
< Communication-Request (Handle)
| 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.
| 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) |
| MOC_SUCCESS | No error; MPI routine completed successfully. | |
| ... | error-code |
byte-count <= 4096 ==> buffered send
other ==> true non-blocking send
Definition at line 18 of file moc_isend.c.
References imoc_issend_request_struct::isFinished, moc_request_struct::issend_request, imoc_issend_request_struct::message_size, MOC_Bsend(), MOC_ISsend(), MOC_REQ_TYPE_ISSEND, MOC_SEND_TRESHOLD, node_handle, moc_node_handle_ppu_struct::rank, moc_request_struct::request_data, moc_request_struct::request_type, imoc_issend_request_struct::source, and imoc_issend_request_struct::tag.
Referenced by MOC_Bcast().


| 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.
| 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) |
| MOC_SUCCESS | No error; MPI routine completed successfully. | |
| ... | error-code |
Definition at line 10 of file moc_issend_ppu.c.
References __attribute__(), moc_message_status_struct::bits, moc_message_status_struct::flags, IMOC_EA_REMOTE_QUEUE, IMOC_EA_REMOTE_QUEUE_ENTRY, IMOC_getFreeEntry(), IMOC_getFreeMID(), IMOC_LS_REMOTE_QUEUE, IMOC_MESSAGE_CHANNEL_DMA, IMOC_MESSAGE_CHANNEL_ENV, IMOC_TEST_ALIGNMENT, IMOC_TEST_BUFFER, IMOC_TEST_BYTECOUNT, IMOC_TEST_COMM_SEND, IMOC_TEST_PROC_NULL, IMOC_TEST_PROC_SELF, IMOC_TEST_RANK, IMOC_TEST_TAG_SEND, imoc_issend_request_struct::isFinished, moc_request_struct::issend_request, MEMCPY_GET_TRESHOLD, imoc_issend_request_struct::message_size, imoc_issend_request_struct::mid, MOC_ERR_INTERN, moc_ppu_thread_count, MOC_REQ_TYPE_ISSEND, moc_spu_thread_list, MOC_SUCCESS, node_handle, moc_node_handle_ppu_struct::queue_size, moc_node_handle_ppu_struct::rank, moc_request_struct::request_data, moc_request_struct::request_type, imoc_issend_request_struct::source, moc_node_handle_ppu_struct::status_array_base, and imoc_issend_request_struct::tag.
Referenced by MOC_ISend().


| int MOC_Test | ( | MOC_Request * | request, | |
| int * | flag, | |||
| MOC_Status * | status | |||
| ) |
Tests, if a non-blocking communication has been completed.
| request | in Communication-Request (Handle) | |
| flag | out true, if communication-request has been completed | |
| status | out Object holding status-information |
| MOC_SUCCESS | No error; MPI routine completed successfully. | |
| ... | error-code |
Definition at line 13 of file moc_test.c.
References moc_message_status_struct::bits, moc_request_struct::dma_data, moc_message_status_struct::flags, IMOC_test_dma(), IMOC_testForMessageCompletion(), imoc_issend_request_struct::isFinished, moc_request_struct::issend_request, imoc_issend_request_struct::message_size, MOC_Status_struct::message_size, imoc_issend_request_struct::mid, MOC_ERR_REQUEST, MOC_Status_struct::MOC_ERROR, MOC_REQ_TYPE_DMA, MOC_REQ_TYPE_ISSEND, MOC_Status_struct::MOC_SOURCE, MOC_Status_struct::MOC_TAG, node_handle, moc_request_struct::request_data, moc_request_struct::request_type, imoc_dma_request_struct::size, imoc_issend_request_struct::source, moc_node_handle_ppu_struct::status_array_base, and imoc_issend_request_struct::tag.

| int MOC_Wait | ( | MOC_Request * | request, | |
| MOC_Status * | status | |||
| ) |
Wait till a non-blocking communication has been completed.
| request | in Communication-Request (Handle) | |
| status | out Object holding status-information |
| MOC_SUCCESS | No error; MPI routine completed successfully. | |
| ... | error-code |
Definition at line 11 of file moc_wait.c.
References moc_request_struct::dma_data, moc_message_status_struct::flags, IMOC_wait_dma(), IMOC_waitForMessageCompletion(), imoc_issend_request_struct::isFinished, moc_request_struct::issend_request, imoc_issend_request_struct::message_size, MOC_Status_struct::message_size, imoc_issend_request_struct::mid, MOC_ERR_REQUEST, MOC_Status_struct::MOC_ERROR, MOC_REQ_TYPE_DMA, MOC_REQ_TYPE_ISSEND, MOC_Status_struct::MOC_SOURCE, MOC_Status_struct::MOC_TAG, node_handle, moc_node_handle_ppu_struct::rank, moc_request_struct::request_data, moc_request_struct::request_type, imoc_dma_request_struct::size, imoc_issend_request_struct::source, moc_node_handle_ppu_struct::status_array_base, imoc_issend_request_struct::tag, and moc_message_status_struct::value.
Referenced by MOC_Bcast().


1.5.6