1、并行与分布式计算,2017-10-23,计算机前沿讲座,主要内容,一、概念辨析 二、并行计算 三、分布式计算 四、基于GPU的高性能计算 五、分布式应用框架Hadoop,1,一、概念辨析,并行计算 分布式计算 并行计算vs分布式计算 网格计算 云计算 云计算vs网格计算 普适计算 普适计算vs云计算,2,并行计算:,并行计算或称平行计算是相对于串行计算来说的;所谓并行计算可分为时间上的并行和空间上的并行。 时间上的并行就是指流水线技术,而空间上的并行则是指用多个处理器并发的执行计算。并行计算科学中主要研究的是空间上的并行问题。,并行计算通常是针对计算量的科学计算问题。,分为:单机的多核多处理器
2、的并行&多机(集群)的并行,集群计算&集群服务,高性能计算,超级计算,3,分布式计算:,是计算机科学的一个重要分支,它主要研究如何把一个需要巨大的计算能力才能解决的问题分解成许多小的部分,然后把这些部分再分配给许多志愿者计算机进行处理,最后把这些计算结果综合起来得到最终的结果。,目前常见的分布式计算项目通常使用世界各地上千万志愿者计算机的闲置计算能力,通过互联网进行数据传输。,可以帮助一些缺乏研究资金的、公益性质的科学研究,加速人类的科学进程。有效利用全世界联网机器的闲置处理能力,向大众普及科学意识。,4,并行计算vs分布式计算,(1)并行计算借助并行算法和并行编程语言能够实现进程级并行(如M
3、PI)和线程级并行(如openMP)。而分布式计算只是将任务分成小块到各个计算机分别计算各自执行。 (2)粒度方面,并行计算中,处理器间的交互一般很频繁,往往具有细粒度和低开销的特征,并且被认为是可靠的。而在分布式计算中,处理器间的交互不频繁,交互特征是粗粒度,并且被认为是不可靠的。并行计算注重短的执行时间,分布式计算则注重长的正常运行时间。,5,网格计算,网格计算是分布式计算的一种; 网格计算的实质就是组合与共享资源并确保系统安全。网格计算通过利用大量异构计算机的未用资源(CPU周 期和磁盘存储),将其作为嵌入在分布式电信基础设施中的一个虚拟的计算机集群,为解决大规模的计算问题提供一个模型。
4、网格计算的焦点放在支持跨管理域计算 的能力,这使它与传统的计算机集群或传统的分布式计算相区别。,6,云计算,云计算是最新开始的新概念,它不只是计算等计算机概念,还有运营服务等概念了。它是分布式计算、并行计算和网格计算的发展,或者说是这些概念的商业实现。云计算不但包括分布式计算还包括分布式存储和分布式缓存。分布式存储又包括分布式文件存储和分布式数据存储。,7,云计算vs网格计算,网格计算强调资源共享,任何人都可以作为请求者使用其它节点的资源,任何人都需要贡献一定资源给其他节点。网格计算强调将工作量转移到远程的可用计算资源上。云计算强调专有,任何人都可以获取自己的专有资源,并且这些资源是由少数团体
5、提供的,使用者不需要贡献自己的资源。 网格计算侧重并行的计算集中性需求,并且难以自动扩展。云计算侧重事务性应用,有大量的单独的请求,可以实现自动扩展。,8,普适计算,普适计算(Pervasive / Ubiquitous Computing)是指,无所不在的、随时随地可以进行计算的一种方式;无论何时何地,只要需要,就可以通过某种设备访问到所需的信息。 普适计算最重要的两个特征:间断连接;轻量计算(即计算资源有限) 普适计算的软件技术就是要实现在这种环境下的事务和数据处理。,9,普适计算vs云计算,概念不同 普适计算是学术概念 云计算是商业概念 高度不同 普适计算是一种思想:融合 云计算是一种手
6、段 研究的重心不同 普适计算强调终端与服务 云计算更关注集合与协同 应该成为未来并存的计算模式,10,二、并行计算,1 并行计算概述 2 并行计算理论基础 3 多线程编程 4 OpenMP编程 5 MPI编程,11,1 并行计算概述,1.1 并行计算定义 1.2 为什么需要并行计算 1.3 超级计算机的世界格局 1.4 并行计算机系统结构 1.5 并行平台的通信模型 1.6 设计并行算法的四个阶段 1.7 并行算法求和,12,并行计算是相对于串行计算来说的; 所谓并行计算可分为时间上的并行和空间上的并行。 时间上的并行就是指流水线技术,而空间上的并行则是指用多个处理器并发的执行计算。并行计算科
7、学中主要研究的是空间上的并行问题。,并行计算通常是针对计算量的科学计算问题。,分为:单机的多核多处理器的并行&多机(集群)的并行,集群计算&集群服务,高性能计算,超级计算,1.1 并行计算定义,13,1.2 为什么需要并行计算,1)特殊行业的需求:,2)现代科学方法,3)多核处理器,“从某种程度上说,对于软件开发者而言,CPU主频提升就像是免费的午餐,此前所有的程序很自然地会从主频的提升中受益,而如今多核出现了,这种免费的午餐没有了。我们必须针对多核重新进行软件设计” 。,多核技术是处理器发展的必然趋势。,14,1.3 超级计算机的世界格局,超级计算是解决国家经济建设、社会发展、科学进步、国家
8、安全和国防建设等领域一系列重大挑战性问题的重要手段,是国家综合国力、科技竞争力和信息化建设能力的重要体现,已经成为世界各国争夺的战略制高点。,1993年,德国曼海姆大学汉斯、埃里克等人发起创建了全球超级计算机TOP500排名榜。TOP500目前由德国曼海姆大学、美国田纳西大学、美国能源研究科学计算中心以及劳伦斯伯克利国家实验室联合举办,每年排名两次,已发展成为全世界最具权威的超级计算机排名榜,是衡量各国超级计算水平的最重要的参考依据。,15,1.4 并行体系结构-控制结构,并行计算机的处理器可以在单一控制部件的集中控制下运行,也可以独立运行。 如果单一控制部件向每个处理部件分派相同指令,该模型
9、称为单指令多数据流(SIMD)。 如果计算机中的每个处理器都能够独立于其他处理器对不同的数据执行不同的指令,这样的模型被称为多指令流多数据流(MIMD)。,16,SIMD和MIMD处理机,a)典型的SIMD体系结构 b)典型的MIMD体系结构,17,1.4 并行体系结构-PRAM模型,基本概念 由Fortune和Wyllie1978年提出,又称SIMD-SM模型。有一个集中的共享存储器和一个指令控制器,通过SM的R/W交换数据,隐式同步计算。 结构图,18,分类 PRAM-CRCW并发读并发写 CPRAM-CRCW(Common PRAM-CRCW):仅允许写入相同数据 PPRAM-CRCW(
10、Priority PRAM-CRCW):仅允许优先级最高的处理器写入 APRAM-CRCW(Arbitrary PRAM-CRCW):允许任意处理器自由写入 PRAM-CREW并发读互斥写 PRAM-EREW互斥读互斥写 计算能力比较 PRAM-CRCW是最强的计算模型,PRAM-EREW可logp倍模拟PRAM-CREW和PRAM-CRCW,1.4 并行体系结构-PRAM模型,19,1.4 并行体系结构互联网络,拓扑结构1(一维线性阵列),只与左右近邻节点相连 N个节点用N-1条边 节点度为2 网络直径为N-1 对剖度为1 首尾连接时构成环(单向或双向),20,1.4 并行体系结构互联网络,
11、拓扑结构2 (四近邻连接),21,1.4 并行体系结构互联网络,拓扑结构3(树形连接),22,1.4 并行体系结构互联网络,拓扑结构4 (超立方连接),23,1.5 并行平台的通信模型,并行任务间有两种主要的数据交换方式访问共享数据空间以及交换消息。 提供共享数据空间的平台称为共享地址空间平台或者称为多处理器。 支持消息交换的平台称为消息传递平台或者称为多计算机。,24,共享地址空间平台,所有处理器都能访问部分(或全部)内存。 处理器通过修改存储在共享地址空间的数据来实现交互。 如果处理器访问系统中任何内存字(全局或本地)的时间都相同,该平台就归类为统一内存访问(UMA)平台,其他的平台则称为
12、非统一内存访问(NUMA)平台。,25,NUMA和UMA共享地址空间平台,典型的共享地址空间结构:a)统一内存访问共享地址空间计算机;b)带有高速缓存及内存的统一内存访问共享地址空间计算机;c)只带本地内存的非统一内存访问共享地址空间计算机。,26,存储转发(SF)路由,存储转发(Store-and-Forward)路由 消息被分成基本的传输单位-信包(Packet), 每个信包都含有寻径信息; 当一个信包到达中间节点A时,A把整个信包放入其通信缓冲器中,然后在选路算法的控制下选择下一个相邻节点B,当从A到B的通道空闲并且B的通信缓冲器可用时,把信包从A发向B; 信包的传输时间: tcomm
13、(SF) = ts + (mtw + th)l=O(ml) 缺点: 每个结点必须对整个消息和信包进行缓冲,缓冲器较大; 网络时延与发送消息 所经历的节点数成正比,27,直通(Cut Through)路由,直通(Cut Through)路由 在传递一个消息之前,就为它建立一条从源结点到目的结点的物理通道。在传递的全部过程中,线路的每一段都被占用,当消息的尾部经过网络后,整条物理链路才被废弃。 传输时间: tcomm (CT) = ts + mtw + lth = O(m+l) 缺点: 物理通道非共享 传输过程中物理通道一直被占用,28,一到多播送SF模式,环 步骤: 先左右邻近传送;再左右二个方
14、向同时播送 示例:通讯时间:,29,一到多播送CT模式,环 步骤:(1)先发送至p/2远的处理器;(2)再同时发送至p/22远的处理器;(i)再同时发送至p/2i远的处理器; 示例:图8.8通讯时间:,30,多到多播送SF模式,环 步骤:同时向右(或左)播送刚接收到的信包 示例:图8.10通讯时间:,已有数据,第2步传送数据2,31,多到多播送SF模式,环绕网孔 步骤:(1)先进行行的播送;(2)再进行列的播送;示例:图8.11通讯时间:,32,1.6 设计并行算法的四个阶段,设计并行算法的四个阶段(PCAM) 划分(Partitioning) 通讯(Communication) 组合(Agg
15、lomeration) 映射(Mapping) 划分:分解成小的任务,开拓并发性; 通讯:确定诸任务间的数据交换,监测划分的合理性; 组合:依据任务的局部性,组合成更大的任务; 映射:将每个任务分配到处理器上,提高算法的性能。,33,PCAM设计过程,34,域分解,划分的对象是数据,可以是算法的输入数据、中间处理数据和输出数据; 将数据分解成大致相等的小数据片; 划分时考虑数据上的相应操作; 如果一个任务需要别的任务中的数据,则会产生任务间的通讯;,35,域分解,示例:三维网格的域分解,各格点上计算都是重复的。下图是三种分解方法:,36,域分解,不规则区域的分解示例:,37,功能分解,划分的对
16、象是计算,将计算划分为不同的任务,其出发点不同于域分解; 划分后,研究不同任务所需的数据。如果这些数据不相交的,则划分是成功的;如果数据有相当的重叠, 意味着要重新进行域分解和功能分解; 功能分解是一种更深层次的分解。,38,功能分解,示例1:搜索树示例2:气候模型,39,1.7 并行算法求和,问题: 在n个处理器上,每个处理器上有一个数,求这n个数之和。 思想:若n是2的幂;利用处理器的逻辑二叉树传播部分和,可以在log n 步完成求和。,40,1.7 求和 例子,计算16个部分和 得到全局和 表示从第i元素到第j个元素之和 并行时间:T =(log ) 加速比:S=(/log ),41,2
17、 并行计算概述,2.1 并行处理概述2.2 加速比性能定律2.3 并行程序性能优化的一般原则,42,固定负载的加速公式:,Ws+ Wp可相应地表示为(f+ (1-f) )W,则,p时,上式极限为: S= 1 / f,设并行开销的额外开销为Wo,43,Karp-Flatt度量,Amdahl定律忽略了并行开销。,实验决定的串行比例(experimentally determined serial fraction),根据它确定并行效率不高的原因:1)缺少并行性;2)算法或者体系结构中增加了开销。,44,2.3 并行程序性能优化的一般原则,(1)减少通信量、提高通信粒度,(2)全局通信尽量利用高效集
18、合通信算法,(4)负载平衡,(5)通信、计算的重叠,(6)通过引入重复计算来减少通信,即以计算换通信,(3)挖掘算法的并行度,减少CPU空闲等待,45,3 多线程编程,3.1线程的基本概念 3.2 线程的层次 3.3 线程的同步 3.4 多线程编程模型 3.5 多线程编程若干问题的讨论 3.6 多线程编程的方法,46,线程:,是进程中的一个实体,是进程上下文(context)中执行的代码序列,是被系统调度的基本单元。,线程自己只拥有很少的系统资源(如程序计数器、一组寄存器和栈),但它可与同属一个进程的其他线程共享所属进程所拥有的全部资源,同一进程中的多个线程之间可以并发执行,从而更好地改善了系
19、统资源的利用率。,每个程序至少包含一个线程,那就是主线程。,进程从来不执行任何东西,它只是线程的容器。,47,(1)创建一个线程比创建一个进程的代价小。(2)线程的切换比进程间切换的代价小。(3)充分利用多处理器。(4)数据共享。(5)快速响应特性。,多线程机制的优点:,信号量 锁 条件变量 消息,常用的同步机制:,48,4 OpenMP编程,4.1 OpenMP简介4.2 OpenMP编程技术4.3 OpenMP程序性能分析4.4 OpenMP编程实例,49,诞生于1997年 目前版本OpenMP 3.1 www.openmp.org 面向共享内存以及分布式共享内存的多处理器多线程并行编程语
20、言 一种能够被用于显式指导多线程、共享内存并行的应用程序编程接口(API) 具有良好的可移植性,支持多种编程语言 支持多种平台 大多数的类UNIX系统以及Windows NT系统(Windows 2000,Windows XP,Vista等),4.1 OpenMP编程简介,50,5 MPI编程,5.1 MPI简介 5.2 MPI编程基础 5.3 MPI集群通信 5.3 MPI性能优化 5.4 MPI编程实例 5.5 MPI与OpenMP对比 5.6 MPI与OpenMP混合编程,51,MPI是一种消息传递编程模型,并成为这种编程模型的代表和事实上的标准; MPI是一种标准或规范的代表,而不特指
21、某一个对它的具体实现; MPI是一个库,而不是一门语言; MPI库可以被FORTRAN77/C/Fortran90/C+调用。从语法上说它遵守所有对库函数/过程的调用规则,和一般的函数/过程没有什么区别。 最终目的是服务于进程间通信这一目标。 目前已经有MPI1和MPI2的标准。,MPI:,52,三、分布式计算,1、分布式计算简介 2、主流的分布式计算技术及规范,1、分布式计算简介,1.1 分布式计算的定义 1.2 分布式计算的特点及优点 1.3 分布式计算的著名应用 1.4 分布式计算与分布式系统,53,1.1 分布式计算的定义,分布式计算是一种把需要进行大量计算的工程数据分区成小块,由多台
22、计算机分别计算,在上传运算结果后,将结果统一合并得出数据结论的科学。,项目方把大的计算任务分割成小块(任务单元),通过互联网分发给志愿者进行计算,志愿者计算完成后再通过网络把各自的计算结果返回到项目方的服务器。,54,1.2 分布式计算的特点及优点,资源共享:可共享系统中的硬件、软件和数据等信息资源。分布式透明处理平台: 展现给用户的是一个统一的整体系统;高性价比:分布式系统具有较高的性能价格比。高可靠性:现代分布式系统具有高度容错机制。 可扩展性:添加几台PC等可提高系统的性能。 高度灵活性:能够兼容不同硬件厂商的产品,兼容低配置机器和外设而获得高性能计算。,55,2、主流的分布式计算技术及
23、规范,2.1 消息传递 2.2 客户-服务器模型 2.3 peer-to-peer模型 2.4 消息系统模式 2.5 远程过程调用 2.6 分布式对象 2.7 网络服务模型 2.8 移动Agent模型,抽象层次,高低,对象空间,协同式应用,网络服务,对象请求代理,移动Agent,远程过程调用,远程方法调用,客户-服务器,Peer- to - Peer,消息传递,56,Web Service:,Web Service是一种面向服务的架构的技术,通过标准的Web协议提供服务,目的是保证不同平台的应用服务可以互操作。,Web service是一个平台独立的,松耦合的,自包含的、基于可编程的web的应
24、用程序,可使用开放的XML标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。,57,四、基于GPU的高性能计算,1 GPU的产生背景及前景 2 GPU工作原理与作用 3 GPU与CPU的区别 4 GPU的优势 5 GPU的应用行业 6 CUDA,58,4.1 GPU的产生背景及前景,GPU产生之前,处理2D、3D图像都是依赖于CPU,但是由于CPU任务繁多,而且还有设计上的原因,这样面对处理日益复杂的3D图形图像时就会常常出现显卡等待CPU数据的情况,正是在这种情况下一种全新的图形图像处理器诞生了,从而大大加快了图形图像的处理速度,这种处理器就是“GPU”。,直
25、到NVIDIA 1999年推出了图形处理器GeForce 256,才把3D图形处理的全过程交由专门的高速处理器进行处理,GPU才真正开始迅速的发展。GPU的计算能力在近10年间有了飞速的发展,同时可编程性也有了本质的提升,因此针对GPU编写一些复杂的计算程序成为了可能。,59, 两者的处理器微结构存在很大的差别,CPU 中大量的晶体管用作高速缓存(cache)、逻辑控制单元(Control),只有少量的用作计算单元(ALU)。而 GPU 则把更多的晶体管用作了计算单元,只有少量晶体管用作了高速缓存(Cache)和逻辑控制单元,这使得 GPU 比 CPU更适合完成密集计算任务。,60,五、分布式
26、应用框架Hadoop,1当前面临的数据爆炸问题2 Hadoop的来源和组成3 HDFS文件系统4 MapReduce框架5 Hadoop的应用场合6 ZooKeeper,61,名称节点(NameNode):管理文件系统的命名空间,记录文件系统树及这个树内所有的文件和索引目录,同时也记录每个文件的每个块,所在的数据节点。 数据节点(DataNode):文件系统的工作者,存储并提供定位块的服务,并定时向名称节点发送块的存储列表,62,MapReduce 是一个编程模型,处理和产生大数据集。使用这个模型写出的程序自动在一个大集群上并行执行。运行时系统负责分割输入数据/分配程序在不同的机器上运行/处理机器出错/管理机器间的通信。mapreduce可以让没有任何分布式和并行经验的程序员很容易地利用大分布式系统的资源。 MapReduce将RPC编程细节与分布式处理过程隐藏起来 在Mapper或者Reducer中,用户只需指定一对key/value的处理逻辑,Hadoop框架会自动顺序迭代解析所有key/value,并将每对key/value交给Mapper或者Reducer处理。,5.4 MapReduce框架,63,