在我的C++应用程序中,我应该每次都在进程间共享信息。使用MPI_Send和MPI_Recv可以很好地工作,但在我的工作中,发送/接收消息时不需要由进程形成的“同步障碍”。即使使用MPI_Isend类型等,程序中也会出现“同步障碍”。有没有办法在使用MPI的并行过程中共享内存?
找到的解决方案是将信息放在文件上(无需消息共享数据),以便进程可以在不等待另一个人到达特定的代码点的情况下获取/放置数据。它也可以工作,但它会使程序失去时间表现,这个想法恰恰相反。
因此,有一个内存空间(或方式),可以工作类似于上面描述的文件应用程序?不需要通过消息使流程进行通信,并且确保安全?
PS:“同步屏障”我的意思是一个进程必须等待另一个发送/ recv信息的时间。
如果所有进程都在一台计算机上,则可以使用POSIX共享内存。 –
@MarkSetchell如果OP限于一台机器,并且不想使用显式消息,那么他不应该首先使用MPI。 – Zulan
@赞兰我同意这一点,所以我没有把它作为答案。但是,如果他已经使用MPI编写了他的应用程序,并且想通过分享一些内存来加速其中的一部分,我的建议可能会有所帮助。 –