Open MPI logo

Hardware Locality Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Hardware Locality Development mailing list

Subject: Re: [hwloc-devel] Merging the PCI branch?
From: Samuel Thibault (samuel.thibault_at_[hidden])
Date: 2011-03-31 14:41:05

Jeff Squyres, le Thu 31 Mar 2011 18:06:59 +0200, a écrit :
> On Mar 28, 2011, at 5:26 PM, Brice Goglin wrote:
> > First, to avoid breaking existing applications, I/O devices are not
> > added to the topology unless a new topology flag is set. Only lstopo
> > enables PCI devices by default.
> Good. Although I think we should plan to make this the default in some future version (i.e., say that in the docs).

I'm unsure about it. We need to keep the simple things simple, and many
people will only care about CPU placement first, so that should remain

> How / where do these new devices show up in the tree that is returned from hwloc? For example, are PCI busses children of NUMA nodes, or siblings?

They show up according to the corresponding cpuset. In the case of a
NUMA node, since PCI busses are typically close to the whole set of cpus
of the NUMA node, it'll be a child (else you wouldn't know which NUMA
node it's close to). Of course, more complexe hardware will have
different relations.

> > These new objects are special:
> > * They have no cpusets
> > * They may appear at random places in the topology, with very different
> > numbers of bridges above them. So we don't associate a "level" or a
> > "depth" to these new types. If you ever need to enumerate them, use the
> > new get_next_osdev() or get_next_pcidev() functions. This may need a bit
> > more of documentation.
> >
> > libpci is needed to make this work. And only Linux gives you OS devices
> > for now (we use sysfs to translate between pci devs and os devs).
> Is libpci available on all platforms? Or is it only needed on Linux?

It is said to work on linux, free/net/openbsd, solaris, aix, and
whatever OS that lets it access x86 io ports.