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.
Этот коммит содержится в:
родитель
3be348e34a
Коммит
6a1b78e26b
@ -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? */
|
||||
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user