1
1

opal: add mca param to control ranks env variables

add -mca base_env_list "var1=val1 var2=val2 ..." mca parameter that can be used in mca param files
or with -am app.conf mpirun commandline to set rank env variables with mca mechanism

fixed by Elena, reviewed by Miked

cmr=v1.8.1:reviewer=ompi-rm1.8

This commit was SVN r31302.
Этот коммит содержится в:
Mike Dubman 2014-04-01 21:14:31 +00:00
родитель 3be348e34a
Коммит 6a1b78e26b
4 изменённых файлов: 45 добавлений и 0 удалений

Просмотреть файл

@ -121,3 +121,8 @@ starting your job.
Value: %s
Source: %s
#
[incorrect-env-list-param]
The format of mca_base_env_list parameter is incorrect. It should be
VAR1=VAL1 VAR2=VAL2 VAR3=VAL3 ...
Value: %s

Просмотреть файл

@ -61,6 +61,7 @@ static char **mca_base_var_file_list = NULL;
static char *mca_base_var_override_file = NULL;
static char *mca_base_var_file_prefix = NULL;
static char *mca_base_param_file_path = NULL;
static char *mca_base_env_list = NULL;
static bool mca_base_var_suppress_override_warning = false;
static opal_list_t mca_base_var_file_values;
static opal_list_t mca_base_var_override_values;
@ -259,6 +260,41 @@ int mca_base_var_init(void)
return OPAL_SUCCESS;
}
int mca_base_var_process_env_list(char ***context_env)
{
int i, ret;
char** tokens;
char* ptr;
char* param, *value;
ret = mca_base_var_register ("opal", "mca", "base", "env_list",
"Set SHELL env variables",
MCA_BASE_VAR_TYPE_STRING, NULL, 0, 0, OPAL_INFO_LVL_3,
MCA_BASE_VAR_SCOPE_READONLY, &mca_base_env_list);
if ((0 > ret) || (NULL == mca_base_env_list)) {
return ret;
}
tokens = opal_argv_split(mca_base_env_list, ' ');
if (NULL != tokens) {
for (i = 0; NULL != tokens[i]; i++) {
if (NULL == (ptr = strchr(tokens[i], '='))) {
opal_show_help("help-mca-var.txt", "incorrect-env-list-param",
true, mca_base_env_list);
opal_argv_free(tokens);
return OPAL_ERROR;
} else {
param = strdup(tokens[i]);
value = strchr(param, '=');
*value = '\0';
value++;
opal_setenv(param, value, false, context_env);
free(param);
}
}
opal_argv_free(tokens);
}
return OPAL_SUCCESS;
}
static int mca_base_var_cache_files(bool rel_path_search)
{
char *tmp;

Просмотреть файл

@ -716,6 +716,8 @@ typedef enum {
*/
OPAL_DECLSPEC int mca_base_var_dump(int vari, char ***out, mca_base_var_dump_type_t output_type);
OPAL_DECLSPEC int mca_base_var_process_env_list(char ***context_env);
END_C_DECLS
#endif /* OPAL_MCA_BASE_VAR_H */

Просмотреть файл

@ -1628,6 +1628,8 @@ static int create_app(int argc, char* argv[],
goto cleanup;
}
mca_base_cmd_line_process_args(&cmd_line, app_env, &global_mca_env);
mca_base_var_process_env_list(app_env);
/* Is there an appfile in here? */