【发布时间】:2021-05-25 17:51:14
【问题描述】:
我对同一 python 命令的多次启动如何绑定到 NUMA Xeon 机器上的核心感到困惑。
我读到OMP_NUM_THREADS env var 设置了为numactl 进程启动的线程数。因此,如果我在超线程 HT 机器(下面的 lscpu 输出)上运行 numactl --physcpubind=4-7 --membind=0 python -u test.py 和 OMP_NUM_THREADS=4,它会将这个 numactl 进程限制为 4 个线程。
但是由于机器有HT,我不清楚上面的4-7是4个物理还是4个逻辑。
-
如何找到
0-23,96-119中的哪些 numa-node-0 内核是物理的,哪些是逻辑的?96-119都是合乎逻辑的还是穿插的? -
如果
4-7都是物理内核,那么开启 HT 后将只需要 2 个物理内核,那么另外 2 个会发生什么? -
在将线程绑定到物理内核时,OpenMP 库在哪里被调用?
(根据我有限的理解,我可以在 sh shell 中使用不同的 numactl 绑定和 OMP_NUM_THREADS 启动命令 python main.py 20 次,即使我没有明确使用 MPI lib任何地方,对吗?)
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
Address sizes: 46 bits physical, 48 bits virtual
CPU(s): 192
On-line CPU(s) list: 0-191
Thread(s) per core: 2
Core(s) per socket: 48
Socket(s): 2
NUMA node(s): 4
Vendor ID: GenuineIntel
CPU family: 6
Model: 85
Model name: Intel(R) Xeon(R) Platinum 9242 CPU @ 2.30GHz
Stepping: 7
Frequency boost: enabled
CPU MHz: 1000.026
CPU max MHz: 2301,0000
CPU min MHz: 1000,0000
BogoMIPS: 4600.00
L1d cache: 3 MiB
L1i cache: 3 MiB
L2 cache: 96 MiB
L3 cache: 143 MiB
NUMA node0 CPU(s): 0-23,96-119
NUMA node1 CPU(s): 24-47,120-143
NUMA node2 CPU(s): 48-71,144-167
NUMA node3 CPU(s): 72-95,168-191
【问题讨论】:
标签: parallel-processing openmp cpu intel numactl