0

我是 MPI 世界的新手,我有点困惑..

我正在使用“MPI_Scatter”来“打破”多个部分的数组。但情况是......它可以在多台机器上运行程序吗?

我的观点是:我必须使用 MPI_Send 和 MPI_Rcv 之类的东西吗?或者 Scatter 可以做到这一点?MPI_Scatter 只能在单台机器上工作?找不到关于这个的任何好的参考..

谢谢!=)

4

1 回答 1

2

MPI_Scatter无论 MPI 进程位于何处,都可以正常工作。它的效果就像根进程执行了一个MPI_Send操作循环而所有其他进程都执行了一个MPI_Recv. 事实上,MPI_Scatter通常使用内部实现MPI_SendMPI_Recv除非网络设备支持某种工作卸载(但最终它再次归结为一系列类似发送和接收的事件)。对于它的对应部分MPI_Gather以及 MPI 中的任何其他集体通信调用也是如此。

MPI 是一个抽象规范——它只定义了通信实体(等级)与 MPI 环境(API)交互的方式以及交互的结果。它不关心等级是否是同一节点上的进程,或者它们是否在大规模并行的超级计算机上运行,​​或者它们是否通过互联网在全球范围内进行通信。这在 MPI 规范的以下摘录中得到了最好的描述:

消息传递范式的吸引力至少部分源于其广泛的可移植性。以这种方式表达的程序可以在分布式内存多处理器、工作站网络以及所有这些的组合上运行。此外,包括多核处理器和混合架构的共享内存实现也是可能的。该范例不会因结合共享和分布式内存视图的架构或网络速度的提高而过时。因此,在各种各样的机器上实施这个标准应该是可能和有用的,包括那些由通过通信网络连接的其他机器(并行或不并行)的集合组成的“机器”。

于 2013-10-30T08:46:28.130 回答