---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------并行编程模型与并行语言

并行编程模型
目前最重要的并行编程模型是数据并行和消息传递,数据并行编程模型的编程级别比较高,编程相对简单,但它仅适用于数据并行问题;消息传递编程模型的编程级别相对较低,但消息传递编程模型可以有更广泛的应用范围。

数据并行即将相同的操作同时作用于不同的数据,数据并行编程模型提供给编程者一个全局的地址空间,一般这种形式的语言本身就提供并行执行的语义,因此对于编程者来说,只需要简单地指明执行什么样的并行操作和并行操作的对象,就实现了数据并行的编程
消息传递即各个并行执行的部分之间通过传递消息来交换信息、协调步伐、控制执行。消息传递一般是面向分布式内存的,但是它也可适用于共享内存的并行机。

数据并行与消息传递并行编程模型的比较

讲解:
不同的并行编程模型也就是不同的通过并行程序解决问题的模式,数据并行的主要特征是以数据为中心,通过对数据的划分和并行处理来解决问题,消息传递当然也可以实现上述功能,但是消息传递在问题的表述上更具体,更低级,可以解决的问题相对于数据并行模型来说也更广泛。在一定程度上,可以把数据并行看作是消息传递的特殊形式。
为什么说数据并行编程模型比消息传递编程模型级别高?
数据并行将复杂的消息传递工作交给了编译器去完成,而消息传递模型下这些工作都需要编程者来完成
你知道的其它编程模型还有哪些?
函数式并行,共享变量
现在串行编程语言几乎都是高级语言,为什么在并行计算领域编程语言却还相对级别较低?
并行计算目前还缺乏统一的模型和标准
你知道的并行语言有哪些?
HPF,各种并行C,并行C++,并行PASCAL
你认为串行语言和并行语言的区别有哪些?
是否提供并行的结构,是否提供并行的语义

------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------并 行 算 法
并行算法一般是浅而宽,串行算法是深而窄

并行算法划分方法:
根据运算的基本对象的不同划分
数值并行算法(数值计算)和非数值并行算法(符号计算)

根据进程之间的依赖关系划分
同步并行算法(步调一致)、异步并行算法(步调、进展互不相同)和纯并行算法(各部分之间没有关系)
粗粒度并行算法(一个并行任务包含较长的程序段和较大的计算量)、细粒度并行算法(一个并行任务包含较短的程序段和较小的计算量)以及介于二者之间的中粒度并行算法根据并行计算任务的大小划分,一般而言,并行的粒度越小,就有可能开发更多的并行性,提高并行度,这是有利的方面,但是另一个不利的方面就是并行的粒度越小,通信次数和通信量就相对增多,这样就增加了额外的开销,因此合适的并行粒度需要根据计算量、通信量、计算速度、通信速度进行综合平衡,这样才能够取得高效率。
并行算法分类的不同代表算法特点的不同,即具体的操作模式的不同,问题的不同,并行计算机特点的不同,是选择不同并行算法的主要依据。

机群算法的设计原则 :就是设法加大计算时间相对于通信时间的比重,减少通信次数甚至以计算换通信。
    这是因为,对于机群系统,一次通信的开销要远远大于一次计算的开销,因此要尽可能降低通信的次数,或将两次通信合并为一次通信。基于同样的原因,机群计算的并行粒度不可能太小,因为这样会大大增加通信的开销。如果能够实现计算和通信的重叠,那将会更大地提高整个程序的执行效率。

习题:
并行算法的分类是怎样的?
粗粒度/细粒度并行算法,同步/异步并行算法
同步并行算法在具有什么特点的并行计算机上可以高效实现?
SIMD类并行计算机
粗粒度的并行算法在什么条件下性能优于细粒度的并行算法?
并行的粒度越小就有可能开发更多的并行性提高并行度这是有利的方面但是另一个不利的方面就是并行的粒度越小通信次数和通信量就相对增多这样就增加了额外的开销因此合适的并行粒度需要根据计算量通信量计算速度通信速度进行综合平衡这样才能够取得高效率。
一个好的并行算法的前提是什么?
一个好的并行算法要既能很好地匹配并行计算机硬件体系结构的特点又能反映问题内在并行性
如何设计适合机群系统的并行算法?
对于机群系统一次通信的开销要远远大于一次计算的开销,因此要尽可能降低通信的次数或将两次通信合并为一次通信,基于同样的原因,机群计算的并行粒度不可能太小,因为这样会大大增加通信的开销,如果能够实现计算和通信的重叠那将会更大地提高整个程序的执行效率。对于MPMD 并行算法,各并行部分一般是异步执行的而不是象SPMD 那样的同步或松同步方式,因此只要能够大大降低通信次数,增大计算相对于通信的比重,则该MPMD 算法就可以取得较高的效率设计一个适合机群系统的并行查找算法。

