Open MPI logo

Hardware Locality Users' Mailing List Archives

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

Subject: [hwloc-users] Thread core affinity
From: Gabriele Fatigati (g.fatigati_at_[hidden])
Date: 2011-07-29 06:42:19


Dear hwloc users,

I have some questions about thread core affinity managed by hwloc.

1) A simple hwloc-hello.c program in the manual on my machine give me the
follow results:

*** Objects at level 0
Index 0: Machine#0(47GB)
*** Objects at level 1
Index 0: NUMANode#0(24GB)
Index 1: NUMANode#1(24GB)
*** Objects at level 2
Index 0: Socket#0
Index 1: Socket#1
*** Objects at level 3
Index 0: L3(12MB)
Index 1: L3(12MB)
*** Objects at level 4
Index 0: L2(256KB)
Index 1: L2(256KB)
Index 2: L2(256KB)
Index 3: L2(256KB)
Index 4: L2(256KB)
Index 5: L2(256KB)
Index 6: L2(256KB)
Index 7: L2(256KB)
Index 8: L2(256KB)
Index 9: L2(256KB)
Index 10: L2(256KB)
Index 11: L2(256KB)
*** Objects at level 5
Index 0: L1(32KB)
Index 1: L1(32KB)
Index 2: L1(32KB)
Index 3: L1(32KB)
Index 4: L1(32KB)
Index 5: L1(32KB)
Index 6: L1(32KB)
Index 7: L1(32KB)
Index 8: L1(32KB)
Index 9: L1(32KB)
Index 10: L1(32KB)
Index 11: L1(32KB)
*** Objects at level 6
Index 0: Core#0
Index 1: Core#1
Index 2: Core#2
Index 3: Core#8
Index 4: Core#9
Index 5: Core#10
Index 6: Core#0
Index 7: Core#1
Index 8: Core#2
Index 9: Core#8
Index 10: Core#9
Index 11: Core#10
*** Objects at level 7
Index 0: PU#0
Index 1: PU#1
Index 2: PU#2
Index 3: PU#3
Index 4: PU#4
Index 5: PU#5
Index 6: PU#6
Index 7: PU#7
Index 8: PU#8
Index 9: PU#9
Index 10: PU#10
Index 11: PU#11

I'm so confused. I see couples of cores with the same core id! ( Core#8 for
example) How is it possible?

2) logical Core id and Physical core id maybe differents. If i want to be
sure that id 0 and id 1 are physically near, i have to use core id or PU id?
PU ids are ever physically near?

3) Binding a thread on a core, what's the difference
between hwloc_set_cpubind() and hwloc_set_thread_cpubind()? More in depth,
my code example works well with:

hwloc_set_cpubind(topology, set, HWLOC_CPUBIND_THREAD);

and crash with:

hwloc_set_thread_cpubind(topology, tid, set, HWLOC_CPUBIND_THREAD);

Thanks in forward.

-- 
Ing. Gabriele Fatigati
Parallel programmer
CINECA Systems & Tecnologies Department
Supercomputing Group
Via Magnanelli 6/3, Casalecchio di Reno (BO) Italy
www.cineca.it                    Tel:   +39 051 6171722
g.fatigati [AT] cineca.it