Skip to content

Commit 73a0b43

Browse files
hjelmnkingshuk00
authored andcommitted
Modify PERUSE code to implement MPI_T Events based on MPI 4.0 proposal.
Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov> Signed-off-by: Kingshuk Haldar <kingshuk.haldar@hlrs.de>
1 parent 3d4c7d4 commit 73a0b43

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+2156
-273
lines changed

ompi/include/mpi.h.in

Lines changed: 13 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -454,8 +454,8 @@ typedef struct ompi_mpit_cvar_handle_t *MPI_T_cvar_handle;
454454
typedef struct mca_base_pvar_handle_t *MPI_T_pvar_handle;
455455
typedef struct mca_base_pvar_session_t *MPI_T_pvar_session;
456456
typedef struct ompi_instance_t *MPI_Session;
457-
typedef unsigned long *MPI_T_event_instance;
458-
typedef unsigned long *MPI_T_event_registration;
457+
typedef struct mca_base_raised_event_t *MPI_T_event_instance;
458+
typedef struct mca_base_event_registration_t *MPI_T_event_registration;
459459

460460
/*
461461
* MPI_Status
@@ -917,39 +917,32 @@ enum {
917917

918918
/*
919919
* MPIT callback safety levels
920-
*
921-
* Values are set in configure.ac for consistency with mca_base_event.h
922920
*/
923-
#undef OPAL_MCA_BASE_CB_REQUIRE_NONE
924-
#undef OPAL_MCA_BASE_CB_REQUIRE_MPI_RESTRICTED
925-
#undef OPAL_MCA_BASE_CB_REQUIRE_THREAD_SAFE
926-
#undef OPAL_MCA_BASE_CB_REQUIRE_ASYNC_SIGNAL_SAFE
927921
typedef enum {
928-
MPI_T_CB_REQUIRE_NONE = OPAL_MCA_BASE_CB_REQUIRE_NONE,
929-
MPI_T_CB_REQUIRE_MPI_RESTRICTED = OPAL_MCA_BASE_CB_REQUIRE_MPI_RESTRICTED,
930-
MPI_T_CB_REQUIRE_THREAD_SAFE = OPAL_MCA_BASE_CB_REQUIRE_THREAD_SAFE,
931-
MPI_T_CB_REQUIRE_ASYNC_SIGNAL_SAFE = OPAL_MCA_BASE_CB_REQUIRE_ASYNC_SIGNAL_SAFE
922+
MPI_T_CB_REQUIRE_NONE,
923+
MPI_T_CB_REQUIRE_MPI_RESTRICTED,
924+
MPI_T_CB_REQUIRE_THREAD_SAFE,
925+
MPI_T_CB_REQUIRE_ASYNC_SIGNAL_SAFE
932926
} MPI_T_cb_safety;
933927