MPI并行程序开发设计----------------------------------并行编程模型和算法等介绍相关推荐

  1. c语言mpi并行程序,高性能计算之并行编程技术MPI并行程序设计(完整版).pdf

    高性能计算之并行编程技术MPI并行程序设计(完整版) 高性能计算之并行编程技术 -- MPI并行程序设计 都志辉 编著 李三立 审阅 陈渝 刘鹏 校对 I 内容提要 本书介绍目前最常见的并行程序- M ...

  2. 8天玩转并行开发——第六天 异步编程模型

    原文:8天玩转并行开发--第六天 异步编程模型 在.net里面异步编程模型由来已久,相信大家也知道Begin/End异步模式和事件异步模式,在task出现以后,这些东西都可以被task包装 起来,可能 ...

  3. 【并行算法】并行算法的设计技术和并行程序开发

    并行算法的设计技术 目前普遍使用的并行算法的设计技术: 1).流水线技术 将任务分割成许多子任务,每个处理器完成其中一个,且第一个处理器完成第一个子任务后,第二个处理器可以开始完成第二个子任务- 2) ...

  4. 并行程序调试、测试与模型检测

    并行程序调试.测试与模型检测 并行程序调试的挑战: 1.由于不能确定不同线程的执行顺序,导致可能的执行路径发生组合爆炸: 2.使用模型检验程序正确性能以应用到分布式系统上. 名词解释 确定性重放:通过 ...

  5. JDK文档是Java程序开发不可缺少的编程词典

    Java 构建商业应用程序或者某种物联网设备,构建了Android 操作系统,它为智能手机行业做出了杰出的贡献.借助 Android 操作系统,手机厂商才得以在早期与黑莓抗衡,之后又能够打破苹果的主导 ...

  6. 微信小程序开发01 双线程模型:为什么小程序不用浏览器的线程模型?

    你好,我是俊鹏,今天是第一节课,我想和你聊一聊微信小程序表层知识中的双线程模型.主要探讨一下它的技术背景.线程间的分工和通信模式. 在工作以及一些技术分享中,我经常被人问到这样一个问题:"微 ...

  7. 【Spark分布式内存计算框架——Structured Streaming】2. Structured Streaming 核心设计与编程模型

    核心设计 2016年,Spark在2.0版本中推出了结构化流处理的模块Structured Streaming,核心设计如下: 第一点:Input and Output(输入和输出) Structur ...

  8. java swing开发窗体程序开发(一)GUI编程

    Java SWing就是java提供的一个类库专门用于开发窗体程序的,相对于C#的winform,java swing的开发要比C#更加麻烦,他不像C#拥有可视化的界面编辑工具 而是需要像QT一样纯代 ...

  9. 【MPI学习3】MPI并行程序设计模式:不同通信模式MPI并行程序的设计

    学习了MPI四种通信模式 及其函数用法: (1)标准通信模式:MPI_SEND (2)缓存通信模式:MPI_BSEND (3)同步通信模式:MPI_SSEND (4)就绪通信模式:MPI_RSEND ...

最新文章

  1. 本弗莱数据可视化的生产流程图_力控锂离子电池车间数据采集系统
  2. rails.vim环境安装(ubuntu)
  3. JQuery 定期刷新网页,保持登录状态Session
  4. checkInterruptWhileWaiting
  5. pythoncharm下载cpython失败_pycharm虚拟环境下安装mysqlclient失败
  6. 使用 Roslyn 编译器服务
  7. 网络的性能指标与分组交换网络
  8. 工作流实战_25_flowable 流程中的自动跳过
  9. Oracle数据库SqlLoad常用技巧总结word版
  10. stream常用list转map list转list
  11. TortoiseGit乌龟git添加公钥密钥和私钥认证,实现乌龟git同步免密码输入
  12. java 大数四则运算_Java中的大数运算
  13. Arch报错日志ACPI BIOS Error (bug): Failure creating named object“INFO: task kworker/2:1H:107 blocked“
  14. Drain:在线实时日志解析方法
  15. 移动磁盘提示文件名目录名或卷标语法不正确怎么修复?
  16. js-for循环-9*9乘法表小练习
  17. vue3 - 23.h函数 / 函数式编程
  18. 基于SSM(Spring+SpringMVC+MyBatic)的停车场管理系统
  19. 带头结点的单链表删除操作 (10 分)
  20. 文本识别(自然语言处理,NLP)

热门文章

  1. H国身份证号码【多组实例测试】
  2. android 集成高德地图打包后报 key-location Error, ErrCode:7 的问题
  3. 读书笔记:Python编程——从入门到实践
  4. JAVA判断时间是否过期
  5. Linux CentOS 中安装 Redis(五)
  6. [JSON] JSON基础知识
  7. Folx Pro5 MAC激活密钥序列号下载V5.20.13943
  8. 英雄联盟登录服务器显示错误码,lol登录失败_TGP一直验证账号,最后出现登录超时,错误码:1,L......
  9. 落谷P3712少女与战车(疑似CSDN首发)
  10. 唯品会订单分库分表的实践总结以及关键步骤