2013-10-30 22 views
0

I'm新的MPI世界i'm有点混淆..使用“MPI_Scatter”到“破”在多个部分阵列MPI_Scatter与多台机器

I'm。但是,情况是......它可以在多台机器上运行程序?

我的观点是:我必须使用类似MPI_Send和MPI_Rcv的东西吗?或者Scatter可以做到这一点? MPI_Scatter只能在一台机器上运行?没有找到任何关于此的好的参考..

谢谢! =)

回答

2

MPI_Scatter不管MPI进程位于何处。它具有相同的效果,就好像根进程执行了一个循环MPI_Send操作,并且所有其他进程都执行了一个单独的MPI_Recv。事实上,MPI_Scatter通常在内部使用MPI_SendMPI_Recv来实现,除非网络设备支持某种类型的工作分流(但最终会再次归结为一系列发送和接收事件)。对于其对应的MPI_Gather以及MPI中的任何其他集体通信呼叫也是如此。 MPI是一个抽象的规范 - 它只是定义了通信实体(等级)与MPI环境(API)交互的方式以及交互的结果。它不关心排名是同一节点上的进程,还是在大规模并行超级计算机上运行,​​或者如果他们通过互联网在全球进行通信。这在MPI规范的以下摘录中有最好的描述:

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

+0

谢谢Hristo!真棒回答! – Crasher