fortran - OpenMP 和 MPI 解释

标签 fortran openmp openmpi

几分钟前,我偶然发现了一些文字,这让我想起了一些一直在思考的问题,但我无处可问。

所以,希望这可能是人们动手的地方
两者都有经验,我想知道是否有人可以解释
OpenMP 和 MPI 有什么区别?

我已经完整阅读了维基百科的文章,理解它们
段,但我还在琢磨;
对于希望有一天进入世界的 Fortran 程序员
并行(现在只是学习 OpenMP 的基础知识),还有什么
future 之路何去何从?

我将不胜感激您的所有评论

最佳答案

OpenMP 主要用于紧密耦合的多处理——即同一台机器上的多个处理器。它主要用于诸如启动多个线程以并行执行循环之类的事情。

MPI 主要用于松散耦合的多处理——即一组通过网络相互通信的计算机。它可以作为网络的一种退化形式在单台机器上使用,但利用它作为单台机器的优势相对较少(例如,在“节点”之间具有极高的带宽通信)。

编辑(回应评论):对于 24 台机器的集群,MPI 成为显而易见的选择。如上所述(并且类似于@Mark 的评论)OpenMP 主要用于共享内存的多个处理器。当您没有共享内存时,MPI 成为明确的选择。

同时,假设您将使用多处理器机器(还有其他任何东西吗?),您可能希望使用 OpenMP 将每台机器中的负载分散到其所有处理器上。

但是请记住,OpenMP 通常比 MPI 更快/更容易投入使用。根据您需要多少加速,按比例放大而不是缩小(即每台具有更多处理器的机器更少)可以使软件开发足够快/更便宜,即使它很少提供每个内核的最低价格也是值得的。

关于fortran - OpenMP 和 MPI 解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3166915/

相关文章:

fortran - 派生类型中的可变长度数组

c - 使用 MPI 写入文件

c++ - 在 MPI 进程之间交换数据(晕)

ubuntu - 在 ubuntu 的集群上运行你的程序

parallel-processing - OMP : What is the difference between OMP PARALLEL DO and OMP DO (Without parallel directive at all)

c++ - 新算子+OpenMP动态调度子句

c - openMP 的最长公共(public)子序列

c - 并行数组的元素之和?

linux - 已安装 OpenMPI 库,但无法在 Linux 中使用 mpicc 命令

r - 使用 read.fortran 导入 .DAT 文件时出现错误