@@ -369,7 +369,11 @@ static int do_atomic_op_replace_sum(
369
369
}
370
370
371
371
opal_common_ucx_user_req_handler_t user_req_cb = NULL ;
372
- void * user_req_ptr = NULL ;
372
+ void * user_req_ptr = NULL ;
373
+ void * output_addr = & (module -> req_result );
374
+ if ( result_addr ) {
375
+ output_addr = result_addr ;
376
+ }
373
377
for (int i = 0 ; i < origin_count ; ++ i ) {
374
378
uint64_t value = 0 ;
375
379
if ((origin_count - 1 ) == i && NULL != ucx_req ) {
@@ -391,14 +395,14 @@ static int do_atomic_op_replace_sum(
391
395
memcpy (& value , origin_addr , origin_dt_bytes );
392
396
}
393
397
ret = opal_common_ucx_wpmem_fetch_nb (module -> mem , opcode , value , target ,
394
- result_addr ? result_addr : & ( module -> req_result ) ,
395
- origin_dt_bytes , remote_addr , user_req_cb , user_req_ptr );
398
+ output_addr , origin_dt_bytes , remote_addr ,
399
+ user_req_cb , user_req_ptr );
396
400
397
401
// advance origin and remote address
398
402
origin_addr = (void * )((intptr_t )origin_addr + origin_dt_bytes );
399
403
remote_addr += origin_dt_bytes ;
400
404
if (result_addr ) {
401
- result_addr = (void * )((intptr_t )result_addr + origin_dt_bytes );
405
+ output_addr = (void * )((intptr_t )output_addr + origin_dt_bytes );
402
406
}
403
407
}
404
408
0 commit comments