【问题标题】:How to run MPI-enabled LAMMPS on Mac mini with M1 chip?如何在带有 M1 芯片的 Mac mini 上运行支持 MPI 的 LAMMPS?
【发布时间】:2021-04-10 15:11:51
【问题描述】:

最近我正在我的 M1 Mac mini 上进行一些分子动力学模拟 (LAMMPS)。

对于一个简单的任务,我使用命令:

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

有人知道是什么原因吗?这与 Open MPI 有关吗? (如果不是Mac预装的,我后面就没装了)

【问题讨论】:

  • 苹果官网上对M1芯片的描述如下:8核CPU,4个性能核心,4个效率核心; 8核GPU; 16 核神经引擎
  • 向 MPI 作业添加慢速内核通常会导致整体效率下降,除非它是适应计算环境的“工作包”类型的作业。 LAMMPS 不适合在具有不同性能特征的 CPU 上运行。

标签: macos mpi openmpi apple-m1 lammps


【解决方案1】:

LAMMPS 通过执行域分解来分配工作。例如,通过空间分解,模拟体积被切割成盒子,特定盒子中的所有粒子都被分配到某个 MPI 等级进行处理。因为分子动力学中的积分是全局同步操作,所以每个步骤只有在所有 MPI 等级都完成后才能完成。因此,完成一个积分步骤所花费的时间等于最慢 MPI 等级完成其分配的框所花费的时间。

M1 是一种类似于 ARM DynamIQ(big.LITTLE 的继任者)的架构,包含速度快但耗电的内核(Firestorm 内核)和速度慢但能效高的内核(Icestorm 核心)。 Mac Mini 中的 M1 芯片每种类型有四个。由于 macOS 不提供明确的 CPU 亲和性,MPI 库只是启动给定数量的等级,并由操作系统在可用内核上尽可能高效地调度它们。最多有四个 MPI 等级,它们最终都使用自己的 Firestorm 核心。一旦你超过了四个 MPI 等级,有些人要么落在慢速 Icestorm 核心之一上,要么会与其他等级分时共享一个快速核心。在这两种情况下,至少有一个排名会比其他排名慢得多,因此整体性能会受到影响。

另外需要注意的是,现代 CPU 会根据热条件改变其核心频率。如果只加载一个内核,它可能会被提升到超过其标称频率。当加载更多内核时,会产生更多热量,并且内核的频率提升不会像前一种情况那样高。因此,从 1 核到 2 核再到 4 核不会给你带来线性加速,即使问题是令人尴尬的并行。

另外,请记住,使用的域分解类型会对并行性能产生巨大影响。例如,在空间分解中,如果原子在子域之间分布不均,或者它们以不均匀的方式在它们之间移动,则会出现负载不平衡,并且加速会再次受到影响。

【讨论】:

  • 你能在 M1 上测试这个吗?我想知道一个 8 任务 MPI 作业是在 4 个大核 + 4 个小核上运行,还是只是分时 4 个大核。
  • @GillesGouaillardet 我无法使用带有 M1 的 Mac。
猜你喜欢
  • 1970-01-01
  • 2021-04-30
  • 2022-09-25
  • 1970-01-01
  • 1970-01-01
  • 2022-11-11
  • 1970-01-01
  • 2021-08-16
  • 1970-01-01
相关资源
最近更新 更多