使用MPI在多个核心上运行

6

我使用present命令来提交MPI作业:mpirun -np 处理器数量 文件名

我的理解是上述命令可以让我向通过MPI通信的4个独立处理器提交作业。但是,在我们的设置中,每个处理器都有4个未被利用的内核。

我有以下问题:

  1. 是否可以从MPI运行命令行提交在同一节点上或多个节点上运行的多个内核的作业?如果可以,如何实现?

  2. 上述操作是否需要代码中的特殊注释/设置?我了解从阅读一些文献中得知,内核之间的通信时间可能与处理器之间的不同,因此需要考虑如何分配问题...但对于这个问题,还需要估计什么?

  3. 最后,数据传输量是否有限制?总线可以发送/接收多少数据?缓存是否有限制?

谢谢!

1个回答

1
1是有关启动进程的问题,而2+3基本上是有关性能调优的问题。性能调优可能涉及对底层代码的大量工作,但您不需要修改任何一行代码来完成这些操作。
从你的第一个问题中我所理解的是,您想要修改MPI进程的分布。这必然是非标准的,因为它取决于操作系统和平台;因此,每个MPI实现都会有不同的方法来做到这一点。最近版本的OpenMPIMPICH2允许您指定处理器的位置,因此您可以指定每个插槽两个处理器等等。
您无需修改代码即可完成此操作,但是根据核心分发情况存在性能问题。由于它取决于您的通信模式,因此很难就此进行一般性的说明,但是是的,处理器越“接近”,通信速度通常就越快。
MPI任务之间来回传输的数据总量没有明确的限制,但是有带宽限制(以及每个消息的限制)。缓存大小就是它所表示的大小。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接