1
1

Handle the 0 count communications through the self module.

This commit was SVN r3017.
Этот коммит содержится в:
George Bosilca 2004-10-09 21:38:42 +00:00
родитель 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,