我有多个进程使用的共享内存,这些进程是使用MPI.
现在我需要一种机制来控制对这个共享内存的访问。
我知道可以使用机制来做到这一点named semaphore,flock但只是想知道 MPI 是否为共享内存使用提供了任何特殊的锁定机制?
我正在Linux下使用C语言。
我有多个进程使用的共享内存,这些进程是使用MPI.
现在我需要一种机制来控制对这个共享内存的访问。
我知道可以使用机制来做到这一点named semaphore,flock但只是想知道 MPI 是否为共享内存使用提供了任何特殊的锁定机制?
我正在Linux下使用C语言。
MPI actually does provide support for shared memory now (as of version 3.0). You might try looking at the One-sided communication chapter (http://www.mpi-forum.org/docs/mpi-3.0/mpi30-report.pdf) starting with MPI_WIN_ALLOCATE_SHARED (11.2.3). To use this, you'll have to make sure you have an implementation that supports it. I know that the most recent versions of both MPICH and Open MPI work.
不,MPI 不提供对共享内存的任何支持。事实上,MPI 并不想支持共享内存。原因是使用 MPI 编写的程序应该扩展到大量处理器,而大量处理器永远不会共享内存。
但是,少数处理器组(在该组大量处理器中)可能会并且经常发生共享内存。然而,为了利用该共享内存,使用了OpenMP。
OpenMP 非常简单。我强烈建议你学习它。