我一直在使用下面的命令好奇如何指定核心数量为MPI,以获得最快的科学计算
nohup mpirun -np N -x OMP_NUM_THREADS=M program.exe <input> output &
运行一些科学的程序包连同MPI其中的价值N和M取决于我的机器的物理CPU内核。例如,我的机器具有这样
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 24
On-line CPU(s) list: 0-23
Thread(s) per core: 2
Core(s) per socket: 6
Socket(s): 2
NUMA node(s): 2
Vendor ID: GenuineIntel
CPU family: 6
Model: 45
Model name: Intel(R) Xeon(R) CPU E5-2440 0 @ 2.40GHz
Stepping: 7
说明书在这种情况下,我第一次尝试用N = 24和M = 1的设置,所以在计算运行速度非常慢。然后我将N和M分别改为12和2。所以我发现后者显然为我提供了最快的计算。
我想知道的是为什么我将N & M的12和2提供更多的性能比第一种情况下高?
尝试N = 2和M = 12,我认为它给出了最快的代码。为什么?因为OpenMP是为共享内存而设计的,而MPI则是为分布式内存而设计的。 –