1
1

yet another change to sequence logic

This commit was SVN r6528.
Этот коммит содержится в:
Tim Woodall 2005-07-15 18:34:37 +00:00
родитель 3b2d6826e8
Коммит 3ca9536695
5 изменённых файлов: 6 добавлений и 4 удалений

Просмотреть файл

@ -25,6 +25,7 @@
static void mca_pml_ob1_comm_proc_construct(mca_pml_ob1_comm_proc_t* proc)
{
proc->expected_sequence = 1;
proc->send_sequence = 0;
OBJ_CONSTRUCT(&proc->frags_cant_match, opal_list_t);
OBJ_CONSTRUCT(&proc->specific_receives, opal_list_t);
OBJ_CONSTRUCT(&proc->unexpected_frags, opal_list_t);

Просмотреть файл

@ -31,6 +31,7 @@ extern "C" {
struct mca_pml_ob1_comm_proc_t {
opal_object_t super;
uint16_t expected_sequence; /**< send message sequence number - receiver side */
volatile uint32_t send_sequence; /**< send side sequence number */
opal_list_t frags_cant_match; /**< out-of-order fragment queues */
opal_list_t specific_receives; /**< queues of unmatched specific receives */
opal_list_t unexpected_frags; /**< unexpected fragment queues */
@ -44,7 +45,7 @@ typedef struct mca_pml_ob1_comm_proc_t mca_pml_ob1_comm_proc_t;
*/
struct mca_pml_comm_t {
opal_object_t super;
mca_ptl_sequence_t recv_sequence; /**< recv request sequence number - receiver side */
volatile uint32_t recv_sequence; /**< recv request sequence number - receiver side */
opal_mutex_t matching_lock; /**< matching lock */
opal_list_t wild_receives; /**< queue of unmatched wild (source process not specified) receives */
mca_pml_ob1_comm_proc_t* procs;

Просмотреть файл

@ -24,7 +24,6 @@
static void mca_pml_ob1_proc_construct(mca_pml_ob1_proc_t* proc)
{
proc->proc_ompi = NULL;
proc->proc_sequence = 0;
proc->proc_rdma_offset = 0;
OBJ_CONSTRUCT(&proc->proc_lock, opal_mutex_t);
OBJ_CONSTRUCT(&proc->btl_eager, mca_pml_ob1_ep_array_t);

Просмотреть файл

@ -37,7 +37,6 @@ struct mca_pml_proc_t {
ompi_proc_t *proc_ompi; /**< back-pointer to ompi_proc_t */
opal_mutex_t proc_lock; /**< lock to protect against concurrent access */
int proc_flags; /**< prefered method of accessing this peer */
volatile uint32_t proc_sequence; /**< sequence number for send */
mca_pml_ob1_ep_array_t btl_eager; /**< array of endpoints to use for first fragments */
mca_pml_ob1_ep_array_t btl_send; /**< array of endpoints to use for remaining fragments */
mca_pml_ob1_ep_array_t btl_rdma; /**< array of endpoints that support (prefer) rdma */

Просмотреть файл

@ -169,6 +169,7 @@ OBJ_CLASS_DECLARATION(mca_pml_ob1_send_request_t);
{ \
mca_pml_ob1_endpoint_t* endpoint; \
mca_pml_ob1_proc_t* proc = sendreq->req_proc; \
mca_pml_ob1_comm_t* comm = sendreq->req_send.req_base.req_comm->c_pml_comm; \
\
MCA_PML_OB1_SEND_REQUEST_TSTAMPS_INIT(sendreq); \
\
@ -183,7 +184,8 @@ OBJ_CLASS_DECLARATION(mca_pml_ob1_send_request_t);
sendreq->req_send.req_base.req_pml_complete = false; \
sendreq->req_send.req_base.req_ompi.req_complete = false; \
sendreq->req_send.req_base.req_ompi.req_state = OMPI_REQUEST_ACTIVE; \
sendreq->req_send.req_base.req_sequence = OPAL_THREAD_ADD32(&proc->proc_sequence,1); \
sendreq->req_send.req_base.req_sequence = OPAL_THREAD_ADD32( \
&comm->procs[sendreq->req_send.req_base.req_peer].send_sequence,1); \
sendreq->req_endpoint = endpoint; \
\
/* handle buffered send */ \