Skip to content

Commit 315d79d

Browse files
committed
Update hook component to use enum MCA parameter
* `--mca ompi_comm_method VALUE` where `VALUE` is one or more of: - `mpi_init` : Display during `MPI_Init` - `mpi_finalize` : Display during `MPI_Finalize` * hook/comm_method: Use enum flags to select protocols Signed-off-by: Joshua Hursey <[email protected]>
1 parent d489030 commit 315d79d

File tree

1 file changed

+48
-37
lines changed

1 file changed

+48
-37
lines changed

ompi/mca/hook/comm_method/hook_comm_method_component.c

Lines changed: 48 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -66,14 +66,33 @@ const ompi_hook_base_component_1_0_0_t mca_hook_comm_method_component = {
6666
.hookm_mpi_finalize_bottom = NULL,
6767
};
6868

69+
enum mca_hook_comm_method_mode_flags_t {
70+
/* Default: Display nothing */
71+
OMPI_HOOK_COMM_METHOD_NONE = 0x01,
72+
/* Display on MPI_INIT */
73+
OMPI_HOOK_COMM_METHOD_INIT = 0x02,
74+
/* Display on MPI_FINALIZE */
75+
OMPI_HOOK_COMM_METHOD_FINALIZE = 0x04,
76+
};
77+
6978
int mca_hook_comm_method_verbose = 0;
7079
int mca_hook_comm_method_output = -1;
7180
bool mca_hook_comm_method_enable_mpi_init = false;
7281
bool mca_hook_comm_method_enable_mpi_finalize = false;
82+
uint32_t mca_hook_comm_method_enabled_flags = OMPI_HOOK_COMM_METHOD_NONE;
7383
int mca_hook_comm_method_max = 12;
7484
int mca_hook_comm_method_brief = 0;
7585
char *mca_hook_comm_method_fakefile = NULL;
7686

