OpenMP和MPI比较

2023-10-27

     OpenMP和MPI是并行编程的两个手段,对比如下:

  • OpenMP:线程级(并行粒度);共享存储;隐式(数据分配方式);可扩展性差;
  • MPI:进程级;分布式存储;显式;可扩展性好。
OpenMP采用共享存储,意味着它只适应于SMP,DSM机器,不适合于集群。MPI虽适合于各种机器,但它的编程模型复杂:
  • 需要分析及划分应用程序问题,并将问题映射到分布式进程集合;
  • 需要解决通信延迟大和负载不平衡两个主要问题;
  • 调试MPI程序麻烦;
  • MPI程序可靠性差,一个进程出问题,整个程序将错误;

附:

  • SMP(Symmetric multi-processing),共享总线与内存,单一操作系统映象。在软件上是可扩展的,而硬件上不能。
  • DSM(distributed shared memory),SMP的扩展。物理上分布存储;单一内存地址空间;非一致内存访问;单一操作系统映象。

OpenMP在科学计算方面居于统治地位,对于多线程方面(包括多核)有很大的优势。
OpenMP+MPI的组合方式在集群方面有很成熟的案例。

                                     摘自  http://zhangyu8374.javaeye.com/blog/86305

 

常采用mpi而不用openmp的原因是:openmp扩展性差,对机器要求高,要想运算的快点,机器就要很贵。

一般双核,用openmp。因为mpi用于分布式机器之间数据传输,单机内用mpi的时间开销大于OpenMP。

在一台机器中有很多CPU共享其中的内存条,叫共享内存并行机(如今天的双核CPU台式机),它适合OpenMP,而把这样的机器用专用高速网连接就形成了分布式内存并行机,它适合于MPI。此时,可以混合OpenMP,能提高一定的运行速度。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenMP和MPI比较 的相关文章

  • 如何使用 echo 写入非 ASCII 字符?

    如何写非ASCII http en wikipedia org wiki ASCII使用 echo 的字符 是否有转义序列 例如 012或类似的东西 我想使用以下方法将 ASCII 字符附加到文件中 echo gt gt file 如果您关
  • dlopen 或 dlclose 未调用信号处理程序

    我在随机时间内收到分段错误 我注册了信号 但发生分段错误时未调用信号处理程序 include
  • 未找到 Gem 命令

    我已经在 Ubuntu 10 10 32 位上安装了 gem apt get install gem y 但当我尝试跑步时 gem install something gem 我收到未找到命令的错误 bash gem command not
  • 如何从 Linux 内核模块获取使用计数?

    我对正在开发的内核模块的使用计数有疑问 我想打印它以进行调试 如何从模块代码中获取它 有问题的内核版本 Linux 2 6 32 module refcount http lxr linux no linux v2 6 34 1 inclu
  • 在 debian wheezy amd64 上安装 ia32-libs

    我正在使用 Debian 7 喘息 amd64 uname a Linux tzwm debian 3 2 0 4 amd64 1 SMP Debian 3 2 51 1 x86 64 GNU Linux 我想安装ia32 libs在我的
  • ubuntu 的 CSS 更少(并且自动编译)? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我尝试过 simples 但现在 l
  • 如何在 Linux/OS X 上温和地终止 Firefox 进程

    我正在使用 Firefox 进行一些自动化操作 尽管我可以从 shell 打开 Firefox 窗口 但我无法正确终止它 如果我kill火狐进程与kill 3 or kill 2当我下次打开新的 Firefox 窗口时 命令会询问我是否要在
  • 计算 TCP 重传次数

    我想知道在LINUX中是否有一种方法可以计算一个流中发生的TCP重传的次数 无论是在客户端还是服务器端 好像netstat s解决了我的目的
  • 可以作为命令行参数传递多少数据?

    在 Linux 下生成进程时可以发送多少字节作为命令行参数 gahooa 推荐了一篇好文章http www in ulm de mascheck various argmax http www in ulm de mascheck vari
  • 完整的 C++ i18n gettext()“hello world”示例

    我正在寻找完整的 i18ngettext 你好世界的例子 我已经开始了一个基于的脚本使用 GNU gettext 的本机语言支持教程 https web archive org web 20130330233819 http oriya s
  • 在非实时操作系统/内核上执行接近实时任务的最佳方法是什么?

    在一台 GNU Linux 机器上 如果想要执行 实时 亚毫秒级时间关键 任务 您几乎总是必须经历漫长 复杂且容易出现问题的内核补丁过程 以提供足够的支持 1 http en wikipedia org wiki RTLinux Backg
  • Bash - 比较 2 个文件列表及其 md5 校验和

    我有 2 个列表 其中包含带有 md5sum 检查的文件 即使文件相同 列表也具有不同的路径 我想检查每个文件的 md5 和 我们正在讨论数千个文件 这就是为什么我需要脚本来仅显示差异 第一个列表是普通列表 第二个列表是文件的当前状态 我想
  • 用于时间线数据的类似 gnuplot 的程序

    我正在寻找一个类似 gnuplot用于在时间轴中绘制数据图表的程序 类似 gnuplot 在 Linux 上运行 命令行功能 GUI 对我帮助不大 可编写脚本的语法 输出为 jpg png svg 或 gif 输出应该是这样的 set5 s
  • 了解 Linux oom-killer 日志

    我的应用程序被 oom killer 杀死了 它是在实时 USB 上运行的 Ubuntu 11 10 无需交换 PC 具有 1 Gig 的 RAM 唯一运行的应用程序 除了所有内置的 Ubuntu 东西 是我的程序 flasherav 请注
  • pthread_self() 返回的线程 ID 与调用 gettid(2) 返回的内核线程 ID 不同

    这句话来自于pthread self 的手册页 http linux die net man 3 pthread self 那么 我应该根据什么来决定是否应该使用pthread self or gettid确定哪个线程正在运行该函数 两者都
  • Grep 递归和计数

    需要在具有大量子目录的目录中搜索文件内的字符串 我在用着 grep c r string here 我怎样才能找到总数量 如何仅输出至少具有一个实例的文件 使用 Bash 的进程替换 这给出了我认为是您想要的输出 如果不是 请澄清问题 gr
  • 从哪里获取 iostream.h

    我正在尝试在 Linux 中做一些事情 但它抱怨找不到 iostream h 我需要安装什么才能获取此文件 这个标准头的正确名称是iostream没有扩展名 如果您的编译器仍然找不到它 请尝试以下操作 find usr include na
  • 由于 abi::cxx11 符号导致的链接问题?

    我们最近收到一份报告 因为GCC 5 1 libstdc 和双 ABI http gcc gnu org onlinedocs libstdc manual using dual abi html 它似乎Clang 不知道 GCC 内联名称
  • 如果输入被重定向则执行操作

    我想知道如果我的输入被重定向 我应该如何在 C 程序中执行操作 例如 假设我有已编译的程序 prog 并且我将输入 input txt 重定向到它 我这样做 prog lt input txt 我如何在代码中检测到这一点 一般来说 您无法判
  • Java时区混乱

    我正在运行 Tomcat 应用程序 并且需要显示一些时间值 不幸的是 时间快到了 还有一个小时的休息时间 我调查了一下 发现我的默认时区被设置为 sun util calendar ZoneInfo id GMT 08 00 offset

