@@ -144,7 +144,6 @@ opal_common_ucx_wpool_init(opal_common_ucx_wpool_t *wpool,
144
144
return rc ;
145
145
}
146
146
147
- wpool -> cur_ctxid = wpool -> cur_memid = 0 ;
148
147
OBJ_CONSTRUCT (& wpool -> mutex , opal_mutex_t );
149
148
OBJ_CONSTRUCT (& wpool -> tls_list , opal_list_t );
150
149
@@ -400,8 +399,7 @@ opal_common_ucx_wpctx_create(opal_common_ucx_wpool_t *wpool, int comm_size,
400
399
opal_common_ucx_ctx_t * ctx = calloc (1 , sizeof (* ctx ));
401
400
int ret = OPAL_SUCCESS ;
402
401
403
- ctx -> ctx_id = OPAL_ATOMIC_ADD_FETCH32 (& wpool -> cur_ctxid , 1 );
404
- WPOOL_DBG_OUT (_dbg_ctx , "ctx_create: ctx_id = %d\n" , (int )ctx -> ctx_id );
402
+ WPOOL_DBG_OUT (_dbg_ctx , "ctx_create: ctx = %p\n" , (void * )ctx );
405
403
406
404
OBJ_CONSTRUCT (& ctx -> mutex , opal_mutex_t );
407
405
OBJ_CONSTRUCT (& ctx -> tls_workers , opal_list_t );
@@ -553,10 +551,7 @@ int opal_common_ucx_wpmem_create(opal_common_ucx_ctx_t *ctx,
553
551
ucs_status_t status ;
554
552
int ret = OPAL_SUCCESS ;
555
553
556
- mem -> mem_id = OPAL_ATOMIC_ADD_FETCH32 (& ctx -> wpool -> cur_memid , 1 );
557
-
558
- WPOOL_DBG_OUT (_dbg_mem , "ctx = %p, mem_id = %d\n" ,
559
- (void * )ctx , (int )mem -> mem_id );
554
+ WPOOL_DBG_OUT (_dbg_mem , "for ctx = %p\n" , (void * )ctx );
560
555
561
556
mem -> released = 0 ;
562
557
mem -> refcntr = 1 ; /* application holding this memory handler */
@@ -820,7 +815,7 @@ static void _common_ucx_tls_cleanup(_tlocal_table_t *tls)
820
815
// Cleanup memory table
821
816
size = tls -> mem_tbl_size ;
822
817
for (i = 0 ; i < size ; i ++ ) {
823
- if (! tls -> mem_tbl [i ]-> mem_id ){
818
+ if (NULL == tls -> mem_tbl [i ]-> gmem ){
824
819
continue ;
825
820
}
826
821
_tlocal_mem_record_cleanup (tls -> mem_tbl [i ]);
@@ -830,7 +825,7 @@ static void _common_ucx_tls_cleanup(_tlocal_table_t *tls)
830
825
// Cleanup ctx table
831
826
size = tls -> ctx_tbl_size ;
832
827
for (i = 0 ; i < size ; i ++ ) {
833
- if (! tls -> ctx_tbl [i ]-> ctx_id ){
828
+ if (NULL == tls -> ctx_tbl [i ]-> gctx ){
834
829
continue ;
835
830
}
836
831
_tlocal_ctx_record_cleanup (tls -> ctx_tbl [i ]);
@@ -883,23 +878,22 @@ _tlocal_tls_memtbl_extend(_tlocal_table_t *tbl, size_t append)
883
878
884
879
885
880
static inline _tlocal_ctx_t *
886
- _tlocal_ctx_search (_tlocal_table_t * tls , int ctx_id )
881
+ _tlocal_ctx_search (_tlocal_table_t * tls , opal_common_ucx_ctx_t * ctx )
887
882
{
888
883
size_t i ;
889
884
for (i = 0 ; i < tls -> ctx_tbl_size ; i ++ ) {
890
- if ( tls -> ctx_tbl [i ]-> ctx_id == ctx_id ){
885
+ if ( tls -> ctx_tbl [i ]-> gctx == ctx ){
891
886
return tls -> ctx_tbl [i ];
892
887
}
893
888
}
894
- WPOOL_DBG_OUT (_dbg_tls , "tls = %p, ctx_id = %d\n" ,
895
- (void * )tls , (int )ctx_id );
889
+ WPOOL_DBG_OUT (_dbg_tls , "tls = %p, ctx = %p\n" , (void * )tls , (void * )ctx );
896
890
return NULL ;
897
891
}
898
892
899
893
static int
900
894
_tlocal_ctx_record_cleanup (_tlocal_ctx_t * ctx_rec )
901
895
{
902
- if (0 == ctx_rec -> ctx_id ) {
896
+ if (NULL == ctx_rec -> gctx ) {
903
897
return OPAL_SUCCESS ;
904
898
}
905
899
/* Remove myself from the communication context structure
@@ -927,11 +921,13 @@ _tlocal_add_ctx(_tlocal_table_t *tls, opal_common_ucx_ctx_t *ctx)
927
921
/* Try to find available record in the TLS table
928
922
* In parallel perform deferred cleanups */
929
923
for (i = 0 ; i < tls -> ctx_tbl_size ; i ++ ) {
930
- if (tls -> ctx_tbl [i ]-> gctx -> released ) {
931
- /* Found dirty record, need to clean first */
932
- _tlocal_ctx_record_cleanup (tls -> ctx_tbl [i ]);
924
+ if (NULL != tls -> ctx_tbl [i ]-> gctx ) {
925
+ if (tls -> ctx_tbl [i ]-> gctx -> released ) {
926
+ /* Found dirty record, need to clean first */
927
+ _tlocal_ctx_record_cleanup (tls -> ctx_tbl [i ]);
928
+ }
933
929
}
934
- if ((0 == tls -> ctx_tbl [i ]-> ctx_id ) && (0 > free_idx )) {
930
+ if ((NULL != tls -> ctx_tbl [i ]-> gctx ) && (0 > free_idx )) {
935
931
/* Found clean record */
936
932
free_idx = i ;
937
933
}
@@ -947,7 +943,6 @@ _tlocal_add_ctx(_tlocal_table_t *tls, opal_common_ucx_ctx_t *ctx)
947
943
}
948
944
}
949
945
950
- tls -> ctx_tbl [free_idx ]-> ctx_id = ctx -> ctx_id ;
951
946
tls -> ctx_tbl [free_idx ]-> gctx = ctx ;
952
947
tls -> ctx_tbl [free_idx ]-> winfo = _wpool_get_idle (tls -> wpool , ctx -> comm_size );
953
948
if (NULL == tls -> ctx_tbl [free_idx ]-> winfo ) {
@@ -1009,13 +1004,13 @@ static int _tlocal_ctx_connect(_tlocal_ctx_t *ctx_rec, int target)
1009
1004
/* TLS memory management */
1010
1005
1011
1006
static inline _tlocal_mem_t *
1012
- _tlocal_search_mem (_tlocal_table_t * tls , int mem_id )
1007
+ _tlocal_search_mem (_tlocal_table_t * tls , opal_common_ucx_wpmem_t * gmem )
1013
1008
{
1014
1009
size_t i ;
1015
- WPOOL_DBG_OUT (_dbg_tls || _dbg_mem , "tls = %p mem_id = %d \n" ,
1016
- (void * )tls , (int ) mem_id );
1010
+ WPOOL_DBG_OUT (_dbg_tls || _dbg_mem , "tls = %p mem = %p \n" ,
1011
+ (void * )tls , (void * ) gmem );
1017
1012
for (i = 0 ; i < tls -> mem_tbl_size ; i ++ ) {
1018
- if ( tls -> mem_tbl [i ]-> mem_id == mem_id ){
1013
+ if ( tls -> mem_tbl [i ]-> gmem == gmem ){
1019
1014
return tls -> mem_tbl [i ];
1020
1015
}
1021
1016
}
@@ -1066,12 +1061,14 @@ static _tlocal_mem_t *_tlocal_add_mem(_tlocal_table_t *tls,
1066
1061
1067
1062
/* Try to find available spot in the table */
1068
1063
for (i = 0 ; i < tls -> mem_tbl_size ; i ++ ) {
1069
- if (tls -> mem_tbl [i ]-> gmem -> released ) {
1070
- /* Found a dirty record. Need to clean it first */
1071
- _tlocal_mem_record_cleanup (tls -> mem_tbl [i ]);
1072
- break ;
1064
+ if (NULL == tls -> mem_tbl [i ]-> gmem ) {
1065
+ if (tls -> mem_tbl [i ]-> gmem -> released ) {
1066
+ /* Found a dirty record. Need to clean it first */
1067
+ _tlocal_mem_record_cleanup (tls -> mem_tbl [i ]);
1068
+ break ;
1069
+ }
1073
1070
}
1074
- if ((0 == tls -> mem_tbl [i ]-> mem_id ) && (0 > free_idx )) {
1071
+ if ((NULL == tls -> mem_tbl [i ]-> gmem ) && (0 > free_idx )) {
1075
1072
/* Found a clear record */
1076
1073
free_idx = i ;
1077
1074
}
@@ -1086,17 +1083,17 @@ static _tlocal_mem_t *_tlocal_add_mem(_tlocal_table_t *tls,
1086
1083
}
1087
1084
WPOOL_DBG_OUT (_dbg_tls || _dbg_mem , "tls = %p\n" , (void * )tls );
1088
1085
}
1089
- tls -> mem_tbl [ free_idx ] -> mem_id = mem -> mem_id ;
1086
+
1090
1087
tls -> mem_tbl [free_idx ]-> gmem = mem ;
1091
1088
tls -> mem_tbl [free_idx ]-> mem = calloc (1 , sizeof (* tls -> mem_tbl [free_idx ]-> mem ));
1092
1089
1093
- ctx_rec = _tlocal_ctx_search (tls , mem -> ctx -> ctx_id );
1090
+ ctx_rec = _tlocal_ctx_search (tls , mem -> ctx );
1094
1091
if (NULL == ctx_rec ) {
1095
1092
// TODO: act accordingly - cleanup
1096
1093
return NULL ;
1097
1094
}
1098
- WPOOL_DBG_OUT ("tls = %p, ctx_id = %d \n" ,
1099
- (void * )tls , (int )mem -> ctx -> ctx_id );
1095
+ WPOOL_DBG_OUT ("tls = %p, ctx = %p \n" ,
1096
+ (void * )tls , (void * )mem -> ctx );
1100
1097
1101
1098
tls -> mem_tbl [free_idx ]-> mem -> worker = ctx_rec -> winfo ;
1102
1099
tls -> mem_tbl [free_idx ]-> mem -> rkeys = calloc (mem -> ctx -> comm_size ,
@@ -1162,10 +1159,10 @@ opal_common_ucx_tlocal_fetch_spath(opal_common_ucx_wpmem_t *mem, int target)
1162
1159
WPOOL_DBG_OUT (_dbg_tls || _dbg_mem , "tls = %p\n" ,(void * )tls );
1163
1160
1164
1161
/* Obtain the worker structure */
1165
- ctx_rec = _tlocal_ctx_search (tls , mem -> ctx -> ctx_id );
1162
+ ctx_rec = _tlocal_ctx_search (tls , mem -> ctx );
1166
1163
1167
- WPOOL_DBG_OUT (_dbg_tls || _dbg_mem , "ctx_id = %d , ctx_rec=%p\n" ,
1168
- (int )mem -> ctx -> ctx_id , (void * )ctx_rec );
1164
+ WPOOL_DBG_OUT (_dbg_tls || _dbg_mem , "ctx_id = %p , ctx_rec=%p\n" ,
1165
+ (void * )mem -> ctx , (void * )ctx_rec );
1169
1166
if (OPAL_UNLIKELY (NULL == ctx_rec )) {
1170
1167
ctx_rec = _tlocal_add_ctx (tls , mem -> ctx );
1171
1168
if (NULL == ctx_rec ) {
@@ -1191,9 +1188,9 @@ opal_common_ucx_tlocal_fetch_spath(opal_common_ucx_wpmem_t *mem, int target)
1191
1188
WPOOL_DBG_OUT (_dbg_tls || _dbg_mem , "ep = %p\n" , (void * )ep );
1192
1189
1193
1190
/* Obtain the memory region info */
1194
- mem_rec = _tlocal_search_mem (tls , mem -> mem_id );
1195
- WPOOL_DBG_OUT (_dbg_tls || _dbg_mem , "tls = %p mem_rec = %p mem_id = %d \n" ,
1196
- (void * )tls , (void * )mem_rec , (int )mem -> mem_id );
1191
+ mem_rec = _tlocal_search_mem (tls , mem );
1192
+ WPOOL_DBG_OUT (_dbg_tls || _dbg_mem , "tls = %p mem_rec = %p mem_id = %p \n" ,
1193
+ (void * )tls , (void * )mem_rec , (void * )mem );
1197
1194
if (OPAL_UNLIKELY (mem_rec == NULL )) {
1198
1195
mem_rec = _tlocal_add_mem (tls , mem );
1199
1196
WPOOL_DBG_OUT (_dbg_tls || _dbg_mem , "tls = %p mem = %p\n" ,
0 commit comments