934928
/*
935929
* MPIT source ordering
936930
*/
937-
enum ompi_mpi_t_source_order_t {
931+
enum ompi_mpi_t_order_t {
938932
MPI_T_ORDERED,
939933
MPI_T_UNORDERED,
940934
};
941935

942-
typedef enum ompi_mpi_t_source_order_t MPI_T_source_order;
936+
typedef enum ompi_mpi_t_order_t MPI_T_order;
943937

944938
/*
945939
* MPI Tool event functions
946940
*/
947941
typedef void (*MPI_T_event_free_cb_function) (MPI_T_event_registration handle,
948942
MPI_T_cb_safety cb_safety,
949943
void *user_data);
950-
typedef void (*MPI_T_event_dropped_cb_function) (MPI_Count count,
944+
typedef void (*MPI_T_event_dropped_cb_function) (int count,
951945
MPI_T_event_registration handle,
952-
int source_index,
953946
MPI_T_cb_safety cb_safety,
954947
void *user_data);
955948
typedef void (*MPI_T_event_cb_function) (MPI_T_event_instance event,
@@ -3007,7 +3000,7 @@ OMPI_DECLSPEC int PMPI_T_event_get_num (int *num_events);
30073000
OMPI_DECLSPEC int PMPI_T_event_get_info (int event_index, char *name, int *name_len,
30083001
int *verbosity, MPI_Datatype *array_of_datatypes,
30093002
MPI_Aint *array_of_displacements, int *num_elements,
3010-
MPI_T_enum *enumtype, MPI_Info *info,
3003+
MPI_Aint *extent, MPI_T_enum *enumtype, MPI_Info *info,
30113004
char *desc, int *desc_len, int *bind);
30123005
OMPI_DECLSPEC int PMPI_T_event_get_index (const char *name, int *event_index);
30133006
OMPI_DECLSPEC int PMPI_T_event_handle_alloc (int event_index, void *obj_handle,
@@ -3023,7 +3016,6 @@ OMPI_DECLSPEC int PMPI_T_event_callback_set_info (MPI_T_event_registration even
30233016
OMPI_DECLSPEC int PMPI_T_event_callback_get_info (MPI_T_event_registration event_registration,
30243017
MPI_T_cb_safety cb_safety, MPI_Info *info_used);
30253018
OMPI_DECLSPEC int PMPI_T_event_handle_free (MPI_T_event_registration event_registration,
3026-
void *user_data,
30273019
MPI_T_event_free_cb_function free_cb_function);
30283020
OMPI_DECLSPEC int PMPI_T_event_set_dropped_handler (MPI_T_event_registration handle,
30293021
MPI_T_event_dropped_cb_function dropped_cb_function);
@@ -3033,7 +3025,7 @@ OMPI_DECLSPEC int PMPI_T_event_get_timestamp (MPI_T_event_instance event, MPI_C
30333025
OMPI_DECLSPEC int PMPI_T_event_get_source (MPI_T_event_instance event, int *source_index);
30343026
OMPI_DECLSPEC int PMPI_T_source_get_num (int *num_source);
30353027
OMPI_DECLSPEC int PMPI_T_source_get_info (int source_id, char *name, int *name_len,
3036-
char *desc, int *desc_len, MPI_T_source_order *ordering,
3028+
char *desc, int *desc_len, MPI_T_order *ordering,
30373029
MPI_Count *ticks_per_second, MPI_Count *max_timestamp,
30383030
MPI_Info *info);
30393031
OMPI_DECLSPEC int PMPI_T_source_get_timestamp (int source_id, MPI_Count *timestamp);
@@ -3121,7 +3113,7 @@ OMPI_DECLSPEC int MPI_T_event_get_num (int *num_events);
31213113
OMPI_DECLSPEC int MPI_T_event_get_info (int event_index, char *name, int *name_len,
31223114
int *verbosity, MPI_Datatype *array_of_datatypes,
31233115
MPI_Aint *array_of_displacements, int *num_elements,
3124-
MPI_T_enum *enumtype, MPI_Info *info,
3116+
MPI_Aint *extent, MPI_T_enum *enumtype, MPI_Info *info,
31253117
char *desc, int *desc_len, int *bind);
31263118
OMPI_DECLSPEC int MPI_T_event_get_index (const char *name, int *event_index);
31273119
OMPI_DECLSPEC int MPI_T_event_handle_alloc (int event_index, void *obj_handle,
@@ -3130,7 +3122,6 @@ OMPI_DECLSPEC int MPI_T_event_handle_set_info (MPI_T_event_registration event_r
31303122
OMPI_DECLSPEC int MPI_T_event_handle_get_info (MPI_T_event_registration event_registration,
31313123
MPI_Info *info_used);
31323124
OMPI_DECLSPEC int MPI_T_event_handle_free (MPI_T_event_registration event_registration,
3133-
void *user_data,
31343125
MPI_T_event_free_cb_function free_cb_function);
31353126
OMPI_DECLSPEC int MPI_T_event_register_callback (MPI_T_event_registration event_registration,
31363127
MPI_T_cb_safety cb_safety, MPI_Info info, void *user_data,
@@ -3148,7 +3139,7 @@ OMPI_DECLSPEC int MPI_T_event_get_source (MPI_T_event_instance event, int *sour
31483139

31493140
OMPI_DECLSPEC int MPI_T_source_get_num (int *num_source);
31503141
OMPI_DECLSPEC int MPI_T_source_get_info (int source_id, char *name, int *name_len,
3151-
char *desc, int *desc_len, MPI_T_source_order *ordering,
3142+
char *desc, int *desc_len, MPI_T_order *ordering,
31523143
MPI_Count *ticks_per_second, MPI_Count *max_timestamp,
31533144
MPI_Info *info);
31543145
OMPI_DECLSPEC int MPI_T_source_get_timestamp (int source_id, MPI_Count *timestamp);

ompi/mca/osc/rdma/osc_rdma.h

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,34 @@
5757
#include "osc_rdma_peer.h"
5858

5959
#include "opal_stdint.h"
60+
#include "opal/mca/base/mca_base_event.h"
61+
62+
enum {
63+
OMPI_OSC_RDMA_EVENT_LOCK_ACQUIRED,
64+
OMPI_OSC_RDMA_EVENT_LOCK_RELEASED,
65+
OMPI_OSC_RDMA_EVENT_PUT_STARTED,
66+
OMPI_OSC_RDMA_EVENT_PUT_COMPLETE,
67+
OMPI_OSC_RDMA_EVENT_GET_STARTED,
68+
OMPI_OSC_RDMA_EVENT_GET_COMPLETE,
69+
OMPI_OSC_RDMA_EVENT_FLUSH_STARTED,
70+
OMPI_OSC_RDMA_EVENT_FLUSH_COMPLETE,
71+
OMPI_OSC_RDMA_EVENT_PSCW_EXPOSE_START,
72+
OMPI_OSC_RDMA_EVENT_PSCW_EXPOSE_COMPLETE,
73+
OMPI_OSC_RDMA_EVENT_PSCW_ACCESS_START,
74+
OMPI_OSC_RDMA_EVENT_PSCW_ACCESS_COMPLETE,
75+
OMPI_OSC_RDMA_EVENT_FENCE,
76+
OMPI_OSC_RDMA_EVENT_MAX,
77+
};
78+
79+
struct mca_osc_rdma_rdma_event_t {
80+
int target;
81+
uint64_t address;
82+
uint64_t size;
83+
};
84+
85+
typedef struct mca_osc_rdma_rdma_event_t mca_osc_rdma_rdma_event_t;
86+
87+
extern mca_base_event_list_item_t mca_osc_rdma_events[];
6088

6189
#define RANK_ARRAY_COUNT(module) ((ompi_comm_size ((module)->comm) + (module)->node_count - 1) / (module)->node_count)
6290

ompi/mca/osc/rdma/osc_rdma_active_target.c

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,8 @@ static void ompi_osc_rdma_handle_post (ompi_osc_rdma_module_t *module, int rank,
182182
rank, (int) (npeers - state->num_post_msgs - 1));
183183
/* an atomic is not really necessary as this function is currently used but it doesn't hurt */
184184
ompi_osc_rdma_counter_add (&state->num_post_msgs, 1);
185+
mca_base_event_raise(mca_osc_rdma_events[OMPI_OSC_RDMA_EVENT_PSCW_ACCESS_START].event, MCA_BASE_CB_REQUIRE_ASYNC_SIGNAL_SAFE,
186+
module->win, NULL, &rank);
185187
return;
186188
}
187189
}
@@ -307,6 +309,9 @@ int ompi_osc_rdma_post_atomic (ompi_group_t *group, int mpi_assert, ompi_win_t *
307309
return OMPI_SUCCESS;
308310
}
309311

312+
mca_base_event_raise(mca_osc_rdma_events[OMPI_OSC_RDMA_EVENT_PSCW_EXPOSE_START].event, MCA_BASE_CB_REQUIRE_ASYNC_SIGNAL_SAFE,
313+
module->win, NULL, NULL);
314+
310315
/* translate group ranks into the communicator */
311316
peers = ompi_osc_rdma_get_peers (module, module->pw_group);
312317
if (OPAL_UNLIKELY(NULL == peers)) {
@@ -394,6 +399,8 @@ int ompi_osc_rdma_start_atomic (ompi_group_t *group, int mpi_assert, ompi_win_t
394399
"from %d processes", peer->rank, (int) (group_size - state->num_post_msgs - 1));
395400
opal_list_remove_item (&module->pending_posts, &pending_post->super);
396401
OBJ_RELEASE(pending_post);
402+
mca_base_event_raise(mca_osc_rdma_events[OMPI_OSC_RDMA_EVENT_PSCW_ACCESS_START].event, MCA_BASE_CB_REQUIRE_ASYNC_SIGNAL_SAFE,
403+
module->win, NULL, &peer->rank);
397404
ompi_osc_rdma_counter_add (&state->num_post_msgs, 1);
398405
break;
399406
}
@@ -464,6 +471,9 @@ int ompi_osc_rdma_complete_atomic (ompi_win_t *win)
464471
ompi_osc_rdma_peer_t *peer = peers[i];
465472
intptr_t target = (intptr_t) peer->state + offsetof (ompi_osc_rdma_state_t, num_complete_msgs);
466473

474+
mca_base_event_raise(mca_osc_rdma_events[OMPI_OSC_RDMA_EVENT_PSCW_ACCESS_COMPLETE].event, MCA_BASE_CB_REQUIRE_ASYNC_SIGNAL_SAFE,
475+
module->win, NULL, &peer->rank);
476+
467477
if (!ompi_osc_rdma_peer_local_state (peer)) {
468478
ret = ompi_osc_rdma_lock_btl_op (module, peer, target, MCA_BTL_ATOMIC_ADD, 1, true);
469479
assert (OMPI_SUCCESS == ret);
@@ -507,6 +517,9 @@ int ompi_osc_rdma_wait_atomic (ompi_win_t *win)
507517
opal_atomic_mb ();
508518
}
509519

520+
mca_base_event_raise(mca_osc_rdma_events[OMPI_OSC_RDMA_EVENT_PSCW_EXPOSE_COMPLETE].event, MCA_BASE_CB_REQUIRE_ASYNC_SIGNAL_SAFE,
521+
module->win, NULL, NULL);
522+
510523
OPAL_THREAD_LOCK(&module->lock);
511524
group = module->pw_group;
512525
module->pw_group = NULL;
@@ -556,6 +569,9 @@ int ompi_osc_rdma_test_atomic (ompi_win_t *win, int *flag)
556569
module->pw_group = NULL;
557570
OPAL_THREAD_UNLOCK(&(module->lock));
558571

572+
mca_base_event_raise(mca_osc_rdma_events[OMPI_OSC_RDMA_EVENT_PSCW_EXPOSE_COMPLETE].event, MCA_BASE_CB_REQUIRE_ASYNC_SIGNAL_SAFE,
573+
module->win, NULL, NULL);
574+
559575
OBJ_RELEASE(group);
560576

561577
OSC_RDMA_VERBOSE(MCA_BASE_VERBOSE_TRACE, "test complete. returning flag: true");

ompi/mca/osc/rdma/osc_rdma_comm.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,7 @@
1515
* $HEADER$
1616
*/
1717

18-
#include "ompi_config.h"
19-
18+
#include "osc_rdma.h"
2019
#include "osc_rdma_comm.h"
2120
#include "osc_rdma_frag.h"
2221
#include "osc_rdma_sync.h"
@@ -461,6 +460,9 @@ static int ompi_osc_rdma_put_real (ompi_osc_rdma_sync_t *sync, ompi_osc_rdma_pee
461460
OSC_RDMA_VERBOSE(MCA_BASE_VERBOSE_TRACE, "initiating btl put of %lu bytes to remote address %" PRIx64 ", sync "
462461
"object %p...", (unsigned long) size, target_address, (void *) sync);
463462

463+
mca_base_event_raise(mca_osc_rdma_events[OMPI_OSC_RDMA_EVENT_PUT_STARTED].event, MCA_BASE_CB_REQUIRE_ASYNC_SIGNAL_SAFE,
464+
module->win, NULL, &((mca_osc_rdma_rdma_event_t){.target = peer->rank, .address = target_address, .size = size}));
465+
464466
/* flag outstanding rma requests */
465467
ompi_osc_rdma_sync_rdma_inc (sync);
466468

@@ -725,6 +727,9 @@ static int ompi_osc_rdma_get_contig (ompi_osc_rdma_sync_t *sync, ompi_osc_rdma_p
725727
ompi_osc_rdma_sync_rdma_inc (sync);
726728
}
727729

730+
mca_base_event_raise(mca_osc_rdma_events[OMPI_OSC_RDMA_EVENT_GET_STARTED].event, MCA_BASE_CB_REQUIRE_ASYNC_SIGNAL_SAFE,
731+
module->win, NULL, &((mca_osc_rdma_rdma_event_t){.target = peer->rank, .address = source_address, .size = size}));
732+
728733
do {
729734
ret = ompi_osc_rdma_btl_get(module, peer->data_btl_index, peer->data_endpoint,
730735
ptr, aligned_source_base, local_handle, source_handle,

ompi/mca/osc/rdma/osc_rdma_component.c

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,87 @@ static const char* ompi_osc_rdma_set_no_lock_info(opal_infosubscriber_t *obj, co
8585

8686
static char *ompi_osc_rdma_full_connectivity_btls;
8787

88+
static char *mca_osc_rdma_target_element[] = {
89+
"target", NULL,
90+
};
91+
92+
static opal_datatype_t *mca_osc_rdma_rdma_event_types[] = {
93+
&ompi_mpi_int.dt.super, &ompi_mpi_int64_t.dt.super, &ompi_mpi_int64_t.dt.super,
94+
};
95+
96+
static char *mca_osc_rdma_rdma_event_elements[] = {
97+
"target", "address", "size_bytes", NULL,
98+
};
99+
100+
static unsigned long mca_osc_rdma_rdma_event_offsets[] = {
101+
offsetof (mca_osc_rdma_rdma_event_t, target), offsetof (mca_osc_rdma_rdma_event_t, address),
102+
offsetof (mca_osc_rdma_rdma_event_t, size),
103+
};
104+
105+
mca_base_event_list_item_t mca_osc_rdma_events[] = {
106+
[OMPI_OSC_RDMA_EVENT_LOCK_ACQUIRED] = {.name = "lock_acquired", .desc = "Passive-target lock aquired",
107+
.verbosity = OPAL_INFO_LVL_5, .datatypes = &(opal_datatype_t *) {&ompi_mpi_int.dt.super},
108+
.offsets = &(unsigned long) {0}, .num_datatypes = 1, .elements = mca_osc_rdma_target_element,
109+
.extent = sizeof (int), .bind = MCA_BASE_VAR_BIND_MPI_WIN},
110+
111+
[OMPI_OSC_RDMA_EVENT_LOCK_RELEASED] = {.name = "lock_released", .desc = "Passive-target lock required",
112+
.verbosity = OPAL_INFO_LVL_5, .datatypes = &(opal_datatype_t *) {&ompi_mpi_int.dt.super},
113+
.offsets = &(unsigned long) {0}, .num_datatypes = 1, .elements = mca_osc_rdma_target_element,
114+
.extent = sizeof (int), .bind = MCA_BASE_VAR_BIND_MPI_WIN},
115+
116+
[OMPI_OSC_RDMA_EVENT_PUT_STARTED] = {.name = "put_started", .desc = "Put started to target. Complete event may not exist.",
117+
.verbosity = OPAL_INFO_LVL_5, .datatypes = mca_osc_rdma_rdma_event_types,
118+
.offsets = mca_osc_rdma_rdma_event_offsets, .num_datatypes = 3,
119+
.elements = mca_osc_rdma_rdma_event_elements, .extent = 24, .bind = MCA_BASE_VAR_BIND_MPI_WIN},
120+
121+
[OMPI_OSC_RDMA_EVENT_PUT_COMPLETE] = {.name = "put_complete", .desc = "Put completed on target",
122+
.verbosity = OPAL_INFO_LVL_5, .datatypes = mca_osc_rdma_rdma_event_types,
123+
.offsets = mca_osc_rdma_rdma_event_offsets, .num_datatypes = 3,
124+
.elements = mca_osc_rdma_rdma_event_elements, .extent = 24, .bind = MCA_BASE_VAR_BIND_MPI_WIN},
125+
126+
[OMPI_OSC_RDMA_EVENT_GET_STARTED] = {.name = "get_started", .desc = "Put started to target. Complete event may not exist.",
127+
.verbosity = OPAL_INFO_LVL_5, .datatypes = mca_osc_rdma_rdma_event_types,
128+
.offsets = mca_osc_rdma_rdma_event_offsets, .num_datatypes = 3,
129+
.elements = mca_osc_rdma_rdma_event_elements, .extent = 24, .bind = MCA_BASE_VAR_BIND_MPI_WIN},
130+
131+
[OMPI_OSC_RDMA_EVENT_GET_COMPLETE] = {.name = "get_complete", .desc = "Put completed on target",
132+
.verbosity = OPAL_INFO_LVL_5, .datatypes = mca_osc_rdma_rdma_event_types,
133+
.offsets = mca_osc_rdma_rdma_event_offsets, .num_datatypes = 3,
134+
.elements = mca_osc_rdma_rdma_event_elements, .extent = 24, .bind = MCA_BASE_VAR_BIND_MPI_WIN},
135+
136+
[OMPI_OSC_RDMA_EVENT_FLUSH_STARTED] = {.name = "flush_started", .desc = "Flush started on target",
137+
.verbosity = OPAL_INFO_LVL_5, .datatypes = &(opal_datatype_t *) {&ompi_mpi_int.dt.super},
138+
.offsets = &(unsigned long) {0}, .num_datatypes = 1, .elements = mca_osc_rdma_target_element,
139+
.extent = sizeof (int), .bind = MCA_BASE_VAR_BIND_MPI_WIN},
140+
141+
[OMPI_OSC_RDMA_EVENT_FLUSH_COMPLETE] = {.name = "flush_complete", .desc = "Flush complete on target",
142+
.verbosity = OPAL_INFO_LVL_5, .datatypes = &(opal_datatype_t *) {&ompi_mpi_int.dt.super},
143+
.offsets = &(unsigned long) {0}, .num_datatypes = 1, .elements = mca_osc_rdma_target_element,
144+
.extent = sizeof (int), .bind = MCA_BASE_VAR_BIND_MPI_WIN},
145+
146+
[OMPI_OSC_RDMA_EVENT_PSCW_EXPOSE_START] = {.name = "pscw_expose_start", .desc = "PSWW exposure started",
147+
.verbosity = OPAL_INFO_LVL_5, .datatypes = &(opal_datatype_t *) {&ompi_mpi_int.dt.super},
148+
.offsets = &(unsigned long) {0}, .num_datatypes = 0, .elements = mca_osc_rdma_target_element,
149+
.extent = sizeof (int), .bind = MCA_BASE_VAR_BIND_MPI_WIN},
150+
151+
[OMPI_OSC_RDMA_EVENT_PSCW_EXPOSE_COMPLETE] = {.name = "pscw_expose_complete", .desc = "PSWW exposure complete",
152+
.verbosity = OPAL_INFO_LVL_5, .datatypes = &(opal_datatype_t *) {&ompi_mpi_int.dt.super},
153+
.offsets = &(unsigned long) {0}, .num_datatypes = 0, .elements = mca_osc_rdma_target_element,
154+
.extent = sizeof (int), .bind = MCA_BASE_VAR_BIND_MPI_WIN},
155+
156+
[OMPI_OSC_RDMA_EVENT_PSCW_ACCESS_START] = {.name = "pscw_access_start", .desc = "PSWW access epoch started",
157+
.verbosity = OPAL_INFO_LVL_5, .datatypes = &(opal_datatype_t *) {&ompi_mpi_int.dt.super},
158+
.offsets = &(unsigned long) {0}, .num_datatypes = 1, .elements = mca_osc_rdma_target_element,
159+
.extent = sizeof (int), .bind = MCA_BASE_VAR_BIND_MPI_WIN},
160+
161+
[OMPI_OSC_RDMA_EVENT_PSCW_ACCESS_COMPLETE] = {.name = "pscw_access_complete", .desc = "PSWW access epoch complete",
162+
.verbosity = OPAL_INFO_LVL_5, .datatypes = &(opal_datatype_t *) {&ompi_mpi_int.dt.super},
163+
.offsets = &(unsigned long) {0}, .num_datatypes = 1, .elements = mca_osc_rdma_target_element,
164+
.extent = sizeof (int), .bind = MCA_BASE_VAR_BIND_MPI_WIN},
165+
166+
[OMPI_OSC_RDMA_EVENT_FENCE] = {.name = "fence", .desc = "Fence called", .verbosity = OPAL_INFO_LVL_5, .bind = MCA_BASE_VAR_BIND_MPI_WIN},
167+
};
168+
88169
static const mca_base_var_enum_value_t ompi_osc_rdma_locking_modes[] = {
89170
{.value = OMPI_OSC_RDMA_LOCKING_TWO_LEVEL, .string = "two_level"},
90171
{.value = OMPI_OSC_RDMA_LOCKING_ON_DEMAND, .string = "on_demand"},
@@ -305,6 +386,8 @@ static int ompi_osc_rdma_component_register (void)
305386
ompi_osc_rdma_pvar_read, NULL, NULL,
306387
(void *) (intptr_t) offsetof (ompi_osc_rdma_module_t, get_retry_count));
307388

389+
mca_base_component_event_register_list (&mca_osc_rdma_component.super.osc_version, mca_osc_rdma_events, OMPI_OSC_RDMA_EVENT_MAX);
390+
308391
return OMPI_SUCCESS;
309392
}
310393

0 commit comments

Comments
 (0)