MPI创建的进程的共享内存访问控制机制

时间:2013-06-13 07:45:30

标签: c linux mpi shared-memory semaphore

我有一个由多个进程使用的共享内存,这些进程是使用MPI创建的。

现在我需要一种机制来控制这个共享内存的访问。

我知道可以使用named semaphoreflock机制来做这个,但只是想知道MPI是否为共享内存使用提供了任何特殊的锁定机制?

我在Linux下工作。

2 个答案:

答案 0 :(得分:2)

MPI实际上确实提供了对共享内存的支持(从3.0版本开始)。您可以尝试从MPI_WIN_ALLOCATE_SHARED(11.2.3)开始查看单侧通信章节(http://www.mpi-forum.org/docs/mpi-3.0/mpi30-report.pdf)。要使用它,您必须确保拥有支持它的实现。我知道MPICH和Open MPI的最新版本都可以使用。

答案 1 :(得分:1)

不,MPI不提供对共享内存的任何支持。实际上,MPI不希望支持共享内存。原因是用MPI编写的程序应该扩展到大量处理器,并且大量处理器永远不会有共享内存。

然而,可能会发生并且经常会发生少数处理器(在那​​组大量处理器中)的组具有共享内存。但是,要使用该共享内存,请使用OpenMP

OpenMP非常简单。我强烈建议你学习它。