On May 17, 2010, at 7:59 PM, Barrett, Brian W wrote:

> HWLOC could be extended to support Red Storm, probably, but we don't have the 
> need or time to do such an implementation.  

Fair enough.

> Given that, I'm not really picky about what the method of not breaking an 
> existing supported platform is, but I think having HAVE_HWLOC defines 
> everywhere is a bad idea...

We need a mechanism to have hwloc *not* be there, particularly for embedded 
environments -- where hwloc would add no value.  This is apparently just like 
Red Storm, but even worse because we need to keep the memory footprint down as 
much as possible (libhwloc.so.0.0 on linux is 104KB -- libhwloc.a is 139KB -- 
both are big numbers when you only have a few MB of usable RAM).  So even 
leaving stubs doesn't seem like a good idea -- they'll take up space, too.  And 
the hwloc API is fairly large -- maintaining stubs for all the API functions 
could be a daunting task.

I think embedding is the main reason I can't think of any better idea than #if 
OPAL_HAVE_HWLOC.

I anticipate that hwloc usage would be fairly localized in the OMPI code base:

int btl_sm_setup_stuff(...)
{
#if OPAL_HAVE_HWLOC
     ...do interesting hwloc things...
     ...setup stuff on btl_sm_component...
     btl_sm_component.have_hwloc = 1;
#else
     btl_sm_component.have_hwloc = 0;
#endif
}

int btl_sm_other_stuff(...)
{
    if (btl_sm_component.have_hwloc) {
        ...use the hwloc info...
    }
}

But I'm certainly open to other ideas -- got any?

-- 
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