1

我有多个进程使用的共享内存,这些进程是使用MPI.

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

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

我正在Linux下使用C语言。

4

2 回答 2

2

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.

于 2013-06-14T15:43:28.687 回答
1

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

但是,少数处理器组(在该组大量处理器中)可能会并且经常发生共享内存。然而,为了利用该共享内存,使用了OpenMP

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

于 2013-06-13T09:22:45.100 回答