第3 章消息传递编程.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第3 章消息传递编程

第3章 消息传递编程 教师:彭四伟 一、消息传递编程基础 消息传递模型的特征 多线程化 由多个进程组成,每个进程有自己的控制线程,可执行不同代码,支持控制并行(MPMD)和数据并行(SPMD)。 异步并行性 各进程异步执行,使用专用操作如路障、锁定通信等专用操作对进程加以同步。 分离的地址空间 各进程留驻在不同的地址空间,一个进程中的数据对另一个进程是不可见的,进程间通过执行专用的消息传递操作实现交互。 显式交互 程序员负责解决所有的交互问题,包括数据映射、通信、同步和聚集。 显式分配 工作负载和数据均需用户用显式方法分配给进程。 一、消息传递编程基础 编程工具的选择 专用并行编程语言 如occam语言 对现有语言扩展语法来处理消息传递 如CC+语言、Fortran M语言 专门的并行编译器 不适用于消息传递机制 使用现有语言,配备消息传递外部过程库 如PVM、MPI。必须提供至少两类基本方法: 1、创建分离进程以使它们能在不同的计算机上运行的方法; 2、发送和接收消息的方法。 一、消息传递编程基础 进程的创建 静态创建 所有进程在执行前必须加以指定,系统将执行固定数目的进程。程序员通常需在进程或程序执行之前用命令行显式标识它们。通常有一个主进程(控制进程),其余的为从进程(工作进程)。 SPMD模型将所有的进程融合到一个程序中,由控制语句选择不同的执行部分。SPMD是MPI所采用的主要方法 一、消息传递编程基础 进程的创建 动态创建 可在其他进程的执行期间创建进程并启动执行它们,也可以撤销它们。在执行过程中进程数可以发生变化。 动态进程创建功能更为强大,但在创建进程时也会导致显著的开销。 动态进程创建最通用的模型是MPMD模型。通常采用主从方法,由一个处理器执行主程序(主进程),而其余进程在主进程中启动。 一、消息传递编程基础 消息传递方式 同步消息传递 消息传递过程结束后调用才返回的传递方式。 同步消息传递不需要消息缓冲存储器。 同步发送和接收操作过程中通常需要某种形式的同步信号。 一、消息传递编程基础 消息传递方式 锁定消息传递 使用消息缓冲区并在本地操作完成后就返回例程称为锁定的,或本地锁定的。 消息缓冲区用来保存在recv接收之前发送的消息。 发送例程当本地操作结束,消息已经安全上路,就可以继续执行后继工作。 接收例程需要消息时,从缓冲区中获得消息。 若消息缓冲区是空的,接收例程进入等待状态。 当缓冲区已满时,发送例程将进入等待状态。 一、消息传递编程基础 消息传递方式 非锁定消息传递 进程不必等相应接收,立即返回的例程称为非锁定的。 进程执行非锁定发送/接收,非锁定发送/接收在告知系统发送/接收请求之后,便立即返回,此时消息并不一定已发出/接收。 非锁定的消息传递需由程序员保证用于传送的数据在传送之前不能被后继的语句所修改。 一、消息传递编程基础 消息传递方式 三种方式的比较 同步方式表述清晰且易用,不需设置额外的数据缓冲区,但可能导致某些周期的浪费。 在几乎所有的现行消息传递系统中,都使用锁定和非锁定方式,且需要足够的临时缓冲区空间。 非锁定方式可使等待时间减到最小,但可能需要利用等待操作进行协调。额外缓冲区和等待操作的使用可能抵销所带来的好处。 一、消息传递编程基础 消息传递方式 群组消息传递 广播(broadcast) 向所有与求解问题有关的进程发送相同的信息。 散播(scatter) 根进程的数据数组中的每个元素分别发送给各个进程。 汇集(gather) 一个进程从一组进程中的每一个进程处收集一个数据。汇集是散播的逆操作。 有时汇集操作与一个计算操作组合在一起,对各个值进行汇总,称为归约(reduce)操作. 一、消息传递编程基础 消息选择 源进程和目的进程标记 在发送和接收例程中须指定目的进程和源进程。可以使用特殊符号或数字作为通配源地址,即允许接收来自任何源进程的消息。 一、消息传递编程基础 消息选择 消息标记(Message Tag) 由用户选定的正整数,对不同类型的消息进行区分,附于消息之上,用于消息的选择。 二、MPI MPI简介 MPI是由MPI论坛开发的一个非专利且独立于平台的消息传递函数库的与语言无关的标准规范。 MPI已在多种机型、系统和所有主要的并行计算机上得到了实现。 MPI基于四个正交概念(消息数据类型、通信子、通信操作和虚拟拓扑)提供了二百多个函数。 二、MPI MPI的实现 MPI不是独立、自含式的软件系统,在自然并行编程环境之上,由它提供一个消息传递通信层,由它来确定诸如进程管理和I/O的必要性。 最流行的非专利实现是MPICH,是由Argonne国家实验室和密西西比州立大学联合开发。 二、MPI MPI中的并行性问题 MPI对进程的生成未作说明,留给实现去处理。 MPI假

文档评论(0)

f8r9t5c + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档