【问题标题】:Where MPI locates new processes?MPI 在哪里定位新进程?
【发布时间】:2021-06-07 04:11:23
【问题描述】:

我正在一个具有 36 个 CPU 和 72 个线程(超线程)的节点中使用 mpirun 运行多个进程。当我使用不同的 mpirun 调用(每个调用 -np 2)运行它们时,它们在同一个 cpus 中运行,从而降低了进程的效率。使用 ps 命令,我看到当我发送 7

mpirun -np 2 ./foo

调用,所有进程都在仅 4 个线程中运行。任何人都知道如何解决它?我想将进程分布在所有线程中以最大限度地提高效率。

【问题讨论】:

  • 您使用的是哪个 MPI 库?
  • 打开 MPI 1.10.7
  • 那是一个非常古老的版本,你应该升级......
  • 我知道,但我不是集群管理员 :(
  • 您可以在 $HOME 目录中安装 Open MPI,无需管理员权限

标签: mpi openmpi


【解决方案1】:

Open MPI 的默认设置是将 MPI 任务绑定到使用-np 2 调用的内核。作业之间没有联系,因此所有 MPI 作业都固定到相同的两个核心(01iirc)。

次优的解决方案是避免绑定,并让 Linux 调度程序处理该问题

mpirun --bind-to none -np 2 ./foo

更好的解决方案是使用 SLURM 等资源管理器,配置 cpuset 或类似的,以便将所有作业分配到不相交的两个核心集上。

【讨论】:

    猜你喜欢
    • 2014-01-11
    • 2022-01-11
    • 2016-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-22
    相关资源
    最近更新 更多