use*_*223 1 parallel-processing mpi openmp
如果我的所有处理器共享相同的内存,那么使用MPI无论如何都有用,而不是完全使用OpenMP?
如果您从不打算将应用程序扩展到单个共享内存节点之外,那么与MPI并行化相比,OpenMP并行化可能相对容易实现.相对而言,因为OpenMP的明显简单性是非常误导的.为了充分利用现代共享内存机器的能力,应该最大化数据局部性并使用大量私有数据,有效地将它们(机器)视为分布式内存系统.此外,共享内存编程中最普遍的错误是数据争用,有时甚至可能很难调试,即使使用特殊的线程检查工具.由于进程不共享数据,因此MPI编程中几乎不存在数据竞争.
也就是说,即使MPI进程使用共享内存进行通信,这仍然比在线程进程中直接访问共享内存要慢.此外,一些算法需要一些全局数据,这需要更多的MPI内存,其中每个进程必须保存该数据的副本.这可以在MPI-3.0中使用共享内存窗口和单面操作来实现,但这在某种程度上很麻烦(虽然是便携式的).此外,还有研究工作尽可能少地减少节点内通信开销,有些非常成功.
| 归档时间: |
|
| 查看次数: |
113 次 |
| 最近记录: |