在我的C++應用程序中,我應該每次都在進程間共享信息。使用MPI_Send和MPI_Recv可以很好地工作,但在我的工作中,發送/接收消息時不需要由進程形成的「同步障礙」。即使使用MPI_Isend類型等,程序中也會出現「同步障礙」。有沒有辦法在使用MPI的並行過程中共享內存?
找到的解決方案是將信息放在文件上(無需消息共享數據),以便進程可以在不等待另一個人到達特定的代碼點的情況下獲取/放置數據。它也可以工作,但它會使程序失去時間表現,這個想法恰恰相反。
因此,有一個內存空間(或方式),可以工作類似於上面描述的文件應用程序?不需要通過消息使流程進行通信,並且確保安全?
PS:「同步屏障」我的意思是一個進程必須等待另一個發送/ recv信息的時間。
如果所有進程都在一臺計算機上,則可以使用POSIX共享內存。 –
@MarkSetchell如果OP限於一臺機器,並且不想使用顯式消息,那麼他不應該首先使用MPI。 – Zulan
@贊蘭我同意這一點,所以我沒有把它作爲答案。但是,如果他已經使用MPI編寫了他的應用程序,並且想通過分享一些內存來加速其中的一部分,我的建議可能會有所幫助。 –