@@ -37,7 +37,6 @@ int ompi_request_default_test(ompi_request_t ** rptr,
37
37
38
38
recheck_request_status :
39
39
#endif
40
- opal_atomic_mb ();
41
40
if ( request -> req_state == OMPI_REQUEST_INACTIVE ) {
42
41
* completed = true;
43
42
if (MPI_STATUS_IGNORE != status ) {
@@ -55,6 +54,8 @@ int ompi_request_default_test(ompi_request_t ** rptr,
55
54
ompi_grequest_invoke_query (request , & request -> req_status );
56
55
}
57
56
if (MPI_STATUS_IGNORE != status ) {
57
+ /* make sure we get the correct status */
58
+ opal_atomic_rmb ();
58
59
OMPI_COPY_STATUS (status , request -> req_status , false);
59
60
}
60
61
if ( request -> req_persistent ) {
@@ -108,7 +109,6 @@ int ompi_request_default_test_any(
108
109
ompi_request_t * * rptr ;
109
110
ompi_request_t * request ;
110
111
111
- opal_atomic_mb ();
112
112
rptr = requests ;
113
113
for (i = 0 ; i < count ; i ++ , rptr ++ ) {
114
114
request = * rptr ;
@@ -129,6 +129,8 @@ int ompi_request_default_test_any(
129
129
ompi_grequest_invoke_query (request , & request -> req_status );
130
130
}
131
131
if (MPI_STATUS_IGNORE != status ) {
132
+ /* make sure we get the correct status */
133
+ opal_atomic_rmb ();
132
134
OMPI_COPY_STATUS (status , request -> req_status , false);
133
135
}
134
136
@@ -186,7 +188,6 @@ int ompi_request_default_test_all(
186
188
ompi_request_t * request ;
187
189
int do_it_once = 0 ;
188
190
189
- opal_atomic_mb ();
190
191
for (i = 0 ; i < count ; i ++ ) {
191
192
request = requests [i ];
192
193
@@ -231,6 +232,8 @@ int ompi_request_default_test_all(
231
232
232
233
rc = MPI_SUCCESS ;
233
234
if (MPI_STATUSES_IGNORE != statuses ) {
235
+ /* make sure we get the correct statuses */
236
+ opal_atomic_rmb ();
234
237
/* fill out completion status and free request if required */
235
238
for ( i = 0 ; i < count ; i ++ , rptr ++ ) {
236
239
request = * rptr ;
@@ -318,7 +321,6 @@ int ompi_request_default_test_some(
318
321
ompi_request_t * * rptr ;
319
322
ompi_request_t * request ;
320
323
321
- opal_atomic_mb ();
322
324
rptr = requests ;
323
325
for (i = 0 ; i < count ; i ++ , rptr ++ ) {
324
326
request = * rptr ;
@@ -357,6 +359,9 @@ int ompi_request_default_test_some(
357
359
return OMPI_SUCCESS ;
358
360
}
359
361
362
+ /* make sure we get the correct statuses */
363
+ opal_atomic_rmb ();
364
+
360
365
/* fill out completion status and free request if required */
361
366
for ( i = 0 ; i < num_requests_done ; i ++ ) {
362
367
request = requests [indices [i ]];
0 commit comments