跳过主要导航

单方面交流:它如何工作?

在本文中,我们将指出单面通信和双向通信之间的差异。同时,您将学习一些新术语...
©HLRS
在本文中,我们将指出单面通信和双向通信之间的差异。同时,您将学习一些单方面通信中使用的新术语。

让我们简要浏览一下双面交流,然后再查看单方面的交流:

双面交流您有发件人和接收器。这两个过程都是通信中的积极同行。双方都必须致电通信例程:发送者呼叫mpi_send和接收过程电话mpi_receive。每个过程都可以充当发件人和接收器。

发件人和接收器

图1

单方面交流只有一个过程是活动的:所谓的起源过程。在下面的图中,您可以看到进程0采取行动作为原点过程。和mpi_put进程0将数据发送到所谓的目标过程,进程1,接收此数据而无需调用任何接收例程。这意味着执行PUT操作类似于由原点过程执行发送的执行以及目标过程接收的匹配。所有参数均由原始过程执行的一个呼叫提供。

起源和目标过程

图2

如果原点过程想从目标过程中获取数据,则调用mpi_get。它的工作类似mpi_put,除了数据传输的方向相反。mpi_get因此,等效于执行目标过程的发送以及原始过程接收的相应接收。

mpi_putmpi_get被称为远程内存访问(RMA)操作。

在上面的图中,您可以看到新术语窗户。窗口是一个可通过其他进程看到和访问的内存空间。在课程的稍后,我们将解释如何在通信器中创建和分配Windows。

通常所有过程既是原点和目标

每个过程都可以充当原始过程和目标过程。他们的互动显示在以下图的顺序,为您给您一个单方面操作如何嵌入MPI流程的第一印象:

四个MPI过程

图3

如前所述,所有过程既可以原点又是目标。在这里,我们看到一个具有四个MPI过程的示例。

每个MPI过程的内存都可以完全保护从外部访问:也就是说,从其他MPI过程中。

双面交流

图4

这是双面通信的示例(正常mpi_sendmpi_recv)。一个过程调用mpi_send,从本地发送缓冲区读取数据。相应的mpi_recv在另一个过程中,然后将数据存储在本地接收缓冲区中。MPI库的工作是将数据从发送过程传输到接收过程。

单方面交流:Windown Creation

图5

现在,我们将研究单方面的交流:

每个过程都必须指定一个可以从外部访问的内存部分。集体呼吁mpi_win_create,所有过程使其窗户可以从外部访问。

单面通信:mpi_put和mpi_get

图6

在此示例中,我们可以使用mpi_put将来自本地发送缓冲区的数据存储到远程进程的窗口中。或者我们可以使用mpi_get从远程窗口获取数据,然后将其存储到本地缓冲区中。

您可以看到目标窗口过程中没有远程内存访问调用。

原点是唯一必须调用RMA例程的过程(mpi_putmpi_get)。

窗户是窥视孔进入过程内存的
图7

从这个意义上讲,窗口是窥视物进入MPI进程的内存。

使用RMA例程,原始过程可以将数据放入远程窗口中,或者可以从远程窗口中获取数据。

祝贺那些学到了一些新术语的人:起源过程,,,,目标过程并且窗户

©HLRS
本文来自免费的在线免费

单面通信和MPI共享内存界面

由...制作
FutureLearn-终身学习

我们的目的是改变接受教育的机会。

我们提供来自世界各地的大学和文化机构的各种课程。这些一次是一次交付的一步,并且可以在移动,平板电脑和台式机上访问,因此您可以适合自己的生活。

我们认为,学习应该是一种愉快的社交经验,因此我们的课程为您提供了与他人一起讨论的机会,帮助您做出新的发现并形成新的想法。
您可以通过订阅我们无限制的包裹来解锁新的机会,以无限制地访问数百种在线短课程。电竞博彩app有什么通过顶尖的大学和组织建立知识。dota2竞猜吧

了解有关FutureLearn如何转化接受教育的更多信息