Handle the 0 count communications through the self module.
This commit was SVN r3017.
Этот коммит содержится в:
родитель
c19d1d330e
Коммит
356cc37c13
@ -141,6 +141,8 @@ void mca_ptl_self_matched( mca_ptl_base_module_t* ptl,
|
|||||||
frag->frag_base.frag_header.hdr_frag.hdr_src_ptr.pval;
|
frag->frag_base.frag_header.hdr_frag.hdr_src_ptr.pval;
|
||||||
mca_pml_base_recv_request_t* recvreq = frag->frag_request;
|
mca_pml_base_recv_request_t* recvreq = frag->frag_request;
|
||||||
|
|
||||||
|
if( (recvreq->req_base.req_count != 0) &&
|
||||||
|
(sendreq->req_send.req_base.req_count != 0) ) {
|
||||||
/* Did you have the same datatype or not ? If yes we can use an optimized version
|
/* Did you have the same datatype or not ? If yes we can use an optimized version
|
||||||
* for the copy function, if not we have to use a temporary buffer to pack/unpack
|
* for the copy function, if not we have to use a temporary buffer to pack/unpack
|
||||||
*
|
*
|
||||||
@ -150,8 +152,7 @@ void mca_ptl_self_matched( mca_ptl_base_module_t* ptl,
|
|||||||
*/
|
*/
|
||||||
if( sendreq->req_send.req_base.req_datatype == recvreq->req_base.req_datatype &&
|
if( sendreq->req_send.req_base.req_datatype == recvreq->req_base.req_datatype &&
|
||||||
sendreq->req_send.req_send_mode != MCA_PML_BASE_SEND_BUFFERED) {
|
sendreq->req_send.req_send_mode != MCA_PML_BASE_SEND_BUFFERED) {
|
||||||
ompi_ddt_copy_content_same_ddt(
|
ompi_ddt_copy_content_same_ddt( recvreq->req_base.req_datatype,
|
||||||
recvreq->req_base.req_datatype,
|
|
||||||
recvreq->req_base.req_count,
|
recvreq->req_base.req_count,
|
||||||
recvreq->req_base.req_addr,
|
recvreq->req_base.req_addr,
|
||||||
sendreq->req_send.req_base.req_addr );
|
sendreq->req_send.req_base.req_addr );
|
||||||
@ -166,8 +167,7 @@ void mca_ptl_self_matched( mca_ptl_base_module_t* ptl,
|
|||||||
length = 64 * 1024;
|
length = 64 * 1024;
|
||||||
buf = malloc( length * sizeof(char) );
|
buf = malloc( length * sizeof(char) );
|
||||||
|
|
||||||
ompi_convertor_init_for_recv(
|
ompi_convertor_init_for_recv( &frag->frag_base.frag_convertor,
|
||||||
&frag->frag_base.frag_convertor,
|
|
||||||
0,
|
0,
|
||||||
recvreq->req_base.req_datatype,
|
recvreq->req_base.req_datatype,
|
||||||
recvreq->req_base.req_count,
|
recvreq->req_base.req_count,
|
||||||
@ -190,7 +190,9 @@ void mca_ptl_self_matched( mca_ptl_base_module_t* ptl,
|
|||||||
}
|
}
|
||||||
free( buf );
|
free( buf );
|
||||||
}
|
}
|
||||||
ptl->ptl_send_progress( ptl, &sendreq->req_send, sendreq->req_send.req_bytes_packed );
|
}
|
||||||
|
ptl->ptl_send_progress( ptl, &sendreq->req_send,
|
||||||
|
sendreq->req_send.req_bytes_packed );
|
||||||
ptl->ptl_recv_progress( ptl,
|
ptl->ptl_recv_progress( ptl,
|
||||||
recvreq,
|
recvreq,
|
||||||
frag->frag_base.frag_header.hdr_frag.hdr_frag_length,
|
frag->frag_base.frag_header.hdr_frag.hdr_frag_length,
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user