- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
并行计算理论
参考教材:Barry Wilkinson and Michael Allen(美 威尔金森和艾仑). Parallel Programming(并行程序设计)
1 并行计算机
1.1 并行计算提高计算速度的潜能
在下面,用p表示处理器的个数,用多处理器multiprocessor表示多于 1个处理器的并行计算机系统。
1.1.1 加速因子(speedup factor)的定义
对多处理器系统评价时,往往将单处理器中的最好串行执行算法和多处理器中的并行算法进行比较,加速因子S(p)被用来作为分析的一个主要值。S(p)定义如下:
表示在单处理器系统中采用最好的串行算法所需要的执行时间,表示使用p个处理器的系统中并行算法所需要的执行时间。在进行理论分析的时候,可以量化为单处理器系统中采用最好的串行算法所需要步骤的个数,可以量化为p个处理器的系统中并行算法所需要的步骤的个数。
1.1.3 信息-传递(Message-Passing)计算
在多处理器环境中,为了进行同步,需要在多个处理器之间传递信息。这样,由两部分组成:
是通信时间,是计算时间。当并行处理器个数越多,并行块越小,执行时间越长,而通信时间就会相对增加。在并行处理中不仅要尽量减少计算时间也要尽量减少通信时间。定义计算时间/通信时间的比率来量化这两者之间的相对关系:
1.2 并行计算的类型
1.2.1 共享内存的多处理器系统
传统的计算机包括一个处理器执行存储在内存中的一个程序,传统的只有单个处理器和内存的系统如图(左)所示。
共享内存的多处理器方式,每个处理器的可执行代码存储在共享内存中,每个程序的数据也存储在共享内存中,这样,每个程序在需要的时候都可以访问数据。通常情况,共享内存和多处理器之间通过内部连接网络连接。通常,带有2个到4个处理器的共享内存多处理器系统通过内部总线结构进行互连。例如:Dual-Pentium和Quad-Pentium系统。但是对于大规模的共享内存多处理器系统,则需要分级结构或分布式内存结构。
1.2.2 信息-传递多计算机系统
共享内存多处理器的一个变化模式是通过内部连接网络将多个计算机连接起来。每一个计算机包括一个处理器和一个本地内存,本地内存不能被其他的处理器访问。处理器通过网络向其他处理器发送信息。这样的多处理器系统通常称为“信息-传递多处理器”系统。如图(左)所示。
1.2.3 分布式共享内存系统
消息-传递系统需要编程者在程序代码中直接调用消息传递,使得编程比较困难(但是消息-传递系统有一个有点,就是不需要专门的同步控制机制控制对数据的同步访问)。分布式共享内存系统的内存和处理器在物理上是分布的,但是每个处理器采用单一的地址空间访问分布的内存。如图(右)所示。
2 消息-传递计算
2.1 消息-传递例程
2.1.1 基本发送和接收例程
发送和接收消息-传递库函数调用的一般形式为:
Send(参数表);
Recv(参数表);
Send位于发起消息传递的源处理中,recv位于收集send发的消息的目的处理中。Send的最简单的参数集包含目标地址的ID以及消息。Recv的最简单的参数集包含源地址的ID以及用来存放消息的地址。如果用C语言来描述,则在源处理中调用:
Send(x, destination_id);
在目标处理中调用:
Recv(y, source_id);
下图显示了调用过程。
2.1.2 同步的消息传递
同步的发送例程在返回前要等待接收方已经接收到发送的信息。同步的接收例程在返回前要等待期望的信息到达并被存储。对于同步例程来说,一方面进行消息的传递,一方面还要进行同步处理。下图显示了一个“three-way”同步协议。
2.1.3 广播(broadcast),收集(gather)和分发(scatter)
广播用来将同一个信息发给所有的处理(多播是将同一信息发给预先定义好的一组处理)。广播和多播可以都看成广播。广播处理过程如下图所示,处理器0将数据发送给处理器0到p-1。
收集是一个处理器从一组处理器收集数据。处理过程如下图所示,处理器0将数据从处理器0到p-1收集过来并按次序组成数据包。
分发用来将一组数据分发给不同的处理器,数组中的第i个数据发给第i个处理器。分发处理过程如下图所示,处理器0将数据分发给处理器0到p-1。
2.2 并行程序评价
2.2.1 并行执行时间的评价
在多处理器环境中,为了进行同步,需要在多个处理器之间传递信息。这样,由两部分组成:
是通信时间,是计算时间。
(1)计算时间的评价:在串行算法中通过数算法的步骤个数可以估计计算时间。但是,当有多个处理器同步执行时,只需要对最复杂处理的步骤个数进行计数就可以了。当所有处理器执行相同操作时,只需要对一个处理器的处理步骤进行计数
文档评论(0)