。openmp比较简单,修改现有的大段代码也容易。基本上openmp只要在已有程序基础上根据需要加并行语句即可。而mpi有时甚至需要从基本设计思路上重写整个程序,调试也困难得多,涉及到局域网通信这一不确定的因素。不过,openmp虽然简单却只能用于单机多CPU/多核并行,mpi才是用于多主机超级计算机集群的强悍工具,当然复杂。

(1)MPI=message passing interface:

在分布式内存(distributed-memory)之间实现信息通讯的一种 规范/标准/协议(standard)。它是一个库,不是一门语言。可以被fortran,c,c++等调用。MPI 允许静态任务调度,显示并行提供了良好的性能和移植性,用 MPI 编写的程序可直接在多核集群上运行。在集群系统中,集群的各节点之间可以采用 MPI 编程模型进行程序设计,每个节点都有自己的内存,可以对本地的指令和数据直接进行访问,各节点之间通过互联网络进行消息传递,这样设计具有很好的可移植性,完备的异步通信功能,较强的可扩展性等优点。MPI 模型存在一些不足,包括:程序的分解、开发和调试相对困难,而且通常要求对代码做大量的改动;通信会造成很大的开销,为了最小化延迟,通常需要大的代码粒度;细粒度的并行会引发大量的通信;动态负载平衡困难;并行化改进需要大量地修改原有的串行代码,调试难度比较大

(2)MPICH和OpenMPI:

它们都是采用MPI标准,在并行计算中,实现节点间通信的开源软件。各自有各自的函数,指令和库。

Reference:

They are two implementations of the MPI standard. In the late 90s and early 2000s, there were many different MPI implementations, and the implementors started to realize they were all re-inventing the wheel; there was something of a consolidation. The LAM/MPI team joined with the LA/MPI, FT-MPI, and eventually PACX-MPI teams to develop OpenMPI. LAM MPI stopped being developed in 2007. The code base for OpenMPI was completely new, but it brought in ideas and techniques from all the different teams.

Currently, the two major open-source MPI implementation code-bases are OpenMPI andMPICH2.

而MPICH2是MPICH的一个版本。

有的计算机厂商,也会针对旗下机型特点,自主开发基于MPICH的MPI软件,从而使机器的并行计算效率得以提高。

(3)OpenMP:

在节点内(多核 SMP)执行的基于共享内存的编程模型。

OpenMP是针对单主机上多核/多CPU并行计算而设计的工具,换句话说,OpenMP更适合单台计算机共享内存结构上的并行计算。由于使用线程间共享内存的方式协调并行计算,它在多核/多CPU结构上的效率很高、内存开销小、编程语句简洁直观,因此编程容易、编译器实现也容易(现在最新版的C、C++、Fortran编译器基本上都内置OpenMP支持)。不过OpenMP最大的缺点是只能在单台主机上工作,不能用于多台主机间的并行计算

openmp与openmpi区别相关推荐

  1. OpenMP相关文章收藏学习

    BLOG 关于生产者消费者问题的OpenMP实现 https://blog.csdn.net/zhangjt33/article/details/81165253 简介:关于生产者消费者问题的Open ...

  2. OpenMP、MPICH与OpenMPI

    原文网址 openmp比较简单,修改现有的大段代码也容易.基本上openmp只要在已有程序基础上根据需要加并行语句即可.而mpi有时甚至需要从基本设计思路上重写整个程序,调试也困难得多,涉及到局域网通 ...

  3. MPI(OpenMPI和MPICH(IntelMPI、MVAPICH))和OpenMP

    此博文包含图片 (2018-11-04 21:37:12) http://blog.sina.com.cn/s/blog_151391cb60102z0e3.html 标签: it 杂谈 分类: Li ...

  4. OpenMP和MPI的区别

    1.OpenMP OpenMP是一种用于共享内存并行系统的多线程程序设计的库(Compiler Directive),特别适合于多核CPU上的并行程序开发设计.它支持的语言包括:C语言.C++.For ...

  5. OpenMP和MPI并行模式的区别?

    1.OpenMP OpenMP是一种用于共享内存并行系统的多线程程序设计的库(Compiler Directive),特别适合于多核CPU上的并行程序开发设计.它支持的语言包括:C语言.C++.For ...

  6. mysql C openmp_c ++-OpenMP中的“静态”和“动态”时间表有什么区别?

    此后,其他人回答了大多数问题,但我想指出一些特定的情况,其中特定的调度类型比其他类型更适合. 调度控制如何在线程之间分配循环迭代. 选择正确的时间表可能会对应用程序的速度产生重大影响. schedul ...

  7. openmp并行编程_转载:多线程编程方法3OpenMPI框架

    介绍 OpenMPI官方link:https://www.open-mpi.org/ 我们先来看下MPI和OpenMPI的关系 : MPI:英文全称是Message Passing Interface ...

  8. Linux下并行计算库OpenMPI的配置和使用

    介绍 我们先来看下MPI和OpenMPI的关系 : MPI:英文全称是Message Passing Interface,这个就很明了了,信息传递接口,是独立于语言的通信协议(标准),是一个库. Op ...

  9. OpenMP用法大全

    OpenMP基本概念 OpenMP是一种用于共享内存并行系统的多线程程序设计方案,支持的编程语言包括C.C++和Fortran.OpenMP提供了对并行算法的高层抽象描述,特别适合在多核CPU机器上的 ...

最新文章

  1. 数据结构_Search
  2. U811.1接口EAI系列之一--通用把XML传送给EAI处理方法--PowerBuilder语言
  3. win8iis和php,Win8下IIS装PHP扩展
  4. Ubuntu16.04安装PCL库的python实现python-pcl,并且通过pcl加载pcd文件验证python-pcl是否安装成功
  5. Zookeeper_zkClientAPI讲解
  6. linux-tomcat-install
  7. android go 刷机教程,安卓用的久了,如何刷机?安卓手机线刷教程
  8. RegOpenKeyEx返回 2及原因
  9. 卡车紧急刹车加强系统(发明畅想)
  10. sprint敏捷开发
  11. Flutter学习(三)
  12. 瞎琢磨先生のJava笔记之Java代码远程调用shell脚本
  13. 权威证明共识(Proof of Authority)
  14. Android软件自动更新升级(自动下载安装新版本)
  15. 在 Surface 或 Windows 10 中启用和禁用触摸屏
  16. 常见的拖垮中小公司技术团队的10宗罪
  17. 6.1_[Java 数组]-数组与二重循环和鸡兔同笼及冒泡排序
  18. 《浪潮之巅》系列疑问
  19. CRM客户管理系统怎样对客户价值进行评估
  20. Mybatis-X使用

热门文章

  1. Qt 第二章 创建对话框--快速设计对话框(2)
  2. vs的form标签引起css走样问题
  3. Nginx根据路径设置静态资源
  4. 分布式事物框架TCC-Transaction使用教程
  5. Docker快速搭建Bugzilla
  6. Debian8 Linux上安装SSH服务器并配置sshd_config文件启用root ssh登录
  7. 计算机技能大赛图形试题,图形图像处理技能大赛竞赛试题试卷.doc
  8. iOS-WKWebView的使用
  9. 【springboot 踩坑记录】拦截器中无法注入bean
  10. 使用^、(异或、并且)位运算 实现算数加法(+)