I've now talked to both George and Nathan. Let me summarize for the web archives / community:
1. There are two main points of contention: 1a. ompi_info has a *very long-standing precedent* behavior of using <framework> MCA params to exclude the display of components (and their params). Users have come to rely on this behavior to test that OMPI is honoring their $HOME/.openmpi-mca-params.conf file (for example) because -- at least prior to new ompi_info -- there was no other way to verify that. 1b. It seems meaningless for MPI_T_Init to open *all* components when we're just going to be exposing a bunch of components/parameters that will not be used. Easy example: MPI_T_Init will open all the PMLs, but we'll only end up using one of them. Why have all the rest? 2. After talking to Nathan, here's our answers: 2a. Fair enough. The long-standing ompi_info behavior precedent alone is probably enough to warrant re-thinking the new ompi_info behavior. Nathan will implement a compromise (that George was ok with when I talked on the phone with him). If you have a <framework> parameter somewhere that disables components (e.g., $HOME/.openmpi-mca-params.conf contains "btl = tcp,sm,self"), then ompi_info will somehow mark those components' parameters as "inactive" in the prettyprint and parseable outputs 2b. Nathan reminded me why we chose to do this. It requires a little explanation... One thing to remember: MPI_T parameters *are* MCA parameters. Hence, the btl_tcp_if_include MCA parameter is also the btl_tcp_if_include MPI_T parameter. Put differently: MPI_T and MCA are two interfaces to the same back-end variables. Something to note: if you call MPI_Init and then later call MPI_T_init, the latter is effectively a no-op. The interesting case is when you call MPI_T_init before you call MPI_Init. In this case, as has been noted in this thread: we open all components in all frameworks. However: what hasn't been noted is that during the subsequent MPI_Init, we do normal selection *and will close unused components* (which also un-registers all their corresponding MPI_T/MCA parameters). For example: 1. During MPI_T_init, we'll open all the PMLs: CM, OB1, etc. 2. Subsequent calls to MPI_T functions can *set* MPI_T/MCA params. For example, you can use MPI_T to pick the ob1 PML. 3. When MPI_Init is finally invoked, normal MPI_Init flow is observed; if an MCA param was set to, for example, pick the PML, it will be honored and the non-selected PMLs will be closed. Consequently, all the MPI_T/MCA params for the closed components will disappear from MPI_T (which is allowed by the spec). Continuing the example from #2, the CM PML will be closed, and all of its MPI_T/MCA params will disappear. Put simply: the point of opening *all* frameworks/components is to find out what all the params are so that the window of time represented by #2 can be utilized to examine/set MCA params as you want before you go into the "normal" MPI process So I think we're ok from this standpoint. On Jul 19, 2013, at 10:29 AM, "Jeff Squyres (jsquyres)" <jsquy...@cisco.com> wrote: > George and I talked about this on the phone; I understand his questions > better now. > > Nathan and I will get together and work through his questions and come back > to everyone with some answers / proposals. > > > On Jul 19, 2013, at 9:27 AM, George Bosilca <bosi...@icl.utk.edu> wrote: > >> >> My point is the following. I favor consistent behaviors and I'm always in >> favor of respecting the configuration files. ALWAYS like in the word that >> mean all cases without exception. Thus, by default, ompi_info as any other >> component of the Open MPI infrastructure MUST read the configuration files >> and respect all options provided there. And here was another inconsistency >> on the "new" approach. ompi_info reports some of the values (like the eager >> size and friends), while deciding to ignore others (like the list of the >> active PML and BTL). >> >> I do concede that there are cases where we need something slightly >> different, maybe as a convenience. If there is a need for a special case for >> ompi_info to ignore the configuration files, let's add it. But do't make it >> the default, instead request a special command line argument for it. >> >> There were several mentions about he MPI_T in this discussion. If I >> understand what was said about it, all components are loaded, they register >> their parameters and them based on user selection some the them are >> unloaded. Thus my question is: from the tools perspective what is the >> interest of knowing that a special MPI_T parameter exists but not be able to >> use it (because the originator component was meanwhile unloaded)? >> >> George. >> >> >> On Jul 18, 2013, at 18:12 , "Jeff Squyres (jsquyres)" <jsquy...@cisco.com> >> wrote: >> >>> On Jul 18, 2013, at 11:50 AM, George Bosilca <bosi...@icl.utk.edu> wrote: >>> >>>> How is this part of the code validated? It might capitalize on some type >>>> of "trust". Unfortunately … I have no such notion. >>> >>> Not sure what you're asking here. >>> >>>> 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. >>> >>> >>> I think MPI applications and ompi_info are different cases. >>> >>> 1. We've definitely had cases of user (and OMPI developer!) confusion over >>> the years where people would run ompi_info and not see their favorite MCA >>> component listed. After a while, they figured out it was because they had >>> an env variable/file limiting which components were used (e.g., >>> OMPI_MCA_btl=sm,tcp,self would silently disable all other BTLs in ompi_info >>> output). This actually seems to be fairly counter-intuitive behavior, if >>> you ask me -- it was done this way as an artifact of the old implementation >>> architecture. >>> >>> Personally, I think changing ompi_info's behavior to always listing all >>> components is a good idea. Is there a reason to be concerned about the >>> memory footprint and IO traffic of running ompi_info? >>> >>> What might be a useful addition, however, is in the above example (user has >>> OMPI_MCA_btl=sm,tcp,self in their environment) to somehow mark all other >>> BTL params as "inactive because of OMPI_MCA_BTL env variable value", or >>> something like that. >>> >>> *** If someone wants this behavior, please propose a specific way to mark >>> prettyprint and parsable ompi_info output. >>> >>> 2. MPI application behavior has not changed -- if you call MPI_Init, we >>> open exactly the same frameworks/components that were opened before. But >>> if you're using a tool (i.e., call the MPI_T init function), then you pay >>> an extra price (potentially more dlopens, more memory usage, etc.). This >>> is the same as it has always been for tools: tools cost something (memory, >>> performance, whatever). >>> >>> That being said, if you want a different behavior, please propose something >>> specific (e.g., specific new MCA param + value(s) for specific behavior(s)). >>> >>> -- >>> Jeff Squyres >>> jsquy...@cisco.com >>> For corporate legal information go to: >>> http://www.cisco.com/web/about/doing_business/legal/cri/ >>> >>> >>> _______________________________________________ >>> devel mailing list >>> de...@open-mpi.org >>> http://www.open-mpi.org/mailman/listinfo.cgi/devel >> >> >> _______________________________________________ >> devel mailing list >> de...@open-mpi.org >> http://www.open-mpi.org/mailman/listinfo.cgi/devel > > > -- > Jeff Squyres > jsquy...@cisco.com > For corporate legal information go to: > http://www.cisco.com/web/about/doing_business/legal/cri/ > > > _______________________________________________ > devel mailing list > de...@open-mpi.org > http://www.open-mpi.org/mailman/listinfo.cgi/devel -- Jeff Squyres jsquy...@cisco.com For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/