On Jul 19, 2013, at 17:57 , Jeff Squyres (jsquyres) <jsquy...@cisco.com> wrote:
> 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? Any progress on this? George. > > 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/ > > > _______________________________________________ > devel mailing list > de...@open-mpi.org > http://www.open-mpi.org/mailman/listinfo.cgi/devel