MPI在哪里找到新流程?

MPI在哪里找到新流程?,mpi,openmpi,Mpi,Openmpi,我在一个有36个CPU和72个线程(超线程)的节点上运行多个进程。当我使用不同的mpirun调用(每个调用-np2)运行它们时,它们在同一个CPU中运行,降低了进程的效率。使用ps命令,当我发送7 mpirun -np 2 ./foo 调用时,所有进程仅在4个线程中运行。有人知道怎么解决吗?我希望将进程分布到所有线程以最大限度地提高效率。Open MPI的默认设置是将MPI任务绑定到使用-np 2调用的内核。作业之间没有连接,因此所有MPI作业都固定到相同的两个核心(0和1iirc) 一个次优

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

mpirun -np 2 ./foo

调用时,所有进程仅在4个线程中运行。有人知道怎么解决吗?我希望将进程分布到所有线程以最大限度地提高效率。

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

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

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

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

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