>>> In your desired ordering you have rank 0 on (socket,core) (0,0) and
>>> rank 1 on (0,2). Is there an architectural reason for that? Meaning
>>> are cores 0 and 1 hardware threads in the same core, or is there a
>>> cache level (say L2 or L3) connecting cores 0 and 1 separate from
>>> cores 2 and 3?
My thinking was that each MPI rank will be running 2 OpenMP threads and that
there might be some benefit to having those threads execute on cores 0 and 1
because those cores might share some level of the memory hierarchy. No
hardware threading is being used.
>>> hwloc's lstopo should give you that information if you don't have that
>>> information handy.
Here you go, first likwid output then hwloc, just for the first socket.
likwid output:
*************************************************************
Graphical:
*************************************************************
Socket 0:
+-----------------------------------------------------------------------------------------------------+
| +-------+ +-------+ +-------+ +-------+ +-------+ +-------+ +-------+
+-------+ +-------+ +-------+ |
| | 0 | | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7
| | 8 | | 9 | |
| +-------+ +-------+ +-------+ +-------+ +-------+ +-------+ +-------+
+-------+ +-------+ +-------+ |
| +-----------------+ +-----------------+ +-----------------+
+-----------------+ +-----------------+ |
| | 32kB | | 32kB | | 32kB | | 32kB
| | 32kB | |
| +-----------------+ +-----------------+ +-----------------+
+-----------------+ +-----------------+ |
| +-----------------+ +-----------------+ +-----------------+
+-----------------+ +-----------------+ |
| | 256kB | | 256kB | | 256kB | | 256kB
| | 256kB | |
| +-----------------+ +-----------------+ +-----------------+
+-----------------+ +-----------------+ |
|
+-------------------------------------------------------------------------------------------------+
|
| | 30MB
| |
|
+-------------------------------------------------------------------------------------------------+
|
+-----------------------------------------------------------------------------------------------------+
hwloc output:
Machine (512GB)
NUMANode L#0 (P#0 64GB) + Socket L#0 + L3 L#0 (30MB)
L2 L#0 (256KB) + L1d L#0 (32KB) + L1i L#0 (32KB) + Core L#0 + PU L#0 (P#0)
L2 L#1 (256KB) + L1d L#1 (32KB) + L1i L#1 (32KB) + Core L#1 + PU L#1 (P#1)
L2 L#2 (256KB) + L1d L#2 (32KB) + L1i L#2 (32KB) + Core L#2 + PU L#2 (P#2)
L2 L#3 (256KB) + L1d L#3 (32KB) + L1i L#3 (32KB) + Core L#3 + PU L#3 (P#3)
L2 L#4 (256KB) + L1d L#4 (32KB) + L1i L#4 (32KB) + Core L#4 + PU L#4 (P#4)
L2 L#5 (256KB) + L1d L#5 (32KB) + L1i L#5 (32KB) + Core L#5 + PU L#5 (P#5)
L2 L#6 (256KB) + L1d L#6 (32KB) + L1i L#6 (32KB) + Core L#6 + PU L#6 (P#6)
L2 L#7 (256KB) + L1d L#7 (32KB) + L1i L#7 (32KB) + Core L#7 + PU L#7 (P#7)
L2 L#8 (256KB) + L1d L#8 (32KB) + L1i L#8 (32KB) + Core L#8 + PU L#8 (P#8)
L2 L#9 (256KB) + L1d L#9 (32KB) + L1i L#9 (32KB) + Core L#9 + PU L#9 (P#9)
Thanks again