随机推荐

  • github 上传大文件的方法

    背景 版本库中有两个压缩包 大概在300M左右 上传时提示超过100M 上传失败 1 安装 git lfs git lfs install 2 跟踪指定大文件 可以使用 bin 之类的命令来跟踪一类文件 git lfs track root
  • 【JAVA核心】Java GC机制详解

    垃圾收集 Garbage Collection 通常被称为 GC 本文详细讲述Java垃圾回收机制 导读 1 什么是GC 2 GC常用算法 3 垃圾收集器 4 finalize 方法详解 5 总结 根据GC原理来优化代码 正式阅读之前需要了
  • private的构造函数

    package nuaa public class Xxx public int a private Xxx int a this a a System out println this a this a public static voi
  • avalon的使用与总结

    avalon是前端MVVM框架 将所有前端代码彻底分成两部分 视图的处理通过绑定实现 angular有个更炫酷的名词叫指令 业务逻辑则集中在一个个叫VM的对象中处理 我们只要操作VM的数据 它就自然而然地神奇地同步到视图 作用域绑定ms c
  • Keras实现Unet语义分割医学细胞图像并训练自己的数据集

    文章目录 一 Unet网络模型 二 代码运行 三 制作自己的数据集进行训练并测试标注 前言 本文实现keras下的Unet语义分割模型并且用自己制作的数据集进行训练并预测 本文引用了一些博文里面的内容 侵权请联系删改 引用的一些文章链接地址
  • linux+缺少+libc.so.6,libc.so.6 缺失问题

    今天中午 在Redhat AS5 上解决一个数据库连接问题 在应用的日志中发现如下报错信息 error client 145 24 216 86 lib libc so 6 libc start main 0xdc 0x4138cdec 在
  • 状态模式(State)

    1 概念 状态模式允许一个对象在其内部状态改变时改变它的行为 对象看起来似乎修改了它所属的类 属于行为型模式 2 模式结构 环境角色 Context 定义客户端所感兴趣的接口 并且保留一个具体状态类的实例 这个具体状态类的实例给出此环境对象
  • Linux基础命令

    文章目录 Linux基础命令 Linux命令基础格式 ls命令 ls命令的参数 ls 命令的 a选项 ls命令的 l选项 ls命令选项的组合使用 ls选项和参数的组合使用 ls 命令的 h选项 目录切换相关命令 cd pwd cd 切换工作
  • 如何查看自己电脑的IP地址

    如何查看自己电脑的IP地址 简略概括 打开命令窗口 win R gt 输入cmd进入 gt 敲ipconfig gt 进行查看 图片图示 首先打开命令窗口 在命令窗口中输入ipconfig 进行查看 这就是查看结果 以我的为例 我的IP地址
  • 【StyleGAN代码学习】StyleGAN模型架构

    完整StyleGAN笔记 http www gwylab com pdf Note StyleGAN pdf 基于StyleGAN的一个好玩的网站 www seeprettyface com 第二章 StyleGAN代码解读 上 这一章将对
  • CMOS图像传感器——从传感器冗余说起

    在这先抛出一个概念 什么是成像圈 众所周知 相机的镜头近似于圆柱体 光线透过圆筒子投射出的大都是圆形 我们可以拿一个镜头演示一下 当这个圆圈投在传感器所在焦平面时 我们称之为像场 像场的边界我们称之为成像圈 成像圈是圆的 但是传感器是矩形
  • 【测试】用例篇

    努力经营当下 直至未来明朗 文章目录 一 设计测试用例的万能公式 二 设计测试用例的具体方法 1 等价类 2 边界值 3 因果图 判定表 4 场景设计法 5 正交法 6 错误猜测法 sparkles 小结 普通小孩也要热爱生活 一 设计测试
  • WEB-1-前端三剑客

    前端三剑客 一 HTML 1 什么是HTML 2 元素 3 常见的元素 1 标题元素 2 段落元素 3 列表 4 超链接 5 图片 6 无语义标签 二 CSS 1 什么是 CSS 2 引入的样式 3 常见的 CSS 选择器 1 标签选择器
  • c++使用高斯顺序消元法,求解方程组

    方程组形式为 AX b 高斯顺序消元法的目的是将方程组整理为一个上三角矩阵 在获得这个上三角矩阵后 就可以通过回代的方法 逆序的求出方程的根X n 1 X 0 可以将求解方程组分为如下几个步骤 1 首先消去第一列除第一行外的所有元素 将第2
  • 微信小程序获取当前日期及时间

    1 在微信小程序新建好之后 项目内可以看到有一个名字为utils的文件夹 内放置util js文件 util js文件用于存放公共方法 打开后可以看到内容如下图 如果说你只需要获得当前日期等其他文件内没有的数据 就需要你进行添加 可以看到源
  • 100行代码实现加权负载均衡算法(WRR)

    轮询算法round robin是很基础的负载均衡算法 实际应用中wrr更为常见 但一般不需要自己实现 因为一般需要rr的场景 都已经在基础设施层面进行了支持 比如lvs或nginx通过配置即可实现 但业务上偶尔也需要自己实现负载均衡 所以有
  • spring缓存机制-根据condition加入缓存(三)

    spring是一个轻量级开源框架 以IoC Inverse of Control 控制反转 和AOP Aspect Oriented Programming 面向切面编程 为内核 兼具功能强大的的原生展现层spring mvc 原生持久层s
  • mac运行cocos2dx加载新资源的步骤

    如果不懂如何在mac下运行cocos2dx程序 可以参考以下的文章 http blog csdn net leansmall article details 50310343 文章中所说的 XCODE下拉列表 为 接下来 如果有新的图片或者
  • 舍友仅仅打了一把游戏,我就学会了如何实现用中断控制数码管各位的显示

    一 电路图 点击下载 二 代码 include
  • OpenMP和MPI比较

    OpenMP和MPI是并行编程的两个手段 对比如下 OpenMP 线程级 并行粒度 共享存储 隐式 数据分配方式 可扩展性差 MPI 进程级 分布式存储 显式 可扩展性好 OpenMP采用共享存储 意味着它只适应于SMP DSM机器 不适合