1
1

Merge pull request #1555 from shawone/check_reduce_ret

coll-portals4: check return value from reduce kary tree functions
Этот коммит содержится в:
Todd Kordenbrock 2016-05-03 10:17:23 -05:00
родитель 33dd8ca81e c86d4035d2
Коммит 3498bed650

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

@ -367,6 +367,7 @@ ompi_coll_portals4_reduce_intra(const void *sendbuf, void *recvbuf, int count,
struct ompi_communicator_t *comm, struct ompi_communicator_t *comm,
mca_coll_base_module_t *module) mca_coll_base_module_t *module)
{ {
int ret;
mca_coll_portals4_module_t *portals4_module = (mca_coll_portals4_module_t*) module; mca_coll_portals4_module_t *portals4_module = (mca_coll_portals4_module_t*) module;
ompi_coll_portals4_request_t *request; ompi_coll_portals4_request_t *request;
@ -381,9 +382,13 @@ ompi_coll_portals4_reduce_intra(const void *sendbuf, void *recvbuf, int count,
request->is_sync = true; request->is_sync = true;
request->fallback_request = NULL; request->fallback_request = NULL;
reduce_kary_tree_top(sendbuf, recvbuf, count, ret = reduce_kary_tree_top(sendbuf, recvbuf, count,
dtype, op, root, comm, request, portals4_module); dtype, op, root, comm, request, portals4_module);
reduce_kary_tree_bottom(request); if (OMPI_SUCCESS != ret)
return ret;
ret = reduce_kary_tree_bottom(request);
if (OMPI_SUCCESS != ret)
return ret;
OMPI_COLL_PORTALS4_REQUEST_RETURN(request); OMPI_COLL_PORTALS4_REQUEST_RETURN(request);
return (OMPI_SUCCESS); return (OMPI_SUCCESS);
@ -398,6 +403,7 @@ ompi_coll_portals4_ireduce_intra(const void* sendbuf, void* recvbuf, int count,
ompi_request_t ** ompi_request, ompi_request_t ** ompi_request,
struct mca_coll_base_module_2_1_0_t *module) struct mca_coll_base_module_2_1_0_t *module)
{ {
int ret;
mca_coll_portals4_module_t *portals4_module = (mca_coll_portals4_module_t*) module; mca_coll_portals4_module_t *portals4_module = (mca_coll_portals4_module_t*) module;
ompi_coll_portals4_request_t *request; ompi_coll_portals4_request_t *request;
@ -413,9 +419,10 @@ ompi_coll_portals4_ireduce_intra(const void* sendbuf, void* recvbuf, int count,
request->fallback_request = ompi_request; request->fallback_request = ompi_request;
request->is_sync = false; request->is_sync = false;
ret = reduce_kary_tree_top(sendbuf, recvbuf, count,
reduce_kary_tree_top(sendbuf, recvbuf, count,
dtype, op, root, comm, request, portals4_module); dtype, op, root, comm, request, portals4_module);
if (OMPI_SUCCESS != ret)
return ret;
if (!request->u.reduce.is_optim) { if (!request->u.reduce.is_optim) {
OMPI_COLL_PORTALS4_REQUEST_RETURN(request); OMPI_COLL_PORTALS4_REQUEST_RETURN(request);
@ -428,7 +435,11 @@ ompi_coll_portals4_ireduce_intra(const void* sendbuf, void* recvbuf, int count,
int int
ompi_coll_portals4_ireduce_intra_fini(ompi_coll_portals4_request_t *request) ompi_coll_portals4_ireduce_intra_fini(ompi_coll_portals4_request_t *request)
{ {
reduce_kary_tree_bottom(request); int ret;
ret = reduce_kary_tree_bottom(request);
if (OMPI_SUCCESS != ret)
return ret;
OPAL_THREAD_LOCK(&ompi_request_lock); OPAL_THREAD_LOCK(&ompi_request_lock);
ompi_request_complete(&request->super, true); ompi_request_complete(&request->super, true);