@@ -1015,7 +1015,7 @@ int ompi_osc_rdma_rget_accumulate_internal (ompi_osc_rdma_sync_t *sync, const vo
1015
1015
ompi_osc_rdma_module_t * module = sync -> module ;
1016
1016
mca_btl_base_registration_handle_t * target_handle ;
1017
1017
uint64_t target_address ;
1018
- ptrdiff_t lb , extent ;
1018
+ ptrdiff_t lb , origin_extent , target_extent ;
1019
1019
int ret ;
1020
1020
1021
1021
/* short-circuit case. note that origin_count may be 0 if op is MPI_NO_OP */
@@ -1027,20 +1027,22 @@ int ompi_osc_rdma_rget_accumulate_internal (ompi_osc_rdma_sync_t *sync, const vo
1027
1027
return OMPI_SUCCESS ;
1028
1028
}
1029
1029
1030
- (void ) ompi_datatype_get_extent (origin_datatype , & lb , & extent );
1030
+ (void ) ompi_datatype_get_extent (target_datatype , & lb , & target_extent );
1031
1031
1032
- ret = osc_rdma_get_remote_segment (module , peer , target_disp , extent * target_count , & target_address , & target_handle );
1032
+ ret = osc_rdma_get_remote_segment (module , peer , target_disp , target_extent * target_count , & target_address , & target_handle );
1033
1033
if (OPAL_UNLIKELY (OMPI_SUCCESS != ret )) {
1034
1034
return ret ;
1035
1035
}
1036
1036
1037
- if (module -> acc_single_intrinsic && extent <= 8 ) {
1037
+ (void ) ompi_datatype_get_extent (origin_datatype , & lb , & origin_extent );
1038
+
1039
+ if (module -> acc_single_intrinsic && origin_extent <= 8 ) {
1038
1040
if (module -> acc_use_amo && ompi_datatype_is_predefined (origin_datatype )) {
1039
1041
if (NULL == result_addr ) {
1040
- ret = ompi_osc_rdma_acc_single_atomic (sync , origin_addr , origin_datatype , extent , peer , target_address ,
1042
+ ret = ompi_osc_rdma_acc_single_atomic (sync , origin_addr , origin_datatype , origin_extent , peer , target_address ,
1041
1043
target_handle , op , request );
1042
1044
} else {
1043
- ret = ompi_osc_rdma_fetch_and_op_atomic (sync , origin_addr , result_addr , origin_datatype , extent , peer , target_address ,
1045
+ ret = ompi_osc_rdma_fetch_and_op_atomic (sync , origin_addr , result_addr , origin_datatype , origin_extent , peer , target_address ,
1044
1046
target_handle , op , request );
1045
1047
}
1046
1048
@@ -1049,7 +1051,7 @@ int ompi_osc_rdma_rget_accumulate_internal (ompi_osc_rdma_sync_t *sync, const vo
1049
1051
}
1050
1052
}
1051
1053
1052
- ret = ompi_osc_rdma_fetch_and_op_cas (sync , origin_addr , result_addr , origin_datatype , extent , peer , target_address ,
1054
+ ret = ompi_osc_rdma_fetch_and_op_cas (sync , origin_addr , result_addr , origin_datatype , origin_extent , peer , target_address ,
1053
1055
target_handle , op , request );
1054
1056
if (OMPI_SUCCESS == ret ) {
1055
1057
return OMPI_SUCCESS ;
0 commit comments