gpt4 book ai didi

algorithm - MPI:确保独占访问共享内存 (RMA)

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:00:10 25 4
gpt4 key购买 nike

我想知道哪种方法是确保在 MPI 中的 n 个进程之间独占访问共享资源(例如内存窗口)的最佳方法。我试过 MPI_Win_lock 和 MPI_Win_fence 但它们似乎没有按预期工作,即:我可以看到多个进程同时进入临界区(MPI_Win_lock 和 MPI_Win_unlock 之间的代码,其中包含 MPI_Get 和/或 MPI_Put)。

非常感谢您的建议。谢谢。

最佳答案

在 MPI 2 中,您无法真正进行原子操作。这是在 MPI 3 中使用 MPI_Fetch_and_op 引入的。这就是您的关键数据被修改的原因。

此外,请注意“MPI_Win_lock”。如所述here :

The name of this routine is misleading. In particular, this routine need not block, except when the target process is the calling process.

实际的阻塞过程是MPI_Win_unlock,意思是只有从这个过程返回后你才能确定putget的值是正确的。也许这更好地描述了here :

MPI passive target operations are organized into access epochs that are bracketed by MPI Win lock and MPI Win unlock calls. Clever MPI implementations [10] will combine all the data movement operations (puts, gets, and accumulates) into one network transaction that occurs at the unlock.

同一份文档也可以为您的问题提供解决方案,即关键数据不是以原子方式写入的。它通过使用 mutex 来实现这一点,这是一种确保在同一时间只有一个进程可以访问数据的机制。

我建议你阅读这篇文档:他们提出的解决方案并不难实现。

关于algorithm - MPI:确保独占访问共享内存 (RMA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37236499/

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