On Thu, Jul 18, 2013 at 05:50:40PM +0200, George Bosilca wrote:
> On Jul 18, 2013, at 17:07 , Nathan Hjelm <hje...@lanl.gov> wrote:
> 
> > This was discussed in depth before the MCA rewrite came into the trunk. 
> > There are only two cases where we load and register all the available 
> > components: ompi_info, and MPI_T_init_thread(). The normal MPI case does 
> > not have this behavior and instead loads only the requested components.
> 
> How is this part of the code validated? It might capitalize on some type of 
> "trust". Unfortunately ? I have no such notion.

The fact that ompi_mpi_init never call ompi_info_register_params() which is the 
only path that sets the MCA_BASE_REGISTER_ALL when registering framework 
pameters. The register all behavior has to be explicitly asked for.

> I would rather take the path of the "least astonishment", a __consistent__ 
> behavior where we always abide to the configuration files (user level as well 
> as system level). If you want to see every single parameter possibly 
> available to you (based on your rights of course), temporary remove the 
> configuration file. Or we can provide a specific ompi_info option to ignore 
> the configuration files, but not make this the default.

In some ways this was the default behavior (if no file values were set). The 
current behavior was chosen to be consistent and reflect what I thought was the 
original intent. The old behavior would ignore component selection variables 
set in the environment (ompi_info actually unset them). So, if you set one of 
these variables in the environment (or the ompi_info command line) you would 1) 
still get all components in the framework, and 2) not see the variable as set 
even though it is in an actual run.

So, if I did:

export OMPI_MCA_btl=self,sm

or added --mca btl self,sm to the ompi_info command line

I would still see all the btls + this:

                 MCA btl: parameter "btl" (current value: "", data source: 
default, level: 2 user/detail, type: string)
                          Default selection set of components for the btl 
framework (<none> means use all components that can be found)

instead of:

                 MCA btl: parameter "btl" (current value: "self,sm", data 
source: environment, level: 2 user/detail, type: string)
                          Default selection set of components for the btl 
framework (<none> means use all components that can be found)

Very annoying!

That said. The register all behavior is easy to control. If there is a 
consensus that we need another ompi_info option I am more than happy to add it. 
But then again, --all should mean all components, all frameworks, all levels. 

-Nathan

Reply via email to