1
1

ob1: large buffered sends were broken by the ob1 optimizations. fix them

The problem was caused by the static request optimization. The buffered send case
is much like the isend case in that the request structure may be needed after
MPI_Bsend completes. Fix this case by calling isend and freeing the resulting
request.

cmr=v1.7.5:ticket=trac:4149

This commit was SVN r30601.

The following Trac tickets were found above:
  Ticket 4149 --> https://svn.open-mpi.org/trac/ompi/ticket/4149
Этот коммит содержится в:
Nathan Hjelm 2014-02-07 00:12:36 +00:00
родитель 7d2c4cb468
Коммит a06e491c2c

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

@ -163,6 +163,20 @@ int mca_pml_ob1_send(void *buf,
int16_t seqn;
int rc;
if (OPAL_UNLIKELY(MCA_PML_BASE_SEND_BUFFERED == sendmode)) {
/* large buffered sends *need* a real request so use isend instead */
ompi_request_t *brequest;
rc = mca_pml_ob1_isend (buf, count, datatype, dst, tag, sendmode, comm, &brequest);
if (OPAL_UNLIKELY(OMPI_SUCCESS != rc)) {
return rc;
}
/* free the request and return. don't care if it completes now */
ompi_request_free (&brequest);
return OMPI_SUCCESS;
}
if (OPAL_UNLIKELY(NULL == endpoint)) {
return OMPI_ERR_UNREACH;
}