有一种方法可以使用MPI在并行进程上共享内存吗?

时间:2017-06-02 13:47:19

标签: c++ parallel-processing mpi

在我的C ++应用程序中,我应该每次都在进程间共享信息。它使用MPI_Send和MPI_Recv运行良好,但在我的工作中,当发送/ recv消息互相发送时,进程形成的“同步障碍”是不必要的。即使使用MPI_Isend等类型,程序中也会出现“同步障碍”。

找到的解决方案是将信息放在文件上(以便在没有消息的情况下共享数据),以便进程可以获取/放置数据,而无需等待另一个数据到达特定的代码点。它也有效,但它会使程序失去时间性能而且这个想法正好相反。

因此,存在一个可以与上面描述的文件应用程序类似地工作的存储器(或方式)空间?无需使进程通过消息进行通信而且需要安全性?

PS:“同步障碍”我指的是该进程必须等待另一个发送/接收信息的时间。

1 个答案:

答案 0 :(得分:1)

是的,可以在不与MPI同步的情况下访问内存。这称为单向通信或RMA(远程内存访问)。称为窗口的存储区域必须明确地用于此,例如,使用MPI_Get。使用System.setProperty("phantomjs.binary.path", "lib/phantomjs.exe"); WebDriver driver = new PhantomJSDriver(); success: function(data) { var jsonDate = data.myDateField; var value = new Date(parseInt(jsonDate.toString().substr(6))); var finalResult = value.getMonth() + 1 + "/" + value.getDate() + "/" + value.getFullYear(); } 等功能可以明确内存访问。请注意,它们中的每一个都是非阻塞的,并且必须显式同步数据移动。总体而言,存在相当多的样板和陷阱,因此请仔细阅读材料。

这是更多detailed introduction