That doesn't really work with the hwloc model unfortunately. Also,
when you get to smaller objects (cores, threads, ...) there are
multiple "closest" objects at each depth.
We have one "closest" object at some depth (usually Machine or NUMA
node). If you need something higher, you just walk the parent links.
If you need something smaller, you look at children.
Also, each I/O device isn't directly attached to such a closest
object. It's usually attached under some bridge objects. There's a
tree of hwloc PCI bus objects exactly like you have a tree of hwloc
sockets/cores/threads/etc. At the top of the I/O tree, one (bridge)
object is attached to a regular object as explained earlier. So,
when you have a random hwloc PCI object, you get its locality by
walking up its parent link until you find a non-I/O object (one
whose cpuset isn't NULL). hwloc/helper.h gives you
hwloc_get_non_io_ancestor_obj() to do that.
Brice
Le 09/02/2012 14:34, Ralph Castain a écrit :
Ah, okay - in that case, having the I/O device
attached to the "closest" object at each depth would be ideal from
an OMPI perspective.
On Feb 9, 2012, at 6:30 AM, Brice Goglin wrote:
The bios usually tells
you which numa location is close to each host-to-pci
bridge. So the answer is yes.
Brice
Ralph Castain <
rhc@open-mpi.org>
a écrit :
I'm not sure I understand this comment. A PCI
device is attached to the node, not to any
specific location within the node, isn't it? Can
you really say that a PCI device is "attached" to
a specific NUMA location, for example?
On Feb 9, 2012, at 6:15 AM, Jeff Squyres wrote:
That doesn't seem too attractive from
an OMPI perspective, though.
We'd want to know where the PCI devices are
actually rooted.
_______________________________________________
devel mailing list
devel@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/devel
_______________________________________________
devel mailing list
devel@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/devel
_______________________________________________