有人能提出一种理解MPI工作原理的好方法吗?

有人能提出一种理解MPI工作原理的好方法吗?,mpi,Mpi,有人能提出一种理解MPI工作原理的好方法吗?如果您熟悉线程,那么您可以将每个节点视为一个线程(在一定程度上) 您向一个节点发送一条消息(work),它执行一些工作,然后返回一些结果 线程和MPI之间的类似行为: 它们都涉及到对一项工作进行分区,并分别对其进行处理 当涉及到更多的节点/线程时,它们都会有开销,MPI开销比线程更大,在节点周围传递消息会导致很大的开销。如果工作没有仔细分区,您可能会得到处理作业所需的时间传递消息>计算时间 差异行为: 它们有不同的内存模型,每个MPI节点不与其他节点共

有人能提出一种理解MPI工作原理的好方法吗?

如果您熟悉线程,那么您可以将每个节点视为一个线程(在一定程度上)

您向一个节点发送一条消息(work),它执行一些工作,然后返回一些结果

线程和MPI之间的类似行为:

它们都涉及到对一项工作进行分区,并分别对其进行处理

当涉及到更多的节点/线程时,它们都会有开销,MPI开销比线程更大,在节点周围传递消息会导致很大的开销。如果工作没有仔细分区,您可能会得到处理作业所需的时间传递消息>计算时间

差异行为:


它们有不同的内存模型,每个MPI节点不与其他节点共享内存,除非您向其发送一些信息,否则对世界其他部分一无所知。

在这里您可以找到一些学习材料

并行编程是“内在”复杂(与“偶然”相反)的主题之一复杂性,正如弗雷德·布鲁克斯所指出的)


我是彼得·帕切科用的。本书很好地概述了基本MPI主题、可用API和并行程序构造的常见模式

一个很好的开始方式是阅读相应的维基百科文章:如果您遇到了一些特定的问题或您不理解的一些概念,请询问有关StackOverflow的问题。您所说的“MPI如何工作”是什么意思?您是否对逻辑方法感兴趣(例如,什么是通信者,如何定义自定义数据类型等),或者您是否对实现细节感兴趣?