gpt4 book ai didi

c++ - 有没有办法使用 MPI 在并行进程上共享内存?

转载 作者:行者123 更新时间:2023-11-28 05:07:33 25 4
gpt4 key购买 nike

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

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

因此,有一个内存空间(或方式)可以像上面描述的文件应用程序一样工作吗?不需要让进程通过消息进行通信并且安全吗?

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

最佳答案

是的,可以在不与 MPI 同步的情况下访问内存。这称为单向通信或 RMA(远程内存访问)。内存区域,称为窗口,必须显式地提供给它,例如使用 MPI_Win_create。使用 MPI_PutMPI_Get 等函数可以显式访问内存。请注意,它们中的每一个都是非阻塞的,并且数据移动必须显式同步。总的来说,有很多样板和陷阱,所以请尽量仔细阅读 Material 。

这里有更多 detailed introduction .

关于c++ - 有没有办法使用 MPI 在并行进程上共享内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44330509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com