第1章 并行计算概述
1.1 并行计算简介
对于计算机而言,“并行”就是同一时间间隔内,增加操作量,多个运算部件共同完成一个任务。并行计算(parallel computing)就是由运行在多个部件上的小任务合作来求解一个大规模计算问题的一种方法。
在科学计算领域,待求解问题的规模也越来越大,采用并行计算可以降低单个问题求解的时间,增加问题求解规模,提高问题求解精度,改善多机同时执行多个串行程序的容错性、提高可用性和吞吐率。
1.2 并行处理的计算机体系结构
1.2.1 并行计算机分类
Flynn分类法
Flynn提出指令流、数据流和多倍性的概念,把不同的计算机分为四大类。
按照指令和数据流不同的组织方式,计算机系统可分为四类:
(1) 单指令单数据流(Single Instruction stream and Single Data stream,SISD):SISD其实就是传统的顺序执行的单处理器计算机,其指令部件每次只对一条指令进行译码,并只对一个操作部件分配数据。流水线方式的单处理机有时也被当成SISD。
(2) 单指令多数据流(SIMD) 特性:各处理机以同步的形式执行同一条指令
(3) 多指令单数据流(MISD) 特性:被证明不可能,至少是不实际
(4) 多指令多数据流(MIMD) 特性:能够实现作业,任务,指令等各级全面并行
1.3 并行算法的设计方法
并行算法是适合在并行计算机上实现的算法。并行算法的目的是用增加空间复杂度来降低时间复杂度。
1.3.1 并行算法的相关概念
粒度
粒度(granularity)是各个多处理机可独立并行执行的任务大小的量度。并行粒度是个相对的概念。并行算法的时间复杂性
并行算法的时间复杂性用函数f(n)
表示。其中,n 为输入规模,f 为从第一台处理机开始执行算法直到最后一台处理机完成该算法所执行时间的最大值。并行算法的耗费
并行算法的耗费 = 时间复杂度 x P (P为并行处理机台数)并行算法的加速比
并行加速比是表示采用多个处理器计算速度所能得到的加速的倍数。设tseq表示用串行机求解某个计算问题所需的时间,tP是用P个处理机求解该问题所需的时间。
定义1.3.1 P个处理机加速比为
Sp=t1tP
定义1.3.2 并行加速比
S^p=tseq