Merge pull request #2196 from tkordenbrock/topic/master/osc-portals4.put.use.true_extent
osc-portals4: fix datatype errors in put()
Этот коммит содержится в:
Коммит
fd55204791
@ -763,8 +763,8 @@ ompi_osc_portals4_put(const void *origin_addr,
|
|||||||
ompi_osc_portals4_module_t *module =
|
ompi_osc_portals4_module_t *module =
|
||||||
(ompi_osc_portals4_module_t*) win->w_osc_module;
|
(ompi_osc_portals4_module_t*) win->w_osc_module;
|
||||||
ptl_process_t peer = ompi_osc_portals4_get_peer(module, target);
|
ptl_process_t peer = ompi_osc_portals4_get_peer(module, target);
|
||||||
size_t offset;
|
size_t offset, size;
|
||||||
OPAL_PTRDIFF_TYPE length, origin_lb, target_lb;
|
OPAL_PTRDIFF_TYPE length, origin_lb, target_lb, extent;
|
||||||
|
|
||||||
OPAL_OUTPUT_VERBOSE((50, ompi_osc_base_framework.framework_output,
|
OPAL_OUTPUT_VERBOSE((50, ompi_osc_base_framework.framework_output,
|
||||||
"put: 0x%lx, %d, %s, %d, %lu, %d, %s, 0x%lx",
|
"put: 0x%lx, %d, %s, %d, %lu, %d, %s, 0x%lx",
|
||||||
@ -781,18 +781,22 @@ ompi_osc_portals4_put(const void *origin_addr,
|
|||||||
"MPI_Put: transfer of non-contiguous memory is not currently supported.\n");
|
"MPI_Put: transfer of non-contiguous memory is not currently supported.\n");
|
||||||
return OMPI_ERR_NOT_SUPPORTED;
|
return OMPI_ERR_NOT_SUPPORTED;
|
||||||
} else {
|
} else {
|
||||||
ret = ompi_datatype_get_extent(origin_dt, &origin_lb, &length);
|
ret = ompi_datatype_get_true_extent(origin_dt, &origin_lb, &extent);
|
||||||
if (OMPI_SUCCESS != ret) {
|
if (OMPI_SUCCESS != ret) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
ret = ompi_datatype_type_lb(target_dt, &target_lb);
|
ret = ompi_datatype_get_true_extent(target_dt, &target_lb, &extent);
|
||||||
if (OMPI_SUCCESS != ret) {
|
if (OMPI_SUCCESS != ret) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
length *= origin_count;
|
ompi_datatype_type_size(origin_dt, &size);
|
||||||
|
length = size * origin_count;
|
||||||
|
|
||||||
opal_atomic_add_64(&module->opcount, number_of_fragment(length, mca_osc_portals4_component.ptl_max_msg_size));
|
opal_atomic_add_64(&module->opcount, number_of_fragment(length, mca_osc_portals4_component.ptl_max_msg_size));
|
||||||
|
|
||||||
OPAL_OUTPUT_VERBOSE((90, ompi_osc_base_framework.framework_output,
|
OPAL_OUTPUT_VERBOSE((90, ompi_osc_base_framework.framework_output,
|
||||||
"%s,%d Put", __FUNCTION__, __LINE__));
|
"%s,%d Put(origin_count=%d, origin_lb=%lu, target_count=%d, target_lb=%lu, length=%lu, op_count=%ld)",
|
||||||
|
__FUNCTION__, __LINE__, origin_count, origin_lb, target_count, target_lb, length, module->opcount));
|
||||||
ret = splittedPtlPut(module->md_h,
|
ret = splittedPtlPut(module->md_h,
|
||||||
(ptl_size_t) origin_addr + origin_lb,
|
(ptl_size_t) origin_addr + origin_lb,
|
||||||
length,
|
length,
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user