Ok, good to know.

The working flow is basically:
* src/topology.c initializes some stuff
* it calls the OS-specific lookup function, something like look_linux() for instance
  + look_linux() in src/topology-linux.c does most of the job (by reading /sys and /proc files)
  + for some OS such as freebsd, look_freebsd() will actually call look_x86() to gather cpuid information on x86 machines because the OS doesn't export much hardware info to user-space (I just committed a comment to the topology-x86.c header to make this clear)
* in the future, the core will also call a libpci backend to add some PCI devices to the tree
* at this point, objects are added to the tree but most links between children/sibling/cousins/parents are not setup yet
* we go back to the core, filter some useless objects, setup all links, cpusets and nodesets


Le 01/12/2010 10:38, Wei Lin a écrit :


Thanks for your effort and reply.  

I am not see any wrong output, the confusion is just from the code reading of  “src/topology-x86.c”.

I will trace hwloc to understand its working flow in more detail.

Thanks very much.


Wei Lin


发件人: Brice Goglin [mailto:Brice.Goglin@inria.fr]
发送时间: 2010121 17:24
收件人: Sun Yi
抄送: Wei Lin
主题: Fwd: Re: [hwloc-devel] Intel extended topology enumeration in x2APIC-supported processor


Sorry, I forgot to CC your colleague Sun Yi.


-------- Message original --------


Re: [hwloc-devel] Intel extended topology enumeration in x2APIC-supported processor

Date :

Wed, 01 Dec 2010 10:22:48 +0100

De :

Brice Goglin <Brice.Goglin@inria.fr>

Répondre à :

Hardware locality development list <hwloc-devel@open-mpi.org>

Pour :

Hardware locality development list <hwloc-devel@open-mpi.org>

Hello Wei Lin,

The x86 indeed needs regular updates to support latest processors. But this x86 backend is mostly only useful if you're using an operating system that does not export topology information. If you're using Linux, a recent kernel should already tell hwloc everything you need, and the x86 backend will not be used at all. Do you actually see some wrong lstopo output on such machines? FWIW, we use hwloc on many Westmere-EP and Nehalem-EX machines without problem, and we know SGI has been using it on large UV machines too.

Best regards,

Le 01/12/2010 10:07, Wei Lin a écrit :

Hi, hwloc-devel


     I cannot find the code branch from “src/topology-x86.c “which can support for 32-bit APIC ID and CPUID leaf 0xb of Intel’s new processors.  

So I think current hwLoc cannot support for latest Intel CPU with x2APIC.


Linux kernel 2.6.30 or following version already supports this hardware feature

and uses CPUID leaf 0xb to recognize the topology for more than 1024 logical processors in SGI’s super computer.


I think hwloc could also support this.


The following docs from Intel give details about x2APIC:



   or <<Intel® 64 Architecture Processor Topology Enumeration>>



Wei Lin



hwloc-devel mailing list