我有一个由多个进程使用的共享内存,这些进程是使用MPI
创建的。
现在我需要一种机制来控制这个共享内存的访问。
我知道可以使用named semaphore
和flock
机制来做这个,但只是想知道MPI是否为共享内存使用提供了任何特殊的锁定机制?
我在Linux下工作。
答案 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非常简单。我强烈建议你学习它。