使用MPI在多个核上运行

时间:2011-05-19 15:12:06

标签: c++ mpi cpu-cores

我使用present命令提交MPI作业:mpirun -np no.of processors filename

我的理解是上面的命令允许我提交到4个通过MPI进行通信的独立处理器。但是,在我们的设置中,每个处理器都有4个内核未被利用 。 我的问题如下:

  1. 是否可以提交作业以在同一节点上的多个核心或MPI运行命令行中的多个节点上运行?如果是这样的话?

  2. 以上是否需要在代码中进行任何特殊注释/设置?我从阅读一些文献中了解到,核心之间的通信时间可能与处理器之间的通信时间不同,因此需要考虑如何分配问题......但对于这个问题?还需要估算什么呢?

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

  4. 谢谢!

1 个答案:

答案 0 :(得分:2)

因此,1是关于启动流程的问题,2 + 3是关于基本上是性能调优的问题。性能调优可能涉及对底层代码的大量工作,但您不会需要修改一行代码来执行此操作。

我从您的第一个问题中了解到,您希望修改已启动的MPI流程的分布。这样做必然超出标准,因为它依赖于操作系统和平台;所以每个MPI实现都有不同的方法来做到这一点。最新版本的OpenMPIMPICH2允许您指定处理器的最终位置,因此您可以为每个插槽指定两个处理器等。

您无需修改​​代码即可使用,但根据核心发行版存在性能问题。一般来说很难说清楚这一点,因为它取决于你的通信模式,但是,处理器越“接近”,通信就越快。

在MPI任务之间来回传输的数据总量没有明确限制,但是,有带宽限制(每条消息有限制)。缓存大小就是它。