1
1

Initialize the convertor on _START not on _INIT. This allow us to

set it up before the match when we know the peer, saving some
time on the critical path. If the receive is ANY_SOURCE then
we initialize the convertor on _MATCHED. Anyway, we will set it
up only once per receive.

This commit was SVN r12484.
Этот коммит содержится в:
George Bosilca 2006-11-08 05:42:29 +00:00
родитель ad5d5b95c8
Коммит 915d748d72

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

@ -102,22 +102,6 @@ do { \
tag, \
comm, \
persistent); \
(request)->req_bytes_delivered = 0; \
if( MPI_ANY_SOURCE != src ) { \
(request)->req_recv.req_base.req_proc = \
comm->c_pml_comm->procs[src].ompi_proc; \
if( (0 != (datatype)->size) && (0 != count) ) { \
ompi_convertor_copy_and_prepare_for_recv( \
(request)->req_recv.req_base.req_proc->proc_convertor, \
(request)->req_recv.req_base.req_datatype, \
(request)->req_recv.req_base.req_count, \
(request)->req_recv.req_base.req_addr, \
0, \
&(request)->req_recv.req_convertor ); \
ompi_convertor_get_unpacked_size( &(request)->req_recv.req_convertor, \
&(request)->req_bytes_delivered ); \
} \
} \
} while(0)
/**
@ -230,6 +214,21 @@ do {
if((request)->req_recv.req_base.req_peer == OMPI_ANY_SOURCE) { \
mca_pml_ob1_recv_request_match_wild(request); \
} else { \
(request)->req_recv.req_base.req_proc = \
(request)->req_recv.req_base.req_comm->c_pml_comm->procs \
[(request)->req_recv.req_base.req_peer].ompi_proc; \
if( (0 != (request)->req_recv.req_base.req_datatype->size) && \
(0 != (request)->req_recv.req_base.req_count) ) { \
ompi_convertor_copy_and_prepare_for_recv( \
(request)->req_recv.req_base.req_proc->proc_convertor, \
(request)->req_recv.req_base.req_datatype, \
(request)->req_recv.req_base.req_count, \
(request)->req_recv.req_base.req_addr, \
0, \
&(request)->req_recv.req_convertor ); \
ompi_convertor_get_unpacked_size( &(request)->req_recv.req_convertor, \
&(request)->req_bytes_delivered ); \
} \
mca_pml_ob1_recv_request_match_specific(request); \
} \
} while (0)
@ -248,8 +247,7 @@ do {
&((request)->req_recv.req_base), PERUSE_RECV ); \
\
if((request)->req_recv.req_bytes_packed > 0) { \
if( (MPI_ANY_SOURCE == (request)->req_recv.req_base.req_peer) || \
(0 == (request)->req_bytes_delivered) ) { \
if( MPI_ANY_SOURCE == (request)->req_recv.req_base.req_peer ) { \
ompi_convertor_copy_and_prepare_for_recv( \
(request)->req_recv.req_base.req_proc->proc_convertor, \
(request)->req_recv.req_base.req_datatype, \