The ultimate goal is to not add an additional dependency for serialization of 
the hwloc topology information.  One way or another, we'll get there.


On Sep 6, 2011, at 11:46 AM, George Bosilca wrote:

> I guess that as long as there is an option to have any need for XML support 
> compiled out, there is no reason to complain.
> 
>  george.
> 
> On Sep 6, 2011, at 17:36 , Jeff Squyres wrote:
> 
>> Don't forget that this RFC has a timeout of today.  I didn't think it would 
>> be controversial, which is why it had a short timeout.
>> 
>> -----
>> 
>> Josh brought up a good point on the teleconf today that he'd like to be able 
>> to have hwloc without the the additional libxml dependency (i.e., the way it 
>> is on the trunk today).  
>> 
>> Remember that making hwloc a 1st class citizen is the first step of a 
>> multi-sept plan (i.e., part of revamping paffinity in general).  As part of 
>> the larger plan, we had planned to -- at least for a short while -- enable 
>> XML support in hwloc.  Ralph and I will discuss this; I *think* we should be 
>> able to bring in the overall hwloc support without XML.  
>> 
>> For the future, hwloc is exploring either supporting some other text format 
>> that won't have an additional dependency (e.g., JSON), or re-writing its XML 
>> support to drop the libxml dependency.
>> 
>> 
>> On Aug 31, 2011, at 3:05 PM, Jeff Squyres wrote:
>> 
>>> WHAT: Move hwloc up to be a first-class citizen in OPAL (while still making 
>>> it possible to compile it out for platforms that don't need it)
>>> 
>>> WHY: I previously sent a similar RFC to this one, but it got shot down in 
>>> favor of hiding hwloc's functionality under abstraction.  After playing 
>>> with this for some time, we're now firmly in the belief that the additional 
>>> abstraction doesn't buy OMPI anything.
>>> 
>>> WHERE: A new compile-time-one-of-many framework like libevent: 
>>> opal/mca/hwloc.
>>> 
>>> WHEN: as part of the paffinity changes being worked on by Jeff, Josh, 
>>> Terry, and Ralph.
>>> 
>>> TIMEOUT: Teleconf, Tuesday, Sep 6.  
>>> 
>>> --> Short timeout because I *think* the only person that objected to the 
>>> prior RFC (Ralph) has now been converted. Hence, I think this will be 
>>> non-controversial.  See below.
>>> 
>>> --------------------------------------
>>> 
>>> MORE DETAIL:
>>> 
>>> There are many people who want to use hwloc within the OMPI code base for 
>>> many different reasons.  We've struggled how to do so for two reasons:
>>> 
>>> 1. avoid a complete dependence on hwloc
>>> 2. be able to compile it out for platforms that don't want/need it (e.g., 
>>> Cray)
>>> 
>>> The initial objection to my long-ago RFC was that you could hide hwloc 
>>> under some abstraction and therefore easily be able to handle compiling 
>>> hwloc out, supporting platforms that hwloc doesn't support, and potentially 
>>> be able to replace hwloc with something else someday, if desired.
>>> 
>>> After wrestling with this for a good long while, none of those goals seem 
>>> workable via a thin layer of abstraction.
>>> 
>>> Instead, let's just call a spade a spade: we'll be dependent upon hwloc.  
>>> We'll provide a mechanism to compile it out for Cray and other embedded 
>>> platforms.  
>>> 
>>> Here's the plan:
>>> 
>>> 1. Make a new framework opal/mca/hwloc.  We'll initially have 3 components:
>>> - hwloc121: hwloc distribution v1.2.1
>>> - system: the system-installed hwloc
>>> - none: for platforms that don't want hwloc support
>>> 
>>> Just like the libevent framework, we can introduce new versions of hwloc 
>>> (e.g., 1.3) as new components.  Old versions/components can be deleted as 
>>> new versions/components are stabilized.
>>> 
>>> 2. The hwloc framework will be like the libevent framework; only one of 
>>> these components will be compiled.  The component's hwloc API will be 
>>> directly available (via name-shifting) to the rest of OPAL/ORTE/OMPI.  No 
>>> need for the usual structs of function pointers and whatnot.
>>> 
>>> 3. The rest of the OPAL / ORTE / OMPI code base can use the hwloc API in 
>>> the following way:
>>> 
>>> 3a. opal_init() will initialize hwloc and load a central copy of the local 
>>> machine's topology in a global variable. Anyone in the code base can use 
>>> this global variable; its use does not need to be protected by #if 
>>> _whatever_. However, its value may be NULL for platforms that hwloc doesn't 
>>> support or installations that used the "none" hwloc component.
>>> 
>>> 3b. opal_config.h will contain the macro OPAL_HAVE_HWLOC, which will be 
>>> either 0 or 1.  Any code that uses the hwloc API must protect itself with 
>>> #if OPAL_HAVE_HWLOC, because installations that use the "none" hwloc 
>>> component won't be able to link resolve any of the hwloc symbols.  
>>> 
>>> Meaning that you could do something like:
>>> 
>>> if (NULL != opal_hwloc_topology) {
>>> #if OPAL_HAVE_HWLOC
>>>     // ...use hwloc API, etc.
>>> #endif
>>> }
>>> 
>>> 4. After steps 1-3 are all done, the paffinity and maffinity frameworks can 
>>> be deleted and replaced with the corresponding hwloc calls.  
>>> 
>>> Meaning: if we've got hwloc, the paffinity and maffinity frameworks now 
>>> become redundant.  So let's whack them. This can happen after 1-3 are done 
>>> and stable in the trunk, however.
>>> 
>>> -- 
>>> 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
> 
> 
> _______________________________________________
> 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/


Reply via email to