fix bugs to get multi-fragment shared memory communications to work.
This commit was SVN r3322.
Этот коммит содержится в:
родитель
32f326a4d6
Коммит
0648d1de85
@ -606,7 +606,7 @@ int mca_ptl_sm_send_continue(
|
||||
mca_ptl_base_header_t* hdr;
|
||||
void *sm_data_ptr, *user_data_ptr;
|
||||
ompi_list_item_t* item;
|
||||
mca_ptl_sm_second_frag_t *send_frag;
|
||||
mca_ptl_sm_second_frag_t *send_frag, *write_send_frag;
|
||||
ompi_convertor_t *convertor;
|
||||
struct iovec address;
|
||||
unsigned int max_data,iov_count;
|
||||
@ -659,6 +659,9 @@ int mca_ptl_sm_send_continue(
|
||||
* at the peer. Get this value from the first fragment */
|
||||
hdr->hdr_frag.hdr_dst_ptr.pval =
|
||||
sm_request->req_frag->super.frag_request;
|
||||
send_frag->super.frag_request=
|
||||
((mca_ptl_base_recv_frag_t *)(sm_request->req_frag))->
|
||||
frag_request;
|
||||
|
||||
/* update the offset within the payload */
|
||||
sendreq->req_offset += size;
|
||||
@ -666,7 +669,7 @@ int mca_ptl_sm_send_continue(
|
||||
/*
|
||||
* update the fragment descriptor
|
||||
*/
|
||||
sm_request->req_frag->super.frag_base.frag_size=size;
|
||||
send_frag->super.frag_base.frag_size=size;
|
||||
|
||||
/*
|
||||
* post the descriptor in the queue - post with the relative
|
||||
@ -678,7 +681,6 @@ int mca_ptl_sm_send_continue(
|
||||
send_fifo=&(mca_ptl_sm_component.fifo
|
||||
[my_local_smp_rank][peer_local_smp_rank]);
|
||||
/* since the first fragment has already been posted,
|
||||
|
||||
* the queue has already been initialized, so no need to check */
|
||||
|
||||
/* post descriptor */
|
||||
@ -689,7 +691,8 @@ int mca_ptl_sm_send_continue(
|
||||
ompi_atomic_lock(&(send_fifo->head_lock));
|
||||
}
|
||||
|
||||
return_status=ompi_fifo_write_to_head(sm_request->req_frag_offset_from_base,
|
||||
write_send_frag=(void *)((char *)send_frag-mca_ptl_sm_component.sm_offset);
|
||||
return_status=ompi_fifo_write_to_head(write_send_frag,
|
||||
send_fifo, mca_ptl_sm_component.sm_mpool,
|
||||
mca_ptl_sm_component.sm_offset);
|
||||
if( 0 <= return_status ) {
|
||||
|
@ -367,9 +367,8 @@ int mca_ptl_sm_component_progress(mca_ptl_tstamp_t tstamp)
|
||||
* the shared memory buffers */
|
||||
base_send_req=header_ptr->super.frag_base.frag_header.
|
||||
hdr_frag.hdr_src_ptr.pval;
|
||||
|
||||
header_ptr->send_ptl->ptl_send_progress(
|
||||
/*((mca_ptl_base_recv_frag_t *)header_ptr)->
|
||||
frag_base.frag_owner->ptl_send_progress(*/
|
||||
(mca_ptl_base_module_t *)&mca_ptl_sm,
|
||||
base_send_req,
|
||||
header_ptr->super.frag_base.frag_size);
|
||||
@ -381,7 +380,7 @@ int mca_ptl_sm_component_progress(mca_ptl_tstamp_t tstamp)
|
||||
hdr_frag.hdr_frag_offset ) {
|
||||
OMPI_FREE_LIST_RETURN(&mca_ptl_sm.sm_second_frags,
|
||||
(ompi_list_item_t *)header_ptr);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user