87+
static mca_base_var_enum_value_flag_t mca_hook_comm_method_modes[] = {
88+
{.flag = OMPI_HOOK_COMM_METHOD_NONE, .string = "none",
89+
.conflicting_flag = OMPI_HOOK_COMM_METHOD_INIT | OMPI_HOOK_COMM_METHOD_FINALIZE},
90+
{.flag = OMPI_HOOK_COMM_METHOD_INIT, .string = "mpi_init"},
91+
{.flag = OMPI_HOOK_COMM_METHOD_FINALIZE, .string = "mpi_finalize"},
92+
{0, NULL, 0}
93+
};
94+
95+
7796
static int ompi_hook_comm_method_component_open(void)
7897
{
7998
// Nothing to do
@@ -88,6 +107,8 @@ static int ompi_hook_comm_method_component_close(void)
88107

89108
static int ompi_hook_comm_method_component_register(void)
90109
{
110+
int ret;
111+
mca_base_var_enum_flag_t *mca_hook_comm_method_flags = NULL;
91112

92113
/*
93114
* Component verbosity level
@@ -111,63 +132,53 @@ static int ompi_hook_comm_method_component_register(void)
111132
opal_output_set_verbosity(mca_hook_comm_method_output, mca_hook_comm_method_verbose);
112133

113134
/*
114-
* If the component is active for mpi_init / mpi_finalize
135+
* If the component is active for mpi_init / mpi_finalize via 'ompi_comm_method'
115136
*/
116137
mca_hook_comm_method_enable_mpi_init = false;
117-
(void) mca_base_component_var_register(&mca_hook_comm_method_component.hookm_version, "enable_mpi_init",
118-
"Enable comm_method behavior on mpi_init",
119-
MCA_BASE_VAR_TYPE_BOOL, NULL,
120-
0, 0,
121-
OPAL_INFO_LVL_3,
122-
MCA_BASE_VAR_SCOPE_READONLY,
123-
&mca_hook_comm_method_enable_mpi_init);
124-
125138
mca_hook_comm_method_enable_mpi_finalize = false;
126-
(void) mca_base_component_var_register(&mca_hook_comm_method_component.hookm_version, "enable_mpi_finalize",
127-
"Enable comm_method behavior on mpi_finalize",
128-
MCA_BASE_VAR_TYPE_BOOL, NULL,
129-
0, 0,
130-
OPAL_INFO_LVL_3,
131-
MCA_BASE_VAR_SCOPE_READONLY,
132-
&mca_hook_comm_method_enable_mpi_finalize);
133-
134-
// User can set the comm_method mca variable too
135-
int hook_comm_method = -1;
136-
(void) mca_base_var_register("ompi", NULL, NULL, "comm_method",
137-
"Enable comm_method behavior (1) mpi_init or (2) mpi_finalize",
138-
MCA_BASE_VAR_TYPE_INT, NULL,
139-
0, 0,
140-
OPAL_INFO_LVL_3,
141-
MCA_BASE_VAR_SCOPE_READONLY,
142-
&hook_comm_method);
143-
144-
if( 1 == hook_comm_method ) {
145-
mca_hook_comm_method_enable_mpi_init = true;
139+
mca_base_var_enum_create_flag("ompi_comm_method", mca_hook_comm_method_modes, &mca_hook_comm_method_flags);
140+
141+
ret = mca_base_var_register("ompi", "ompi", NULL, "comm_method",
142+
"Enable the communication protocol report: when MPI_INIT is invoked (using the 'mpi_init' value) and/or when MPI_FINALIZE is invoked (using the 'mpi_finalize' value).",
143+
MCA_BASE_VAR_TYPE_UNSIGNED_INT,
144+
&mca_hook_comm_method_flags->super,
145+
0, 0,
146+
OPAL_INFO_LVL_3,
147+
MCA_BASE_VAR_SCOPE_READONLY,
148+
&mca_hook_comm_method_enabled_flags);
149+
OBJ_RELEASE(mca_hook_comm_method_flags);
150+
if(OPAL_ERR_VALUE_OUT_OF_BOUNDS == ret) {
151+
opal_output(0, "hook:comm_method: Warning invalid comm_method specified.");
146152
}
147-
else if( 2 == hook_comm_method ) {
148-
mca_hook_comm_method_enable_mpi_finalize = true;
153+
else {
154+
if( mca_hook_comm_method_enabled_flags & OMPI_HOOK_COMM_METHOD_INIT ) {
155+
mca_hook_comm_method_enable_mpi_init = true;
156+
}
157+
if( mca_hook_comm_method_enabled_flags & OMPI_HOOK_COMM_METHOD_FINALIZE ) {
158+
mca_hook_comm_method_enable_mpi_finalize = true;
159+
}
149160
}
150161

151-
// comm_method_max
152-
(void) mca_base_var_register("ompi", NULL, NULL, "comm_method_max",
162+
// hook_comm_method_max
163+
(void) mca_base_component_var_register(&mca_hook_comm_method_component.hookm_version, "max",
153164
"Number of hosts for which to print unabbreviated 2d table of comm methods.",
154165
MCA_BASE_VAR_TYPE_INT, NULL,
155166
0, 0,
156167
OPAL_INFO_LVL_3,
157168
MCA_BASE_VAR_SCOPE_READONLY,
158169
&mca_hook_comm_method_max);
159-
// comm_method_brief
160-
(void) mca_base_var_register("ompi", NULL, NULL, "comm_method_brief",
170+
// hook_comm_method_brief
171+
(void) mca_base_component_var_register(&mca_hook_comm_method_component.hookm_version, "brief",
161172
"Only print the comm method summary, skip the 2d table.",
162173
MCA_BASE_VAR_TYPE_INT, NULL,
163174
0, 0,
164175
OPAL_INFO_LVL_3,
165176
MCA_BASE_VAR_SCOPE_READONLY,
166177
&mca_hook_comm_method_brief);
167178

168-
// comm_method_fakefile is just for debugging, allows complete override of all the
179+
// hook_comm_method_fakefile is just for debugging, allows complete override of all the
169180
// comm method in the table
170-
(void) mca_base_var_register("ompi", NULL, NULL, "comm_method_fakefile",
181+
(void) mca_base_component_var_register(&mca_hook_comm_method_component.hookm_version, "fakefile",
171182
"For debugging only: read comm methods from a file",
172183
MCA_BASE_VAR_TYPE_STRING, NULL,
173184
0, 0,

0 commit comments

Comments
 (0)