Skip to content

Commit 9a06000

Browse files
xinzhao3Tomislav Janjusic
authored andcommitted
ompi/oshmem/spml/ucx: let shmem_finalize to clean up any ctx left
Signed-off-by: Tomislav Janjusic <tomislavj@mellanox.com>
1 parent 289595e commit 9a06000

File tree

1 file changed

+37
-3
lines changed

1 file changed

+37
-3
lines changed

oshmem/mca/spml/ucx/spml_ucx_component.c

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -226,13 +226,47 @@ mca_spml_ucx_component_init(int* priority,
226226

227227
static int mca_spml_ucx_component_fini(void)
228228
{
229+
mca_spml_ucx_ctx_list_item_t *ctx_item, *next;
230+
size_t i, j, nprocs = oshmem_num_procs();
231+
229232
opal_progress_unregister(spml_ucx_progress);
230-
233+
234+
if(!mca_spml_ucx.enabled)
235+
return OSHMEM_SUCCESS; /* never selected.. return success.. */
236+
237+
/* delete context objects from list */
238+
OPAL_LIST_FOREACH_SAFE(ctx_item, next, &(mca_spml_ucx.ctx_list),
239+
mca_spml_ucx_ctx_list_item_t) {
240+
opal_list_remove_item(&(mca_spml_ucx.ctx_list), &ctx_item->super);
241+
242+
opal_common_ucx_del_proc_t *del_procs;
243+
del_procs = malloc(sizeof(*del_procs) * nprocs);
244+
245+
for (i = 0; i < nprocs; ++i) {
246+
for (j = 0; j < MCA_MEMHEAP_SEG_COUNT; j++) {
247+
if (ctx_item->ctx.ucp_peers[i].mkeys[j].key.rkey != NULL) {
248+
ucp_rkey_destroy(ctx_item->ctx.ucp_peers[i].mkeys[j].key.rkey);
249+
}
250+
}
251+
252+
del_procs[i].ep = ctx_item->ctx.ucp_peers[i].ucp_conn;
253+
del_procs[i].vpid = i;
254+
ctx_item->ctx.ucp_peers[i].ucp_conn = NULL;
255+
}
256+
257+
opal_common_ucx_del_procs(del_procs, nprocs, oshmem_my_proc_id(),
258+
mca_spml_ucx.num_disconnect,
259+
ctx_item->ctx.ucp_worker);
260+
free(del_procs);
261+
free(ctx_item->ctx.ucp_peers);
262+
263+
ucp_worker_destroy(ctx_item->ctx.ucp_worker);
264+
OBJ_RELEASE(ctx_item);
265+
}
266+
231267
if (mca_spml_ucx_ctx_default.ucp_worker) {
232268
ucp_worker_destroy(mca_spml_ucx_ctx_default.ucp_worker);
233269
}
234-
if(!mca_spml_ucx.enabled)
235-
return OSHMEM_SUCCESS; /* never selected.. return success.. */
236270

237271
mca_spml_ucx.enabled = false; /* not anymore */
238272

0 commit comments

Comments
 (0)