【发布时间】:2013-06-09 12:39:58
【问题描述】:
我有一个由多个进程使用的共享内存,这些进程是使用MPI 创建的。
现在我需要一种机制来控制对共享内存的访问。
我知道named semaphore 和flock 机制可用于执行此操作,但只是想知道 MPI 是否为共享内存使用提供任何特殊锁定机制?
我正在 Linux 下使用 C 语言。
【问题讨论】:
标签: c linux mpi shared-memory semaphore
我有一个由多个进程使用的共享内存,这些进程是使用MPI 创建的。
现在我需要一种机制来控制对共享内存的访问。
我知道named semaphore 和flock 机制可用于执行此操作,但只是想知道 MPI 是否为共享内存使用提供任何特殊锁定机制?
我正在 Linux 下使用 C 语言。
【问题讨论】:
标签: c linux mpi shared-memory semaphore
不,MPI 不提供对共享内存的任何支持。事实上,MPI 并不想支持共享内存。原因是使用 MPI 编写的程序应该扩展到大量处理器,而大量处理器永远不会共享内存。
但是,少数处理器组(在该组大量处理器中)确实可能会发生并且经常发生共享内存。但是,为了利用该共享内存,使用了OpenMP。
OpenMP 非常简单。我强烈建议你学习它。
【讨论】:
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 的最新版本都可以工作。
【讨论】:
int,任何进程都可以读取/写入该整数。还有 MPI 提供的这种类型的共享内存的访问控制机制吗?谢谢!