ImageVerifierCode 换一换
格式:DOCX , 页数:89 ,大小:200.98KB ,
资源ID:30490374      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/30490374.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(并行计算讲义.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

并行计算讲义.docx

1、并行计算讲义Last revision on 21 December 2020并行计算讲义燕山大学课程讲义并行计算导论授课人:郭栋梁学时:32学时其中实验课:8学时 三级项目:16学时第1章 引言概述 单处理器计算机即将成为过时的概念.我们需要考虑如下因素来着手改进提高计算机的性能:(1)单纯依靠单处理器很难提升现有计算机的性能.即使有一个性能十分强大的单处理器,其功耗也让人无法接受.想要提升计算机的性能,更加可行的方法是同时使用多个简单处理器,它所能达到的性能可能是现有单处理器计算机性能的几千倍。(2)观察结果显示,除非使用并行处理技术,一个程序在一台型号更新的单处理器计算机上的运行速度,可

2、能比在旧的计算机上的运行速度更慢。能依照给定算法检测出程序中的并行结构的编程工具还有待开发。此算法需要能够检测出变ja之间的依赖关系是否规则;而且不管这些依赖是否规则,此算法都能在保证程序正确性的前提下,通过将程序中的一些子任务并行化来加速程序的执行。(3)提升未来的计算机性能的关键就在于并行程序的开发,这涉及各个层面的工作:算法、程序开发、操作系统、编译器及硬件设备。(4)并行计算除了要考虑到参与并行计算的处理器的数量,还应该考虑处理器与处理器、处理器与内存之间的通信。最终计算性能的提升既依赖于算法能够提升的空间,更依赖于处理器执行算法的效率。而通信性能的提升则依赖于处理器对数据的供应和提取

3、的速度。(5)内存系统的速度始终比处理器慢,而且由于一次只能进行单个字的读写操作,内存系统的带宽也有限制。(6)内存系统的速度始终比处理器慢,而且由于一次只能进行单个字的读写操作,内存系统的带宽也有限制。本书内容主要涉及并行算法与为了实现这些算法而设计的硬件结构。硬件和软件是相互影响的,任何软件的最终运行环境是由处理器组成的底层硬件设备和相应的操作系统组成.我们在本章开始的部分会介绍一些概念,之后再来讨论为了实现这些概念有哪些方法和限制.自动并行编程对于算法在软件中的实现过程我们都很熟悉。在编程并不需要了解目标计算机系统的具体细节,因为编译器会处理这些细节.但是在编程和调试时依旧沿用着在单一央

4、处理器(CPU)上顺序处理的模式.从另一方面讲,为了实现并行算法,硬件和软件之间的相互联系需要比我们想象的更加密切。图展示了基于软件和硬件、利用并行计算机来运行程序的主要步骤和层次。从最顶层开始,第5层是指应用层,在这一层里描述的是需要并行计算平台实现的应用和问题。对应所需的输入和输出的格式也在这层进行定义。某些输人和输出(I/O)接口的描述还需要考虑数据存储的位置和时间相关性。这一层的结果会被更低一层采纳以便指导并行算法的开发工作。第4层是算法开发层,这里需要考虑到应用在问题中的实现。需要应用实现的计算内容决定了算法的具体任务和任务之间的相互依赖关系(interdependence)。在这一

5、阶段,算法的并行性并不一定会显现出来,因为在探索算法子任务执行的时候仍然在运用传统的线性思考。在这一阶段,也不需要考虑子任务的时间调度和处理器分配的问题。可能在现阶段就将这些问题解决的做法看起来很诱人,但是这样做会适得其反,因为这会掩盖程序中潜在的并行性。该层的结果是一个依赖图,或是一个有向图,或者是一个概括了任务之间依赖关系的临界矩阵。第3层是并行化层,在这一层将试着释放算法中潜在的并行性。这一层接收了第4层对算法的描述并且给出了基于软件实现的线程时间调度和处理器分配。另一种选择是在这一层进行基于超大规模集成电路的硬件实现的任务调度和处理器分配。本书内容主要集中在这一层上,在图用灰色方形显示

6、。第2层是代码层,在本层中并行算法用高级语言表示为代码。使用何种语言取决于目标并行计算在何种平台执行。图1. 1中右侧的分支表示算法在通用并行计算平台上的实现过程。这一做法即是我们所说的“并行编程”。并行计算机程序由所谓的“并发平台”执行,此种平台帮助编程人员管理线程,处理处理器级别的任务执行时间调度。并发平台包括Cilk+ ,OpenMP,CUDA(compute unified device architecture统一计算设备架构)。图1. 1中左侧的分支表示并行算法在定制的硬件设备上的实现,例如脉动阵列计算机。编程人员使用硬件描述语言(HDL ),例如Verilog,或者超高速集成电路

7、硬件描述语言(VHDL)。第1层的目标是算法的实现,或是在并行计算机平台的应用.实现的途径可以是在并行计算平台上使用多线程,也可以是在特定用途集成电路(ASIC)上或者现场可编程门阵列(FPGA)上使用特定的应用并行处理系统.那么并行计算机自动编程又是什么意思呢现在我们已经可以进行线性计算机自动编程.程序员用像C,Java,FORTRAN这样的高级语言编写代码,这些代码可以被计算机自动编译,不需要程序员再去做进一步的工作。更重要的是,程序员编程的时候也不需要了解底层计算平台的硬件细节.甚至在程序员完全不需要知道内存结构,也不知道CPU的信息和产他细节的情况下,代码就可以迅速地转化为结果。上述的

8、一切能用在并行编程上吗我们需要的并行编译器要能找到简单环路和解决处理器的分配等问题.而且这种编译器还能轻松地解决现在被称为“让人尴尬的并行算法”(译注:也就是相对独立的可以完全并行执行的算法)的问题2. 3。除此之外,程序员还需要对处理器之间的行为有着充分的了解,并且知道算法需要在何时执行。自动并行编程IEEE电子工程名词标准词典里对于“算法”一词的定义如下:为了描述在有限步骤内解决某一个问题而定义的过程或者规则。一个算法的任务或者过程一般是独立的。有些任务可以并发执行,但有些必须线性地按顺序进行.根据上述的定义,任何算法都是由并行和非并行两部分组成的。除了某些极端的情况,很难定义某些算法是并

9、行的而某些是完全串行的(即非并行),后面将探讨如何量化一个算法的并行度。如果某个算法由W个子任务组成,则称与这个算法有关的操作数是W.定义一个算法的基本组成部分如下:(1)不同的子任务。(2)子任务之间的依赖关系。当某一个子任务的输入是另一个子任务的输出时,他们之间则存在依赖关系。(3)算法的初始输入集。(4)算法的最终输出集。 我们通常用有向图(以下简称DG)来直观地表示算法的子任务之间的数据依赖关系。DG在描述算法的时候表示依赖图,需要用带箭头的线段强调子任务之间的数据流向关系.换句话说,如果一个依赖图的边没有箭头表示方向,就很难从图中得知数据的依赖关系。 定义一个依赖图是边和结点的集合.

10、结点表示算法的子任务,边表示子任务用到的数据.数据包括输人、输出和中间结果.需要注意的是,在一个依赖图中出现的不带箭头的边表示此边连接的两个结点之间没有数据依赖关系,它们只是共用算法中的某一个变量。这个变量可以是输入、输出或者在算法中作为IO媒介的中间结果。定义 DG是有向边和结点的集合。结点表示算法需要处理的子任务,有向边表示子任务之间的数据依赖关系.一个子任务的输出在一条边的开端部分,箭头指向的一端表示一个子任务的输入。定义有向无环图(DAG )址指一个没有任何环路的DG.图是一个示例算法的DAG,根据源结点和目标结点的关系来加以分类,在一个DAG或者DG里有3种不通过的边。定义一个DG中

11、的输人边是指只有目标结点而没有任何源结点的边,表述了算法的一个输入。在图中,可以粉到有3条这样的输人边,分别表示了输人in0 , in1,和in2定义一个DG中的内部边是指既有源结点又有目标结点的边,表述了算法的一个内部变量。定义一个DG中的输入结点是指所有的人边都是输入边的结点。在图1. 2中,可以看到结点0,1和2都表示输人结点。输人结点所表示的子任务在算法输人变量就绪后就被处理。定义一个DG中的输出结点是指所有的出边都是输出边的结点。图中,可以看到结点7和9都表示输人结点。但结点3不是输出结点,因为结点3的一条出边是指向结点7的内部边。定义一个DG中的内部结点是有至少一条人边和至少一条出

12、边的结点。算法的邻接矩阵一个算法也可以用一个邻接矩阵A来表示。若算法中有W个子任务,就有一个WW阶的0-1矩阵来表示这个算法,其中a(i,j)=1表示结点i的输人依赖于结点j的输出,j是源结点而i是目标结点。当a(i,j) = 0表示结点i的输入不依赖于节点j的输出。对于任何0=iN,此时每个处理器都需要从共享内存中读取数据,从而产生了内存冲突.可以把上述内容总结为:若处理器试图访问同一组内存模块时,将结果写回内存也有可能发生冲突对单一处理器而言,完成一个任务所需的时间(包括内存通信时间开销)表示如下:考虑到通信开销的加速比计算等式如下:内存不匹配比(R)的定义如下:R表示从内存读取一个数据块

13、的延迟和处理一个数据块的延迟的比位.根据子任务的粒以及内存读写的速度不同,应比小几个数量级。还可以将等式(1. 17)用N和R表示为:图展示了以N和R为参考量,在=1的情况下加速比的变化情况。数学模拟结果显示的变化对结果并无显着影响。由以上等式可知,在RNO. 1时加速比开始迅速下降.当R=1时出现了通信边界问题,井行化的优势也消失了。这提醒我们内存系统的设计和处理器之间的通信问题是很重要的。第3章还会讨论多核处理器.由于多核处理器将处理单元都染成在一块芯片上,相比于跨芯片的多处理器系统,多核处理器的处理单元之间的通信速率拐到了大辐提升。在多核系统中Tm减小了几个数量级,R值也大幅减小。 考虑内存的读写时间,多核处理器间的通信开销表示如下:其中=0,由内存系统和算法决定. =0时表示单处理器系统,处理器之间无数据交换。在某些算法中p的值可能等于log2 N甚至等于N, 其原因可能是程序员在编程时完全没有考虑到处理器之间的通信问题。针对多处理器系统的Amdahl法则假设一个算法或者一个任务

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1