- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
20100428第三章并行计算模型和任务分解策略
第三章 并行计算模型和任务分解策略
首先,我们将研究不同类型的并行计算机,为了不严格限定于某个指定机型,我们通过模型把并行计算机抽象为几个特定属性。为了说明并行程序中处理器之间的通信概念模型我们讨论了不同的程序模型,另外为了分析和评估我们算法的性能,我们讨论了多计算机架构下评估并行算法复杂度的代价模型。在介绍并分析的各种代价模型的基础上给出了改进型的代价模型。
其次我们定义这样几个指标如负载均衡和网络半径等用来研究图分解问题的主要特性。并把图分解问题归纳为一般类型和空间映射图类型。我们重点研究的是后者,因为多尺度配置真实感光照渲染算法可以很方便的描述成空间映射图形式。
3.1 并行计算机模型
以下给出并行计算机的模型的概述,根据其结构并行计算机大致可分为以下几类。
多计算机(Multicomputer):一个von Neumann计算机由一个中央处理器(CPU)和一个存储单元组成。一个多计算机则由很多von Neumann计算机通过互联网络连接而成的计算机系统。见图3.1。每个计算机(节点)执行自己的计算并只能访问本地的存储。通过消息实现各计算机之间的互相通讯。在理想的网络中,两个计算节点之间的信息传送代价与本地的计算节点和它的网络阻塞无关,只和消息的长度相关。以上多计算机和分布式存储的MIMD机器之间的主要区别在于后者的两个节点间的信息传输不依赖于本地计算和其它网络阻塞。
分布式存储的MIMD类型的机器主要有IBM的SP, Intel的Paragon, 曙光4000系列, Cray的T3E, Meiko的CS-2, NEC的Cenju 3, 和nCUBE等。通过本地网络的连接的集群系统可以认为是分布式存储的MIMD型计算机。
多处理器(Multiprocessor):一个多处理器型并行计算机(共享存储的MIMD计算机)由大量处理器组成,所有的处理器都访问一个共同的存储。理论上理想的模型就是PRAM模型(并行的随机访问系统),即任何一个处理器访问任一存储单元都是等效的(见图3.2)。并发存储访问是否允许取决于所使用的真正的模型【34】。
混合模型:分布式共享存储(DMS)计算机,提供了一个统一的存储访问地址空间但是分布式物理存储模块。编译器和运行时系统负责具体的并行化应用。这种系统软件比较复杂。
图3.1 多计算机模型 图3.2 PRAM 模型
SIMD计算机:在一个SIMD(单指令流多数据流)计算机中在不同数据流阶段所有的处理器执行同样的指令流。典型的机型有MasPar的MP, 和联想机器CM2。
多计算机系统具有良好的可扩展性,价格低廉的集群式并行计算机就属于这种模型,本文中的算法主要基于多计算机体系结构。
3.2 程序模型
并行程序的编程语言如C或Fortan。并行结构以某种类库的形式直接整合进这些编程语言中。编程模型确定了并行程序的风格。一般可分为数据并行、共享存储和消息传递等模型[35]。
数据并行编程:数据并行模型开始于编写同步SIMD并行计算机程序。程序员需要在每个处理器上独立执行一个程序,每个处理器均有其自己的存储器。程序员需要定义数据如何分配到每个局部存储中。实际应用中大量的条件分支的需要使得其很难高效的运行在SIMD型的机器上。
共享存储编程:共享存储模型是一个简单的模型,因为程序员写并行程序就像写串行程序一样。一个程序的执行与几个处理器独立,也不需要同步。一个处理器的执行状态独立于其它处理器的运行状态。由于所有运行程序均访问统一的全局存储器,这就需要小心处理任何一个处理器需要访问的数据都必须和其它处理器的访问之间没有任何冲突。
消息传递模型:我们把消息传递模型和SPMD(单一程序多数据)应用技术结合使用。每个程序独立在几个处理器上执行,不需要同步(MIMD系统)。每个程序均立即访问本地存储,通过消息传递实现远程的存储访问。通信方式主要有一下几个不同类型:
点对点通信(point-to-point communication):一个处理器发送一个数据包到另一个处理器,使用发送操作,目标处理器必须调用一个接受操作获得这些数据。我们假定一个处理器可以同时和其它处理器通信,我们还假定一个处理器在同一时间只能和一个处理器通信。且通信为异步,也就是说接收处理器可以在发送操作完成后的任意时间调用接收命令。
集合通信(collective communication):集合通信涉及到多处理器之间的通信。
投射(cast):一个处理器同时拷贝同样的信息到其它多个处理器的过程。
聚合(combine):组内每个处理器只负责发送整个数据段的一部分,由一个主处理器接受所有结果,这个过程需要一个额外的数据统计数据项的个数。
M个处理器之间的集合通信可以通过大量的点对点通信
文档评论(0)