高性能科学计算理论和方法课件:第二章PPT.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《高性能科学计算理论和方法课件:第二章PPT.ppt》由用户(罗嗣辉)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 性能 科学 计算 理论 方法 课件 第二 PPT
- 资源描述:
-
1、第二章第二章 并行硬件和并行软件1背景知识2串行硬件和软件输入输出程序一次只执行单个任务3“经典”的冯诺依曼结构4主存(Main memory)n主存中有许多区域,每个区域都可以存储指令和数据。n每个区域都有一个地址,可以通过这个地址来访问相应的区域及区域中存储的数据和指令。5中央处理单元(CPU)n中央处理单元中央处理单元分为控制单元和算术逻辑单元(Arithmetic Logic Unit,ALU)。n控制单元控制单元负责决定应该执行程序中的哪些指令。nALU负责执行指令。add 2+26关键术语n寄存器CPU中的数据和程序执行时的状态信息存储在特殊的快速存储介质中n程序计数器控制单元中一
2、个特殊的寄存器,用来存放下一条指令的地址。n总线指令和数据通过CPU和主存之间的互连结构进行传输。这种互连结构通常是总线,总线中包括一组并行的线以及控制这些线的硬件。7memoryCPUfetch/read当数据或指令从主存传送到CPU时,我们称数据或指令从内存中取出或者读出。8memoryCPUwrite/store当数据或指令从CPU传送到主存中时,我们称数据或指令写入或者存入内存中。9冯诺依曼瓶颈主存和CPU之间的分离称为冯诺依曼瓶颈。这是因为互连结构限定了指令和数据访问的速率。程序运行所需要的大部分数据和指令被有效地与CPU隔离开。10一个操作系统“进程”n进程是运行着的程序的一个实例
3、。n一个进程包括如下实体:n可执行的机器语言程序.n一块内存空间.n操作系统分配给进程的资源描述符.n安全信息.n进程状态信息.11多任务n大多数现代操作系统都是多任务的。 这意味着操作系统提供对同时运行多个程序的支持。n这对于单核系统也是可行的,因为每个进程只运行一小段时间(几毫秒),亦即一个时间片。在一个程序执行了一个时间片的时间后,操作系统就切换执行其他程序12多任务n在一个多任务操作系统中,如果一个进程需要等待某个资源,例如需要从外部的存储器读数据,它会阻塞。这意味着,该进程会停止运行,操作系统可以运行其他进程。例如:航班预定系统在一个用户因为等待座位图而阻塞时,可为另一个用户提供可用
4、的航线查询。13线程n线程包含在进程中。n线程为程序员提供了一种机制,将程序划分为多个大致独立的任务,当某个任务阻塞时能执行其他任务。n此外,在大多数系统中,线程间的切换比进程间的切换更快。14一个进程和两个线程the “master” thread(主线程)starting a threadIs called forking(派生)(派生)terminating a threadIs called joining(合并)(合并)15对冯诺依曼模型的改进16缓存 (Cache)nCPU Cache 是一组相比于主存,CPU能更快速地访问的内存区域。nCPU Cache位于与CPU同一块的芯片或
5、者位于其他芯片上,但比普通的内存芯片能更快地访问。17局部性原理n程序访问完一个存储区域往往会访问接下来的区域,这个原理称为局部性。n空间局部性访问附近的位置n时间局部性访问在不久的将来18局部性原理float z1000;sum = 0.0;for (i = 0; i 1000; i+) sum += zi;19缓存的分层(level)L1L2L3最小 & 最快最大 & 最慢20Cache命中(hit)L1L2L3x sumy z totalA radius r1 centerfetch x21Cache缺失(miss)L1L2L3y sumr1 z totalA radius center
6、fetch xx主存22与缓存有关的问题n当CPU向Cache中写数据时,Cache中的值与主存中的值就会不同或者不一致(inconsistent)。n有两种方法来解决这个不一致性问题:写直达(write-through) 和写回(write-back) 23与缓存有关的问题n在写直达(write-through) Cache中,当CPU向Cache写数据时,高速缓存行会立即写入主存中。n在写回(write-back) Cache中,数据不是立即更新到主存中,而是将发生数据更新的高速缓存行标记成脏(dirty)。当发生高速缓存行替换时,标记为脏的高速缓存行被写入主存中。24缓存映射n全相联(f
7、ully associative) Cache每个高速缓存行能够放置在Cache中的任意位置。n直接映射(directed mapped) Cache每个高速缓存行在Cache中有唯一的位置。nn路组相联(n-way set associated)每个高速缓存行都能放置到Cache中n个不同区域位置中的一个。25n路组相联n当内存中的行(多于一行)能被映射到Cache中的多个不同位置(全相联和n路组相联)时,需要决定替换或者驱逐Cache中的哪一行。x26例子假设主存有16行,分别用015标记,Cache有4行,用03标记。在全相联映射中,主存中的0号行能够映射到Cache中的0、1、2、3任
8、意一行。在直接映射Cache中,可以根据主存中高速缓存行的标记值除以4求余,获得在Cache中的索引。因此主存中0、4、8号行会映射到Cache的0号行,主存中的1、5、9号行映射到Cache的1号行,以此类推。27虚拟内存(1)n如果运行一个大型的程序,或者程序需要访问大型数据集,那么所有的指令或者数据可能在主存中放不下。n利用虚拟存储器(或虚拟内存),使得主存可以作为辅存的缓存。28虚拟内存(2)n虚拟内存通过在主存中存放当前执行程序所需要用到的部分,来利用时间和空间局部性.29虚拟内存(3)n交换空间(swap space)那些暂时用不到的部分存储在辅存的块中,称为交换空间。n页(pag
9、e) 数据块和指令块.n页通常比较大.n大多数系统采用固定大小的页,从416kB不等.30虚拟内存(4)program Aprogram Bprogram Cmain memory31虚拟页号n在编译程序时,给程序的页赋予虚拟页号。n当程序运行时,创建一张将虚拟页号映射成物理地址的表。n程序运行时使用到虚拟地址,这个页表就用来将虚拟地址转换成物理地址。假如页表的创建由操作系统管理,那么就能保证程序使用的内存不会与其他程序使用的内存重叠32页表n假如虚拟地址有32位,页大小是4KB = 4096字节,那么可以用12位来标识页中的每个字节。因此,可以用虚拟地址的低12位来定位页内字节,而剩下的位用
10、来定位页。表2-233思考题n在表2-2中,虚拟地址由12位字节偏移量和20位的虚拟页号组成。如果一个程序运行的系统上拥有这样的页大小和虚拟地址空间,这个程序有多少页?34转译后备缓冲区( TLB )n尽管多个程序可以同时使用主存了,但使用页表会增加程序总体的运行时间。n为了解决这个问题,处理器有一种专门用于地址转换的缓存,叫做转译后备缓冲区(TranslationLookaside Buffer,TLB)。35转译后备缓冲区(2)nTLB在快速存储介质中缓存了一些页表的条目(通常为16512条)。n页面失效假如想要访问的页不在内存中,即页表中该页没有合法的物理地址,该页只存储在磁盘上,那么这
11、次访问称为页面失效(page fault)。36指令级并行(ILP)n指令级并行(InstructionLevel parallelism,ILP)通过让多个处理器部件或者功能单元同时执行指令来提高处理器的性能。37指令级并行(2)n有两种主要方法来实现指令级并行:流水线和多发射。n流水线指将功能单元分阶段安排。n多发射指让多条指令同时启动。38流水线39流水线例子(1)n举一个关于计算的例子,假如我们想要将浮点数9.87104和6.54103相加,我们可以使用如下步骤:40流水线例子(2)n如果每次操作花费1纳秒,那么加法操作需要花费7纳秒nfor循环需要花费7000纳秒.41流水线例子(3
12、)另一个方案n将浮点数加法器划分成7个独立的硬件或者功能单元。n第一个单元取两个操作数,第二个比较指数,以此类推。n假设一个功能单元的输出是下面一个功能单元的输入,那么加法功能单元的输出是规格化结果功能单元的输入。42流水线例子(4)另一个方案43流水线例子(5)另一个方案n在时间5后,流水循环每1纳秒产生一个结果,而不再是每7纳秒一次。所以,执行for循环的总时间从7000纳秒降低到1006纳秒,提高了近7倍。44思考题2n当讨论浮点数加法时,我们简单地假设每个功能单元都花费相同的时间。如果每个取命令与存命令都耗费2纳秒,其余的每个操作耗费1纳秒。 a. 在上述假设下,每个浮点数加法要耗费多
13、少时间? b.非流水线1000对浮点数的加法要耗费多少时间? c.流水线1000对浮点数加法要耗费多少时间?45思考题2nd. 如果操作数/结果存储在不同级的内存层级上,那么取命令与存命令所要耗费的时间可能会差别非常大。假设从一级缓存上取数据/指令要耗费2纳秒,从二级缓存上取数据/指令要耗费5纳秒,从主存取数据/指令要耗费50纳秒。当执行某条指令,取其中一个操作数时,发生了一次一级缓存失效,那么流水线会发生什么情况?如果又发生二级缓存失效,又会怎样?46思考题2的答案na. nb. 9 1000 = 9000 nanoseconds47思考题2的答案nc. 9 + 999 2 = 2007ns
14、48思考题2的答案nd. 49多发射(1)n多发射处理器通过复制功能单元来同时执行程序中的不同指令。adder #1adder #2z0z2z1z3for (i = 0; i 0) w = x ;e l s e w = y ;Z 应该是正数如果系统预测错误,需要回退机制,然后执行w=y.53硬件多线程n指令级并行是很难利用的,因为程序中有许多部分之间存在依赖关系。n硬件多线程(hardware multithreading)为系统提供了一种机制,使得当前执行的任务被阻塞时,系统能够继续其他有用的工作。n例如,如果当前任务需要等待数据从内存中读出,那么它可以通过执行其他线程而不是继续当前线程来发
15、掘并行性.54硬件多线程(2)n细粒度(fine-grained)在细粒度多线程中,处理器在每条指令执行完后切换线程,从而跳过被阻塞的线程。n优点: 能够避免因为阻塞而导致机器时间的浪费.n缺点: 执行很长一段指令的线程在执行每条指令的时候都需要等待.55硬件多线程(3)n粗粒度(coarse grained)只切换那些需要等待较长时间才能完成操作(如从主存中加载)而被阻塞的线程。n优点: 不需要线程间的立即切换.n缺点: 处理器还是可能在短阻塞时空闲,线程间的切换也还是会导致延迟.56硬件多线程(4)n同步多线程(Simultaneous Multithreading,SMT)是细粒度多线程
16、的变种。n它通过允许多个线程同时使用多个功能单元来利用超标量处理器的性能。如果我们指定“优先”线程,那么能够在一定程度上减轻线程减速的问题。57并行硬件并行硬件58并行硬件n因为有多个复制的功能单元,所以多发射和流水线可以认为是并行硬件。但是,这种并行性通常对程序员是不可见的,所以我们仍把它们当成基本的冯诺依曼结构的扩展。n我们的原则是,并行硬件应该是仅限于对程序员可见的硬件。换句话说,如果能够通过修改源代码而开发并行性或者必须修改源代码来开发并行性,那么我们认为这种硬件是并行硬件59Flynn分类法SISDSingle instruction streamSingle data stream
17、(SIMD)Single instruction streamMultiple data streamMISDMultiple instruction streamSingle data stream(MIMD)Multiple instruction streamMultiple data streamclassic von Neumannnot covered60SIMDn单指令多数据流(Single Instruction,Multiple Data,SIMD)系统是并行系统。n顾名思义,SIMD系统通过对多个数据执行相同的指令从而实现在多个数据流上的操作。61SIMD例子control
18、 unitALU1ALU2ALUnfor (i = 0; i n; i+) xi += yi;x1x2xnn data itemsn ALUs62SIMDn如果ALU的数目小于数据的个数,怎么办?n将数据分组,然后迭代计算n例如, m = 4 ALUs,n = 15 个数据RoundALU1ALU2ALU3ALU41X0X1X2X32X4X5X6X73X8X9X10X114X12X13X1463SIMD的缺点n所有的ALU要么执行相同的指令,要么同时处于空闲状态的要求会严重地降低SIMD系统的整体性能。n在“经典”的SIMD系统中,ALU必须同步操作,即在下一条指令开始执行之前,每个ALU必须
19、等待广播。n此外,ALU没有指令存储器,所以ALU不能通过存储指令来延迟执行指令。nSIMD并行性在大型数据并行问题上非常有用,但是在处理其他并行问题时并不优秀。64向量处理器n向量处理器的重要特点是能够对数组或者数据向量进行操作,而传统的CPU是对单独的数据元素或者标量进行操作。n向量寄存器.n能够存储由多个操作数组成的向量,并且能够同时对其内容进行操作。向量的长度由系统决定,从4到128个64位元素不等。65向量处理器(2)n向量化和流水化的功能单元.n对向量中的每个元素需要做同样的操作,或者某些类似于加法的操作,这些操作需要应用到两个向量中相应的元素对上。因此,向量操作是SIMD.n向量
20、指令.n在向量上操作而不是在标量上操作的指令.66向量处理器(3)n交叉存储器.n内存系统由多个内存“体”组成,每个内存体能够独立访问.n在访问完一个内存体之后,再次访问它之前需要有一个时间延迟,但如果接下来的内存访问是访问另一个内存体,那么它很快就能访问到。所以,如果向量中的各个元素分布在不同的内存体中,那么在装入/存储连续数据时能够几乎无延迟地访问。67向量处理器(4)n步长式存储器访问和硬件散射/聚集.n在步长式存储器访问中,程序能够访问向量中固定间隔的元素,例如能够以跨度4访问第一个元素、第五个元素、第九个元素等。68向量处理器优点n速度快而且容易使用;n向量编译器擅长于识别向量化的代
21、码;n它们能识别出不能向量化的循环而且能提供循环为什么不能向量化的原因;因此,用户能对是否重写代码以支持向量化做出明智的决定;n向量系统有很高的内存带宽;n每个加载的数据都会使用,不像基于Cache的系统不能完全利用高速缓存行中的每个元素。69向量处理器缺点n不能处理不规则的数据结构和其他的并行结构n可扩展性差。可扩展性是指能够处理更大问题的能力。70图形处理单元( GPU )n实时图形应用编程接口使用点、线、三角形来表示物体的表面。71GPUsn使用图形处理流水线(graphics processing pipeline)将物体表面的内部表示转换为一个像素的数组。 这个像素数组能够在计算机屏
22、幕上显示出来。n流水线的许多阶段是可编程的。可编程阶段的行为可以通过着色函数(shader function)来说明。n典型的着色函数一般比较短,通常只有几行C代码.72GPUsn因为着色函数能够应用到图形流中的多种元素(例如顶点)上, 所以一般是隐式并行的。nGPU可以通过使用SIMD并行来优化性能。 现在所有的GPU都使用SIMD并行。n需要强调的是,GPU不是纯粹的SIMD系统。 尽管在一个给定核上的ALU使用了SIMD并行,但现代的GPU有几十个核,每个核都能独立地执行指令流。73MIMD系统n多指令多数据流(Multiple Instruction,Multiple Data,MIM
23、D)系统支持同时多个指令流在多个数据流上操作。nMIMD系统通常包括一组完全独立的处理单元或者核,每个处理单元或者核都有自己的控制单元和ALU。74共享内存系统n在共享内存系统中,一组自治的处理器通过互连网络(internection network)与内存系统相互连接。n每个处理器能够访问每个内存区域。n处理器通过访问共享的数据结构来隐式地通信。75共享内存系统(2)n最广泛使用的共享内存系统使用一个或者多个多核处理器.n(一个多核处理器在一块芯片上有多个CPU或者核)76共享内存系统(3)Figure 2.377一致内存访问(UMA)多核系统Figure 2.5每个核访问内存中任何一个区域
24、的时间都相同.78非一致内存访问(NUMA)多核系统Figure 2.6访问与核直接连接的那块内存区域比访问其他内存区域要快很多,因为访问其他内存区域需要通过另一块芯片.79分布式内存系统n集群(clusters)n由一组商品化系统组成(例如PC),通过商品化网络连接(例如以太网)。n实际上,集群系统中的节点是通过通信网络相互连接的独立计算单元.80分布式内存系统Figure 2.481互连网络n互连网络(interconnection network)在分布式内存系统和共享内存系统中都扮演了一个决定性的角色,即使处理器和内存无比强大,但一个缓慢的互连网络会严重降低除简单并行程序外所有程序的整
25、体性能。n分两类:共享内存互连网络和分布式内存互连网络82共享内存互连网络n总线(bus)互联n总线是由一组并行通信线和控制对总线访问的硬件组成的.n总线的核心特征是连接到总线上的设备共享通信线.n因为通信线是共享的,因此随着连接到总线设备的增多,争夺总线的概率增大,总线的预期性能会下降.83共享内存互连网络n交换互连网络n使用交换器(switch)来控制相互连接设备之间的数据传递.n交叉开关矩阵(crossbar) n交叉开关矩阵允许在不同设备之间同时进行通信,所以比总线速度快.n但是,交换器和链路带来的开销也相对高。一个小型的基于总线系统比相等规模的基于交叉开关矩阵系统便宜. 84Figu
展开阅读全文