最近,我正在做一些分子动力学模拟(LAMMPS)在我的M1 Mac迷你。
对于一个简单的任务,我使用命令:
lmp_serial -in run.in.npt我相信这意味着单CPU计算。我花了4分45秒的时间。然后我尝试使用4个核心运行:
mpirun -np 4 lmp_mpi -in run.in.npt我花了1分51秒。
但当我使用8个核心时:
mpirun -np 8 lmp_mpi -in run.in.npt它没有跑得更快,我花了3分38秒。
作为比较,然后我尝试了2个核心和6个核心,我在这里总结:
1 core : 4 min 45 second
2 cores : 2 min 55 second
4 cores : 1 min 51 second
6 cores : 4 min 45 second
8 cores : 3 min 38 second谁知道原因是什么?这与开放MPI有关吗?(如果它不是预装在Mac中的话,我以后就不会安装了)
发布于 2021-01-05 11:27:32
LAMMPS通过执行域分解来分配工作。例如,通过空间分解,将模拟体积切割成盒,并将特定盒中的所有粒子分配到某个MPI级别进行处理。因为分子动力学的整合是一个全局同步的操作,所以每个步骤只有在所有MPI级都完成时才能完成。因此,完成集成步骤所需的时间等于最慢的MPI级别完成其指定框(Es)的时间。
M1是一种类似于ARM DynamIQ (big.LITTLE的继承者)的体系结构,它既封装了速度快但耗电量大的内核(Firestorm核),又封装了速度慢但功耗高的内核(Icestorm核)。Mini中的M1芯片有四种类型。由于macOS不提供显式的CPU亲和力,所以MPI库只是启动给定的级别,并由操作系统在可用的核心上尽可能高效地调度它们。最多有四个MPI级别,他们最终都在自己的火暴核心上。一旦你超过了四个MPI等级,有些会降落在一个缓慢的冰风暴核心,或者分时度假是一个快速核心与其他等级。在这两种情况下,至少有一个级别将比其他级别慢得多,因此总体性能将受到影响。
另外要注意的是,现代CPU根据热环境的不同而改变其核心频率。如果只有一个核心被加载,它可能会被提升的方式超过其标称频率。当更多的堆芯被加载时,产生更多的热量,并且堆芯在频率上不会像前一种情况那样得到很高的提升。因此,从1到2到4核不会给你线性速度,即使问题是令人尴尬的平行。
此外,请记住,所使用的域分解类型可能会对并行性能产生巨大影响。例如,在空间分解中,如果原子在子域之间的分布不均匀,或者它们以不均匀的方式在它们之间移动,就会出现负载不平衡,并且会再次受到加速的影响。
https://stackoverflow.com/questions/65569236
复制相似问题