* turns out that you should only call bsend_request_alloc or
bsend_request_init, but not both. Otherwise, you don't free some buffer space and end up leaking buffers and ending in badness * since you only call alloc() or init(), but not both, need to restore reference counting in init() This commit was SVN r10674.
Этот коммит содержится в:
родитель
3d5d0959fa
Коммит
26eee59032
@ -232,9 +232,9 @@ int mca_pml_base_bsend_request_start(ompi_request_t* request)
|
|||||||
ompi_convertor_prepare_for_send( &sendreq->req_convertor, sendreq->req_base.req_datatype,
|
ompi_convertor_prepare_for_send( &sendreq->req_convertor, sendreq->req_base.req_datatype,
|
||||||
sendreq->req_base.req_count, sendreq->req_base.req_addr );
|
sendreq->req_base.req_count, sendreq->req_base.req_addr );
|
||||||
|
|
||||||
|
#endif
|
||||||
/* increment count of pending requests */
|
/* increment count of pending requests */
|
||||||
mca_pml_bsend_count++;
|
mca_pml_bsend_count++;
|
||||||
#endif
|
|
||||||
|
|
||||||
sendreq->req_datatype = MPI_BYTE;
|
sendreq->req_datatype = MPI_BYTE;
|
||||||
|
|
||||||
|
@ -93,10 +93,7 @@ do { \
|
|||||||
MCA_PML_BASE_SEND_START( &sendreq->req_send.req_base ); \
|
MCA_PML_BASE_SEND_START( &sendreq->req_send.req_base ); \
|
||||||
ret = OMPI_SUCCESS; \
|
ret = OMPI_SUCCESS; \
|
||||||
if (sendreq->req_send.req_send_mode == MCA_PML_BASE_SEND_BUFFERED) { \
|
if (sendreq->req_send.req_send_mode == MCA_PML_BASE_SEND_BUFFERED) { \
|
||||||
ret = mca_pml_base_bsend_request_alloc(&sendreq->req_send.req_base.req_ompi); \
|
ret =mca_pml_base_bsend_request_start(&sendreq->req_send.req_base.req_ompi); \
|
||||||
if (OMPI_SUCCESS == ret) { \
|
|
||||||
ret =mca_pml_base_bsend_request_start(&sendreq->req_send.req_base.req_ompi); \
|
|
||||||
} \
|
|
||||||
} \
|
} \
|
||||||
if (OMPI_SUCCESS == ret) { \
|
if (OMPI_SUCCESS == ret) { \
|
||||||
ret = OMPI_MTL_CALL(isend(ompi_mtl, \
|
ret = OMPI_MTL_CALL(isend(ompi_mtl, \
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user