并行计算同步计算课件.ppt

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
并行计算同步计算课件

第6章 同步计算 Synchronous Computations 同步计算分为全同步和部分同步 全同步 (full synchronination):所有的进程在一些规则的执行点上的同步。 部分同步(partial synchronization)或局部同步(local synchronization) :在逻辑上相邻的一组进程参与的同步。 同步计算是指那些带有全同步或大量部分同步的计算。 一、全同步及相关技术问题 在消息传递并行计算中,常用的全同步的实现方法有: 障碍、路障(barrier) 计数器实现 树实现 1、障碍(路障)同步(barrier synchronization):在并行系统中,使一组进程取得同步的一种方法。 它在参与障碍同步的每个进程的程序中彼此必须等待的位置设置一个障碍点,当某进程执行到障碍点时暂停,等待所有进程都执行到这个障碍点上,它们才能继续运行。 通常需要同步的进程的程序中有多个障碍点,以同步它们彼此的操作。 障碍同步可应用于: 共享存储器系统 分布存储的消息传递系统 进程不在同一时刻到达障碍点的情况 进程 时 间 P0 P1 … P2 Pn-1 活动 等待 … 障碍 在消息传递系统中,障碍同步通常是由库例程(函数)提供的。 MPI 的障碍同步例程: barrier(comm) 阻塞所有的调用者,直到通信体 (comm)中所有的成员都调用了该例程后,各进程中的 barrier 调用才可返回。 PVM 库也有类似的例程: pvm_barrier( ) 障碍同步例程的实现取决于并行系统的体系结构。 : : : barrier( ); : : : : : barrier( ); : : : : : : : : barrier( ); : : …… 进程 P0 Pp-1 P1 各进程处于等待状态,直到所有的进程都到达barrier调用点为止。 2、集中式计数器实现 :用一个计数器对到达路障的进程数目计数。 计数器的初值为 0; 每个调用路障的进程将计数器增 1,并检查计数器是否已到达路障同步进程总数 n;若未到达 n 值,则使进程转入“挂起” 状态;否则释放该进程及所有其它等待进程。 : : : barrier( ); : : : : : barrier( ); : : : : : : : : barrier( ); : : …… 计数器 计数器路障分为两个阶段: 进入路障阶段 离开路障阶段 如果系统没有路障例程,通常由主进程维护路障计数器: 当从进程到达路障时,主进程对来自从进程的消息计数; 在离开路障阶段中,主进程释放各个从进程。 /*count slaves as they reach barrier*/ for (i = 0; i n; i++) recv(Pany); /* release slaves */ for (i = 0; i n; i++) send(P i ); send(Pmaster); recv(Pmaster); 从主进程代码可以看出:计数器路障的实现的时间复杂性为:О(n)。 以上路障方法的主进程代码: 对应的从进程代码: 3、树实现 :利用树结构实现的同步方法 假设有 8 个进程 P0~ P7,路障同步完成的过程为: 第一级: 当 P1 到达路障时, P1 给 P0 发送消息; 当 P3 到达路障时, P3 给 P2 发送消息; 当 P5 到达路障时, P5 给 P4 发送消息; 当 P7 到达路障时, P7 给 P6 发送消息; 第二级: 当 P2 到达路障且P2已收到P3发来的消息时,P2 给 P0 发送消息; 当 P6 到达路障且P6已收到P7发来的消息时,P6 给 P4 发送消息; 第三级: 当 P4 到达路障且P4已收到P6发来的消息时,P4 给 P0 发送消息。 树型路障实现过程 P0 P1 P2 P3 P4 P5 P6 P7 到达路障 离开路障 树型障碍同步算法(SPMD):假设n是2的整幂次 /* 到达阶段 */ for (i = 0; i log(n); i++) if (myid % 2i == 0) if (myid % 2i+1 == 0) recv(Pmyid+2i); else send(Pmyid-2i); /* 离开阶段 */ for (i = log(n) -1; i = 0; i- -) if (myid % 2i == 0) if (myid % 2i+1 == 0) send(Pmyid+2i); else recv(Pmyid-2i); 局部同步 全同步要求所有的进

您可能关注的文档

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档