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.
Этот коммит содержится в:
родитель
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, \
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user