ompi_info: mark the variables from disabled components as disabled in
the output of ompi_info. A variable is disabled if its component will never be selected due to a component selection parameter (eg. -mca btl self). The old behavior of ompi_info was to not print these parameters at all. Now we print the parameters. After some discussion with George it was decided that there needed to be some way to see what parameters will not be used. This was the comprimise. This commit also fixes a bug and a typo in the pvar sytem. The enum_count value in mca_base_pvar_dump was being used without being set. The full_name in mca_base_pvar_t was not being used. cmr=v1.7.3:ticket=trac:3734 This commit was SVN r29078. The following Trac tickets were found above: Ticket 3734 --> https://svn.open-mpi.org/trac/ompi/ticket/3734
Этот коммит содержится в:
родитель
305fa88d4b
Коммит
77a41e1ca9
@ -151,6 +151,13 @@ OPAL_DECLSPEC int mca_base_component_find(const char *directory, const char *typ
|
||||
opal_list_t *found_components,
|
||||
bool open_dso_components);
|
||||
|
||||
/**
|
||||
* Parse the requested component string and return an opal_argv of the requested
|
||||
* (or not requested) components.
|
||||
*/
|
||||
int mca_base_component_parse_requested (const char *requested, bool *include_mode,
|
||||
char ***requested_component_names);
|
||||
|
||||
/**
|
||||
* Filter a list of components based on a comma-delimted list of names and/or
|
||||
* a set of meta-data flags.
|
||||
|
@ -150,9 +150,6 @@ static bool use_component(const bool include_mode,
|
||||
const char **requested_component_names,
|
||||
const char *component_name);
|
||||
|
||||
static int parse_requested (const char *requested, bool *include_mode,
|
||||
char ***requested_component_names);
|
||||
|
||||
|
||||
/*
|
||||
* Function to find as many components of a given type as possible. This
|
||||
@ -174,7 +171,7 @@ int mca_base_component_find(const char *directory, const char *type,
|
||||
bool include_mode;
|
||||
int i, ret;
|
||||
|
||||
ret = parse_requested (requested_components, &include_mode,
|
||||
ret = mca_base_component_parse_requested (requested_components, &include_mode,
|
||||
&requested_component_names);
|
||||
if (OPAL_SUCCESS != ret) {
|
||||
return ret;
|
||||
@ -259,7 +256,7 @@ int mca_base_components_filter (const char *framework_name, opal_list_t *compone
|
||||
return OPAL_SUCCESS;
|
||||
}
|
||||
|
||||
ret = parse_requested (filter_names, &include_mode,
|
||||
ret = mca_base_component_parse_requested (filter_names, &include_mode,
|
||||
&requested_component_names);
|
||||
if (OPAL_SUCCESS != ret) {
|
||||
return ret;
|
||||
@ -1022,8 +1019,8 @@ static int component_find_check (const char *framework_name, char **requested_co
|
||||
return OPAL_SUCCESS;
|
||||
}
|
||||
|
||||
static int parse_requested (const char *requested, bool *include_mode,
|
||||
char ***requested_component_names)
|
||||
int mca_base_component_parse_requested (const char *requested, bool *include_mode,
|
||||
char ***requested_component_names)
|
||||
{
|
||||
const char *requested_orig = requested;
|
||||
|
||||
|
@ -784,7 +784,7 @@ int mca_base_pvar_dump(int index, char ***out, mca_base_var_dump_type_t output_t
|
||||
mca_base_var_group_t *group;
|
||||
int line = 0, line_count, i;
|
||||
const mca_base_pvar_t *pvar;
|
||||
int ret, enum_count;
|
||||
int ret, enum_count = 0;
|
||||
char *tmp;
|
||||
|
||||
ret = mca_base_pvar_get (index, &pvar);
|
||||
|
@ -166,9 +166,6 @@ typedef struct mca_base_pvar_t {
|
||||
int pvar_index;
|
||||
|
||||
/** Full name of the variable: form is framework_component_name */
|
||||
char *full_name;
|
||||
|
||||
/** Short name of the variable */
|
||||
char *name;
|
||||
|
||||
/** Description of this performance variable */
|
||||
|
@ -532,15 +532,48 @@ void opal_info_err_params(opal_pointer_array_t *component_map)
|
||||
|
||||
static void opal_info_show_mca_group_params(const mca_base_var_group_t *group, mca_base_var_info_lvl_t max_level, bool want_internal)
|
||||
{
|
||||
const int *variables, *groups;
|
||||
const mca_base_pvar_t *pvar;
|
||||
const char *group_component;
|
||||
const mca_base_var_t *var;
|
||||
const int *variables;
|
||||
char **strings, *message;
|
||||
bool requested = true;
|
||||
int ret, i, j, count;
|
||||
const int *groups;
|
||||
char **strings;
|
||||
|
||||
variables = OPAL_VALUE_ARRAY_GET_BASE(&group->group_vars, const int);
|
||||
count = opal_value_array_get_size((opal_value_array_t *)&group->group_vars);
|
||||
|
||||
/* the default component name is "base". depending on how the
|
||||
* group was registered the group may or not have this set. */
|
||||
group_component = group->group_component ? group->group_component : "base";
|
||||
|
||||
/* check if this group may be disabled due to a selection variable */
|
||||
if (0 != strcmp (group_component, "base")) {
|
||||
int var_id;
|
||||
|
||||
/* read the selection parameter */
|
||||
var_id = mca_base_var_find (group->group_project, group->group_framework, NULL, NULL);
|
||||
if (0 <= var_id) {
|
||||
const mca_base_var_storage_t *value;
|
||||
char **requested_components;
|
||||
bool include_mode;
|
||||
|
||||
mca_base_var_get_value (var_id, &value, NULL, NULL);
|
||||
if (NULL != value->stringval && '\0' != value->stringval[0]) {
|
||||
mca_base_component_parse_requested (value->stringval, &include_mode, &requested_components);
|
||||
|
||||
for (i = 0, requested = !include_mode ; requested_components[i] ; ++i) {
|
||||
if (0 == strcmp (requested_components[i], group->group_component)) {
|
||||
requested = include_mode;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
opal_argv_free (requested_components);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0 ; i < count ; ++i) {
|
||||
ret = mca_base_var_get(variables[i], &var);
|
||||
if (OPAL_SUCCESS != ret || ((var->mbv_flags & MCA_BASE_VAR_FLAG_INTERNAL) &&
|
||||
@ -556,9 +589,7 @@ static void opal_info_show_mca_group_params(const mca_base_var_group_t *group, m
|
||||
|
||||
for (j = 0 ; strings[j] ; ++j) {
|
||||
if (0 == j && opal_info_pretty) {
|
||||
char *message;
|
||||
|
||||
asprintf (&message, "MCA %s", group->group_framework);
|
||||
asprintf (&message, "MCA%s %s", requested ? "" : " (disabled)", group->group_framework);
|
||||
opal_info_out(message, message, strings[j]);
|
||||
free(message);
|
||||
} else {
|
||||
@ -566,6 +597,14 @@ static void opal_info_show_mca_group_params(const mca_base_var_group_t *group, m
|
||||
}
|
||||
free(strings[j]);
|
||||
}
|
||||
if (!opal_info_pretty) {
|
||||
/* generate an entry indicating whether this variable is disabled or not. if the
|
||||
* format in mca_base_var/pvar.c changes this needs to be changed as well */
|
||||
asprintf (&message, "mca:%s:%s:param:%s:disabled:%s", group->group_framework,
|
||||
group_component, var->mbv_full_name, requested ? "false" : "true");
|
||||
opal_info_out("", "", message);
|
||||
free (message);
|
||||
}
|
||||
free(strings);
|
||||
}
|
||||
|
||||
@ -573,6 +612,11 @@ static void opal_info_show_mca_group_params(const mca_base_var_group_t *group, m
|
||||
count = opal_value_array_get_size((opal_value_array_t *)&group->group_pvars);
|
||||
|
||||
for (i = 0 ; i < count ; ++i) {
|
||||
ret = mca_base_pvar_get(variables[i], &pvar);
|
||||
if (OPAL_SUCCESS != ret || max_level < pvar->verbosity) {
|
||||
continue;
|
||||
}
|
||||
|
||||
ret = mca_base_pvar_dump (variables[i], &strings, !opal_info_pretty ? MCA_BASE_VAR_DUMP_PARSABLE : MCA_BASE_VAR_DUMP_READABLE);
|
||||
if (OPAL_SUCCESS != ret) {
|
||||
continue;
|
||||
@ -580,9 +624,7 @@ static void opal_info_show_mca_group_params(const mca_base_var_group_t *group, m
|
||||
|
||||
for (j = 0 ; strings[j] ; ++j) {
|
||||
if (0 == j && opal_info_pretty) {
|
||||
char *message;
|
||||
|
||||
asprintf (&message, "MCA %s", group->group_framework);
|
||||
asprintf (&message, "MCA%s %s", requested ? "" : " (disabled)", group->group_framework);
|
||||
opal_info_out(message, message, strings[j]);
|
||||
free(message);
|
||||
} else {
|
||||
@ -590,6 +632,14 @@ static void opal_info_show_mca_group_params(const mca_base_var_group_t *group, m
|
||||
}
|
||||
free(strings[j]);
|
||||
}
|
||||
if (!opal_info_pretty) {
|
||||
/* generate an entry indicating whether this variable is disabled or not. if the
|
||||
* format in mca_base_var/pvar.c changes this needs to be changed as well */
|
||||
asprintf (&message, "mca:%s:%s:pvar:%s:disabled:%s", group->group_framework,
|
||||
group_component, pvar->name, requested ? "false" : "true");
|
||||
opal_info_out("", "", message);
|
||||
free (message);
|
||||
}
|
||||
free(strings);
|
||||
}
|
||||
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user