Do not return MPI_ERR_PENDING from collectives.
Этот коммит содержится в:
родитель
f8469de832
Коммит
c98e97a46e
@ -3,7 +3,7 @@
|
|||||||
* Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
* Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
||||||
* University Research and Technology
|
* University Research and Technology
|
||||||
* Corporation. All rights reserved.
|
* Corporation. All rights reserved.
|
||||||
* Copyright (c) 2004-2015 The University of Tennessee and The University
|
* Copyright (c) 2004-2016 The University of Tennessee and The University
|
||||||
* of Tennessee Research Foundation. All rights
|
* of Tennessee Research Foundation. All rights
|
||||||
* reserved.
|
* reserved.
|
||||||
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
||||||
@ -61,13 +61,14 @@ ompi_coll_base_sendrecv_zero(int dest, int stag,
|
|||||||
if (err != MPI_SUCCESS) { line = __LINE__; goto error_handler; }
|
if (err != MPI_SUCCESS) { line = __LINE__; goto error_handler; }
|
||||||
|
|
||||||
err = ompi_request_wait_all( 2, reqs, statuses );
|
err = ompi_request_wait_all( 2, reqs, statuses );
|
||||||
if( MPI_ERR_IN_STATUS == err ) {
|
if( MPI_ERR_IN_STATUS == err ) { line = __LINE__;
|
||||||
/* As we use wait_all we will get MPI_ERR_IN_STATUS which is not an error
|
/* As we use wait_all we will get MPI_ERR_IN_STATUS which is not an error
|
||||||
* code that we can propagate up the stack. Instead, look for the real
|
* code that we can propagate up the stack. Instead, look for the real
|
||||||
* error code from the MPI_ERROR in the status.
|
* error code from the MPI_ERROR in the status.
|
||||||
*/
|
*/
|
||||||
int err_index = 0;
|
int err_index = 0;
|
||||||
if( MPI_SUCCESS == statuses[0].MPI_ERROR ) {
|
if( MPI_SUCCESS == statuses[0].MPI_ERROR
|
||||||
|
|| MPI_ERR_PENDING == statuses[0].MPI_ERROR ) {
|
||||||
err_index = 1;
|
err_index = 1;
|
||||||
}
|
}
|
||||||
err = statuses[err_index].MPI_ERROR;
|
err = statuses[err_index].MPI_ERROR;
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
* Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
* Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
||||||
* University Research and Technology
|
* University Research and Technology
|
||||||
* Corporation. All rights reserved.
|
* Corporation. All rights reserved.
|
||||||
* Copyright (c) 2004-2015 The University of Tennessee and The University
|
* Copyright (c) 2004-2016 The University of Tennessee and The University
|
||||||
* of Tennessee Research Foundation. All rights
|
* of Tennessee Research Foundation. All rights
|
||||||
* reserved.
|
* reserved.
|
||||||
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
||||||
@ -64,13 +64,14 @@ int ompi_coll_base_sendrecv_nonzero_actual( void* sendbuf, size_t scount,
|
|||||||
|
|
||||||
if (0 != nreqs) {
|
if (0 != nreqs) {
|
||||||
err = ompi_request_wait_all( nreqs, reqs, statuses );
|
err = ompi_request_wait_all( nreqs, reqs, statuses );
|
||||||
if( MPI_ERR_IN_STATUS == err ) {
|
if( MPI_ERR_IN_STATUS == err ) { line == __LINE__;
|
||||||
/* As we use wait_all we will get MPI_ERR_IN_STATUS which is not an error
|
/* As we use wait_all we will get MPI_ERR_IN_STATUS which is not an error
|
||||||
* code that we can propagate up the stack. Instead, look for the real
|
* code that we can propagate up the stack. Instead, look for the real
|
||||||
* error code from the MPI_ERROR in the status.
|
* error code from the MPI_ERROR in the status.
|
||||||
*/
|
*/
|
||||||
int err_index = 0;
|
int err_index = 0;
|
||||||
if( MPI_SUCCESS == statuses[0].MPI_ERROR ) {
|
if( MPI_SUCCESS == statuses[0].MPI_ERROR
|
||||||
|
|| MPI_ERR_PENDING == statuses[0].MPI_ERROR ) {
|
||||||
err_index = 1;
|
err_index = 1;
|
||||||
}
|
}
|
||||||
if (MPI_STATUS_IGNORE != status) {
|
if (MPI_STATUS_IGNORE != status) {
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user