osc/rdma: use correct endpoint for local state
If atomics are not globally visible (cpu and nic atomics do not mix) then a btl endpoint must be used to access local ranks. To avoid issues that are caused by having the same region registered with multiple handles osc/rdma was updated to always use the handle for rank 0. There was a bug in the update that caused osc/rdma to continue using the local endpoint for accessing the state even though the pointer/handle are not valid for that endpoint. This commit fixes the bug. Fixes open-mpi/ompi#1241. Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
Этот коммит содержится в:
родитель
243d973cfe
Коммит
49d2f44b97
@ -627,7 +627,7 @@ static int allocate_state_shared (ompi_osc_rdma_module_t *module, void **base, s
|
||||
peer->state_handle = (mca_btl_base_registration_handle_t *) state_region->btl_handle_data;
|
||||
}
|
||||
peer->state = (osc_rdma_counter_t) ((uintptr_t) state_region->base + state_base + module->state_size * i);
|
||||
peer->state_endpoint = ompi_osc_rdma_peer_btl_endpoint (module, peer_rank);
|
||||
peer->state_endpoint = ompi_osc_rdma_peer_btl_endpoint (module, temp[0].rank);
|
||||
}
|
||||
|
||||
/* finish setting up the local peer structure */
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user