wounded in the line of duty
http://www.open-mpi.org/software/hwloc/v1.0/
./configure && make && ./utils/lstopo
On a dual socket nehalem with HT/SMT on lstopo gives (phys=X is the linux processor number): $ ./hwloc-1.0/utils/lstopo Machine (24GB) NUMANode #0 (phys=0 12GB) + Socket #0 + L3 #0 (8192KB) L2 #0 (256KB) + L1 #0 (32KB) + Core #0 PU #0 (phys=0) PU #1 (phys=8) L2 #1 (256KB) + L1 #1 (32KB) + Core #1 PU #2 (phys=1) PU #3 (phys=9) L2 #2 (256KB) + L1 #2 (32KB) + Core #2 PU #4 (phys=2) PU #5 (phys=10) L2 #3 (256KB) + L1 #3 (32KB) + Core #3 PU #6 (phys=3) PU #7 (phys=11) NUMANode #1 (phys=1 12GB) + Socket #1 + L3 #1 (8192KB) L2 #4 (256KB) + L1 #4 (32KB) + Core #4 PU #8 (phys=4) PU #9 (phys=12) L2 #5 (256KB) + L1 #5 (32KB) + Core #5 PU #10 (phys=5) PU #11 (phys=13) L2 #6 (256KB) + L1 #6 (32KB) + Core #6 PU #12 (phys=6) PU #13 (phys=14) L2 #7 (256KB) + L1 #7 (32KB) + Core #7 PU #14 (phys=7) PU #15 (phys=15)
$ ./hwloc-1.0/utils/lstopo Machine (24GB) NUMANode #0 (phys=0 12GB) + Socket #0 + L3 #0 (8192KB) L2 #0 (256KB) + L1 #0 (32KB) + Core #0 PU #0 (phys=0) PU #1 (phys=8) L2 #1 (256KB) + L1 #1 (32KB) + Core #1 PU #2 (phys=1) PU #3 (phys=9) L2 #2 (256KB) + L1 #2 (32KB) + Core #2 PU #4 (phys=2) PU #5 (phys=10) L2 #3 (256KB) + L1 #3 (32KB) + Core #3 PU #6 (phys=3) PU #7 (phys=11) NUMANode #1 (phys=1 12GB) + Socket #1 + L3 #1 (8192KB) L2 #4 (256KB) + L1 #4 (32KB) + Core #4 PU #8 (phys=4) PU #9 (phys=12) L2 #5 (256KB) + L1 #5 (32KB) + Core #5 PU #10 (phys=5) PU #11 (phys=13) L2 #6 (256KB) + L1 #6 (32KB) + Core #6 PU #12 (phys=6) PU #13 (phys=14) L2 #7 (256KB) + L1 #7 (32KB) + Core #7 PU #14 (phys=7) PU #15 (phys=15)
More information about formatting options
Nice tool that shows you what/where cpuX is
http://www.open-mpi.org/software/hwloc/v1.0/
./configure && make && ./utils/lstopoOn a dual socket nehalem with HT/SMT on lstopo gives (phys=X is the linux processor number):
$ ./hwloc-1.0/utils/lstopo
Machine (24GB)
NUMANode #0 (phys=0 12GB) + Socket #0 + L3 #0 (8192KB)
L2 #0 (256KB) + L1 #0 (32KB) + Core #0
PU #0 (phys=0)
PU #1 (phys=8)
L2 #1 (256KB) + L1 #1 (32KB) + Core #1
PU #2 (phys=1)
PU #3 (phys=9)
L2 #2 (256KB) + L1 #2 (32KB) + Core #2
PU #4 (phys=2)
PU #5 (phys=10)
L2 #3 (256KB) + L1 #3 (32KB) + Core #3
PU #6 (phys=3)
PU #7 (phys=11)
NUMANode #1 (phys=1 12GB) + Socket #1 + L3 #1 (8192KB)
L2 #4 (256KB) + L1 #4 (32KB) + Core #4
PU #8 (phys=4)
PU #9 (phys=12)
L2 #5 (256KB) + L1 #5 (32KB) + Core #5
PU #10 (phys=5)
PU #11 (phys=13)
L2 #6 (256KB) + L1 #6 (32KB) + Core #6
PU #12 (phys=6)
PU #13 (phys=14)
L2 #7 (256KB) + L1 #7 (32KB) + Core #7
PU #14 (phys=7)
PU #15 (phys=15)