c – 使用MPI在多个核上运行

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

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

>是否可以提交作业以在同一节点上的多个核心或MPI运行命令行中的多个节点上运行?如果是这样的话?
>上述内容是否需要在代码中进行任何特殊注释/设置?我从阅读一些文献中了解到,核心之间的通信时间可能与处理器之间的通信时间不同,因此需要考虑如何分配问题……但对于这个问题?还需要估算什么?
>最后,传输的数据量有限制吗?总线可以发送/接收的数据量是否有限制?缓存有限制吗?

谢谢!

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

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

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

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

点赞