MPICH2在具有两个NUMA节点的机器上

时间:2018-04-25 05:42:41

标签: performance mpi cpu-architecture

我是MPI的新手。我在Linux机器上使用MPICH2,其中包含以下信息:

Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                40
On-line CPU(s) list:   0-39
Thread(s) per core:    2
Core(s) per socket:    10
Socket(s):             2
NUMA node(s):          2
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 85
Model name:            Intel(R) Xeon(R) Silver 4114 CPU @ 2.20GHz
Stepping:              4
CPU MHz:               799.844
CPU max MHz:           3000.0000
CPU min MHz:           800.0000
BogoMIPS:              4400.00
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              1024K
L3 cache:              14080K
NUMA node0 CPU(s):     0-9,20-29
NUMA node1 CPU(s):     10-19,30-39

我的理解是我在这台机器上有2个节点,20个核心和40个线程(即处理器)。它是否正确?如果是的话,我想我应该设置MPICH来产生20个进程(每个物理核心上有一个进程),对吧?但是,当我运行命令mpiexec -n 20 MyProgram时,平均CPU使用率仅为50%。如果我更改为mpiexec -n 40 MyProgram,CPU使用率为100%,但整体性能实际上变差,所以我认为我可能过度指定。

1 个答案:

答案 0 :(得分:0)

CPU使用率是一种误导性指标。 CPU使用率反映了在逻辑CPU上调度某些任务的时间部分。 CPU平均值就是所有逻辑核心的平均值。所以50%的CPU平均值只是意味着每个其他逻辑CPU都有100%的使用率(其他0%)。因此,在每个物理核心始终被利用的情况下,您会观察到这一点。

CPU使用率确实意味着资源利用率。有些工作负载可以从使用超线程中获益,而工作负载则不会。使用比物理内核更少的线程(例如,内存带宽有限)可以更快地实现工作负载。使用比逻辑CPU更多的线程可以更快地完成工作负载(例如,I / O延迟受限)。

始终使用您的效果指标(例如时间)来确定最佳配置。如果您想了解资源利用率,您必须查看许多不同的性能指标,周期,指令,内存带宽,缓存,....