我认为这个问题在这里问是无关紧要的。却无法自拔。
假设我有一个包含 100 个节点的集群,每个节点有 16 个核心。
我有一个 mpi 应用程序,其通信模式已知,并且我也知道集群拓扑(即节点之间的跳跃距离)。
现在我知道了减少网络争用的节点映射过程。例如:进程到节点的映射是10->20,30->90。
如何将排名 10 的进程映射到节点 20?
请帮助我。
如果您不受任何类型的排队系统的限制,您可以通过创建自己的队列来控制排名到节点的映射machinefile
.
例如如果文件my_machine_file
有以下1600行
node001
node002
node003
....
node100
node001
node002
node003
....
node100
...
[repeat 13 more times]
...
node001
node002
node003
....
node100
它将对应于映射
0-> node001, 1 -> node002, ... 99 -> node100, 100 -> node001, ...
你应该运行你的应用程序
mpirun -machinefile my_machine_file -n 1600 my_app
当您的应用程序需要少于 1600 个进程时,您可以相应地编辑机器文件。
请记住,集群管理员可能已经根据互连拓扑对节点进行了编号。然而,有报告称,通过仔细利用集群拓扑,性能会显着提高(10%-20%)。 (参考文献如下)。
Note:启动 MPI 程序mpirun
既不标准化也不可移植。然而,这里的问题显然与特定的计算集群和特定的实现(OpenMPI)相关,并且不需要便携式解决方案。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)