Actually, the more I think about this, the more puzzled I get. We already have a mechanism for forwarding and/or setting envars, though it applies to the daemons, who then drop it down to the apps. Just use the "-x" option, which will either forward the current value of the envar, or you can set the value explicitly with "-x foo=var".
So what does this new capability add? Is it just the ability to do -x from within an am-file? If so, why not just update the am parser to support it? If -x isn't working, or isn't doing something we want, then it might be better to update it as opposed to creating another parallel mechanism... On Tue, Apr 1, 2014 at 4:23 PM, Ralph Castain <r...@open-mpi.org> wrote: > If you are expecting the user to put quotes around the string, then you > better tell them that in the help message. Otherwise, they would do what I > did - simply list the envars with a space in-between, and everything fails. > > Also, you need to update mpirun.1in to reflect this new option or else > nobody will know about it :-) > > However, looking at your example leaves me totally puzzled. Why are these > not just MCA params to begin with, in which case we don't need another > duplicate mechanism for setting them? > > We should only be setting envars that have nothing to do with OMPI, not > setting OMPI-related envars - anything OMPI related is supposed to be an > MCA param. > > > > On Tue, Apr 1, 2014 at 4:16 PM, Mike Dubman <mi...@dev.mellanox.co.il>wrote: > >> not sure what you mean, could you please provide example? >> >> comma is used often as part of the value, here is a example: >> >> -mca base_env_list "HCOLL_BCOL=basesmuma,mlnx_p2p HCOLL_SBGP=basesmuma,p2p >> HCOLL_ML_USE_KNOMIAL_ALLREDUCE=1" >> >> >> >> On Wed, Apr 2, 2014 at 2:12 AM, Ralph Castain <r...@open-mpi.org> wrote: >> >>> This change just looks wrong - you can't split the variables on a >>> "space" as there is no way to know how many variables there might be, and >>> thus how to parse the rest of the cmd line. At best, you need a >>> comma-delimited list. >>> >>> Please fix this! >>> Ralph >>> >>> >>> >>> On Tue, Apr 1, 2014 at 2:14 PM, <svn-commit-mai...@open-mpi.org> wrote: >>> >>>> Author: miked (Mike Dubman) >>>> Date: 2014-04-01 17:14:31 EDT (Tue, 01 Apr 2014) >>>> New Revision: 31302 >>>> URL: https://svn.open-mpi.org/trac/ompi/changeset/31302 >>>> >>>> Log: >>>> 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 >>>> >>>> Text files modified: >>>> trunk/opal/mca/base/help-mca-var.txt | 5 +++++ >>>> trunk/opal/mca/base/mca_base_var.c | 36 >>>> ++++++++++++++++++++++++++++++++++++ >>>> trunk/opal/mca/base/mca_base_var.h | 2 ++ >>>> trunk/orte/tools/orterun/orterun.c | 2 ++ >>>> 4 files changed, 45 insertions(+), 0 deletions(-) >>>> >>>> Modified: trunk/opal/mca/base/help-mca-var.txt >>>> >>>> ============================================================================== >>>> --- trunk/opal/mca/base/help-mca-var.txt Tue Apr 1 16:57:12 >>>> 2014 (r31301) >>>> +++ trunk/opal/mca/base/help-mca-var.txt 2014-04-01 17:14:31 EDT >>>> (Tue, 01 Apr 2014) (r31302) >>>> @@ -121,3 +121,8 @@ >>>> >>>> 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 >>>> >>>> Modified: trunk/opal/mca/base/mca_base_var.c >>>> >>>> ============================================================================== >>>> --- trunk/opal/mca/base/mca_base_var.c Tue Apr 1 16:57:12 2014 >>>> (r31301) >>>> +++ trunk/opal/mca/base/mca_base_var.c 2014-04-01 17:14:31 EDT (Tue, >>>> 01 Apr 2014) (r31302) >>>> @@ -61,6 +61,7 @@ >>>> 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 @@ >>>> 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; >>>> >>>> Modified: trunk/opal/mca/base/mca_base_var.h >>>> >>>> ============================================================================== >>>> --- trunk/opal/mca/base/mca_base_var.h Tue Apr 1 16:57:12 2014 >>>> (r31301) >>>> +++ trunk/opal/mca/base/mca_base_var.h 2014-04-01 17:14:31 EDT (Tue, >>>> 01 Apr 2014) (r31302) >>>> @@ -716,6 +716,8 @@ >>>> */ >>>> 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 */ >>>> >>>> Modified: trunk/orte/tools/orterun/orterun.c >>>> >>>> ============================================================================== >>>> --- trunk/orte/tools/orterun/orterun.c Tue Apr 1 16:57:12 2014 >>>> (r31301) >>>> +++ trunk/orte/tools/orterun/orterun.c 2014-04-01 17:14:31 EDT (Tue, >>>> 01 Apr 2014) (r31302) >>>> @@ -1628,6 +1628,8 @@ >>>> 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? */ >>>> >>>> _______________________________________________ >>>> svn mailing list >>>> s...@open-mpi.org >>>> http://www.open-mpi.org/mailman/listinfo.cgi/svn >>>> >>> >>> >>> _______________________________________________ >>> devel mailing list >>> de...@open-mpi.org >>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel >>> Link to this post: >>> http://www.open-mpi.org/community/lists/devel/2014/04/14441.php >>> >> >> >> _______________________________________________ >> devel mailing list >> de...@open-mpi.org >> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel >> Link to this post: >> http://www.open-mpi.org/community/lists/devel/2014/04/14442.php >> > >