微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MPI 在哪里定位新进程?

如何解决MPI 在哪里定位新进程?

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

mpirun -np 2 ./foo

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

解决方法

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。