【并行算法】知识点总结(一、二、三、九章)

第一章

1、并行计算的定义和主要目的
定义:并行计算是指同时对多个任务或多条指令、或对多个数据项进行处理。完成此项处理的计算机系统称为并行计算机系统,它是将多个处理器(可以几个、几十个、几千个、几万个等)通过网络连接以一定的方式有序地组织起来(一定的连接方式涉及网络的互联拓扑、通信协议等,而有序的组织则涉及操作系统、中间件软件等)。
并行计算的主要目的:
一是为了提供比传统计算机快的计算速度;
二是解决传统计算机无法解决的问题。
2、并行计算研究的主要内容
(1)并行计算机的设计
(2)有效算法的设计
(3)评价并行算法的方法
(4)并行计算机语言
(5)并行编程环境与工具
(6)并行程序的可移植性
(7)并行计算机的自动编程
3、并行计算机体系结构要素
结点、互联网络、内存
4、什么是并行计算机、并行计算机的组成部分
并行计算机是由一组处理单元组成的,这组处理单元通过相互之间的通信与协作,以更快的速度共同完成一项大规模的计算任务。
并行计算机的组成部分:计算节点和节点间的通信与协作机制。

5、进程的定义、状态和进程间的信息交流方式
(1)进程的定义:进程(process)可表示成四元组(P, C, D, S)
P是程序代码
C是进程的控制状态
D是进程的数据
S是进程的执行状态
(2)进程的状态:
非存在状态:进程依赖的程序还没有投入运行
就绪状态:进程由其父进程调入并准备运行
运行状态:进程占有CPU和其它必须的计算资源,并执行指令
挂起状态:由于CPU或其它必须的计算资源被其它进程占有,或必须等待某类事件的发生,进程转入挂起状态
退出状态:进程正常结束或因异常退出而被废弃
(3)进程间的信息交流方式:
进程是操作系统资源调度的基本单位
各进程不能直接访问其它进程的局部内存空间
多个进程之间相互交流信息 的三种形式 :
通信:进程间的数据传递称为进程间通信
同步:同步是使位于相同或不同处理机中的多个进程之间相互等待的操作
聚集:聚集将位于相同或不同处理机中的多个进程的局部结果综合起来

6、并行计算机的分类Flynn(1966年)分类法

Flynn(1966年)分类法是根据系统的指令流和数据流对计算机系统进行分类的一种方法。

指令流:机器所执行的指令序列
数据流:指令流调用的数据序列(包括输入数据和中间结果)

1)SISD:传统的单处理机系统。由程序生成的一个单指令流,在任意时刻处理单独的数据项。
2)SIMD:如:阵列处理机系统(Processor Arrays)。由一个控制器负责从存储器中取出指令并将这些指令发送给各个处理器,每个处理器同步执行相同的指令,但操作不同的数据。
3)MISD:相当于在指令一级并行,而在被操作的数据级串行的情况,实际上这种模型是不能实现的。
4)MIMD:当今绝大多数并行计算机都属于这一类。每个处理器拥有一个单独的程序,每个程序为每一个处理器生成一个指令流,每条指令对不同的数据进行操作。

第二章

1、并行处理技术的核心
核心:增加同一时间间隔的操作数
2、并行算法的定义
并行算法:适合于并行操作的一类算法的总称。
并行算法是指在各种并行计算机上求解问题和处理数据的算法,其本质是把多个任务映射到多个处理器中执行。并行算法的实现强烈依赖于计算机硬件环境和软件环境。
3、并行算法的分类
按运算对象分类
数值算法、非数值算法;
按进程间程序执行的顺序关系分类
同步算法、异步算法;独立并行算法;
(分布式算法)
按处理机承担的计算任务粒度分类
细粒度并行算法、中粒度并行算法、
大粒度并行算法
4、并行算法运行时的相关时间定义
并行算法运行时间:并行算法在具体并行计算机上求解一个问题所需时间。一般用Tp表示。
如果并行算法的不同任务进程不能同时开始或同时结束,并行算法运行的时间定义为:第一个任务进程开始执行的时间算起到最后一个任务进程执行完毕所需的时间。
5、并行机的规模
并行计算机的规模指某一具体并行计算机所具有的最大计算性能,包括处理机台数、单机性能、网络带宽、整体内存大小与输入输出能力等硬件指标;还涉及操作系统、并行程序设计环境等软件指标。
6、问题的规模和分类
问题规模:指问题求解的规模或问题求解的大小。问题规模是衡量并行计算机性能的一个重要参数。可以将问题规模大致分为:输入输出规模、计算规模、内存需求规模和通信(同步)规模。
应用问题的分类:
根据算法实现的难易程度、通信方式,将问题分为:同步问题(松散同步问题、非规则松散同步问题)、异步问题、独立并行问题。
7、并行算法的度量指标
除运行时间、并行机规模和问题规模,对于并行算法的度量指标还包括
1)并行度:算法中可并行执行的单位操作数
操作是计算的基本单位,一般指加减乘除等基本算术运算,也可以指某一任务级的作业。
2)粒度:粒度是一个相对的概念,与算法固有的内在并行度和具体的并行机相关。大粒度以为着并行执行的是大任务。
3)成本:运行时间与处理机个数的乘积
4)加速比:在单处理机上的运行时间除以多处理机上运行的时间
8、绝对加速比和相对加速比的定义
绝对加速比:将最好的串行算法与并行算法相比较.
定义一(与具体机器有关)将最好的串行算法在一台上的运行时间与并行算法在N台运行的时间相比。
定义二(与具体机器无关)将最好的串行算法在最快的顺序机上的执行时间与并行算法在并行机上的运行时间相比。
在这里插入图片描述
相对加速比:同一并行算法在单节点上运行时间与在多个相同节点构成的处理机系统上的运行时间之比。
这种定义侧重于描述算法和并行计算机本身的可扩展性。
在这里插入图片描述
9、可扩展性的直观定义、研究目的和度量方法
直观定义:对任意数量(n)的处理机和任意规模(s)的问题,若所有算法的系统效率 E =1, 则系统是可扩展的。
可扩展性的研究目的:
1)确定某类问题的何种并行算法与何种并行系统的组合,可有效的利用系统大量处理机
2)有算法在小规模并行机上的运行性能来预测起移植到大规模并行机上后的运行性能
3)对一固定规模的问题,能确定起运行在某类并行系统上时,所需的最有处理机台数和获得的最大加速比
4)指导并行算法和并行机体系结构的改进
度量方法:
等效率可扩展性度量方法:揭示问题规模与系统规模的关系(1987);
等速度可扩展性度量方法:揭示并行算法-机器组合的关系(1996)
等时间/通信开销比的可扩展性度量方法:等计算时间/通信开销比(1999)
可扩展性度量方法的基本要求:
1)能提供并行系统规模的变化如何影响起性能的信息;2)能描述并行算法与并行机组合的函数;3)可评估、可比较的定性性能度量方法。

第三章

1、并行计算模型的定义和作用

定义: 并行计算模型:从并行算法的设计和分析出发,将各种并行计算机(至少是某一类)的基本特征抽象出来,形成一个抽象的并行计算模型。
并行计算模型的作用
1)是并行算法实现的基础
2)给并行算法设计与分析提供了一个简单方便的框架
3)使并行算法的设计具有一定的生命力

2、PRAM模型定义、优缺点
定义:PRAM(Parallel Random Access Machine)模型是单指令流多数据流(SIMD)并行机中的一种具有共享存储的模型。它假设有一个无限大容量的共享存储器,并且有多个功能相同的处理器,在任意时刻处理器可以访问共享存储单元。
优缺点:
优点
适合并行算法表示和复杂性分析,易于使用,隐藏了并行机的通讯、同步等细节。
缺点
不适合MIMD并行机,忽略了SM的竞争、通讯延迟等因素
不现实,首先容量无限大的存储器是不存在的,而且由于各方面的原因,全局访存通常要比预想的慢。其次,他忽略了通信带宽的影响。

3、APRAM模型定义、优缺点
定义:
又称分相(Phase)PRAM或MIMD-SM。每个处理器有其局部存储器、局部时钟、局部程序;无全局时钟,各处理器异步执行;处理器通过SM进行通讯;处理器间依赖关系,需在并行程序中显式地加入同步(路)障(Synchronization Barrier)。
优缺点
易编程和分析算法的复杂度,但与现实相差较远,其上并行算法非常有限,也不适合MIMD-DM模型。
4、LogP模型的参数表示意义、优缺点
参数表示意义:
L(Latency):源处理机与目标处理机之间进行消息通信(一个或几个字)所需等待的延迟时间的上限。
o(overhead):处理机用于发送或者接受每个消息的时间开销。
g(gap):一台处理机连续进行消息发送或接收时的最小时间间隔。
P(Processor):处理机或处理模块的数量
LogP模型是异步的,假设所有消息都很短。
优缺点:
捕捉了MPC的通讯瓶颈,隐藏了并行机的网络拓扑、路由、协议,可以应用到共享存储、消息传递、数据并行的编程模型中;但难以进行算法描述、设计和分析。
5、BSP模型中参数的意义
BSP模型以三个参数描述分布式存储的多计算模型。三个参数:
处理机(P)
处理机之间的点对点通信的选路器(g)
执行以时间间隔L为周期的路障同步器(L)
6、LogP模型与BSP模型之间的关系
BSP vs. LogP
BSPLogP:BSP块同步BSP子集同步BSP进程对同步=LogP
BSP可以常数因子模拟LogP,LogP可以对数因子模拟BSP
BSP=LogP+Barriers-Overhead
BSP提供了更方便的程设环境,LogP更好地利用了机器资源
BSP似乎更简单、方便和符合结构化编程
7、并行算法设计的常用手段
设计算法经常采用以下三种手段:
1)将现有的串行算法中固有的并行性直接并行化;
2)从问题本身出发设计一个新的算法;
3)修改已有的并行算法,使其可以求解相似问题
8、并行算法常用的设计技术
目前普遍使用的并行算法的设计技术:
1).流水线技术
将任务分割成许多子任务,每个处理器完成其中一个,且第一个处理器完成第一个子任务后,第二个处理器可以开始完成第二个子任务…
2).分治策略
将原问题分成若干个特征相同的子问题,分别处理。
常见的分治策略:任务分割;数据分割
3).平衡树方法
将输入元素作为叶子节点构造二叉平衡树。
4).倍增技术(指针跳跃技术)
适合处理链表、有向图等数据结构;经常应用于通信系统中。
5).加速级联策略
将最优算法(计算速度慢)和最快算法(不是最优)级联起来。
9、并行程序设计的主要方式
并行程序的设计有多种方式,主要分为:
共享变量方法;消息传递方法;数据并行程序设计;面向对象的并行程序设计;函数程序设计方法;逻辑程序设计方法。

第九章

1、消息传递模型的原理和优缺点
原理:消息传递模型中,计算由一个或多个进程组成,进程间的通信通过调用库函数发送和接收消息来完成。
优点:
1)具有高度的可移植性。
2)允许用户显式地控制控制并行并行程序的存储,特别可以控制每个进程所使用的内存。(需要编程人员对内存分配,需要考虑通信顺序等细节问题)
缺点:消息传递接口的不同对程序性能将产生重要影响,主要因素有:实际消息传递的带宽、延迟和计算与通信的重叠。

2、什么是MPI?
MPI一个信息传递接口的标准,用来开发基于信息传递的并行程序,它的目的是为用户提供功能强、可移植和灵活的信息传递接口库。(注:MPI是一个库而不是一种语言)
3、MPI中6个常用函数的基本功能
MPI_INIT 初始化MPI
MPI_FINALIZE 终止MPI
MPI_COMM_SIZE 确定进程的数目
MPI_COMM_RANK 确定进程的序号
MPI_SEND 发送一条信息
MPI_RECV 就收一条信息

补充部分

1、Matlab并行循环执行的前提条件
对于次数确定的循环(for循环),如果循环的‘计数模块’对於单次循环是独立的(计算结果与循环体的执行顺序无关),那么理论上可以将整个循环拆分成几个子循环,然后将子循环的结果合并。
2、简约操作及其满足条件
只有当循环的操作题相互独立时才可以用parfor关键字进行并行。但是有一类特殊的循环操作不受这个条件限制,这类操作我们称为简约操作。
简约操作所对应的循环体并不独立,但是执行结果与执行顺序无关。

简约变量在parfor中应该满足一些要求
1.简约变量只能出现在简约赋值操作的表达式中
简约操作可以由上面给的各种操作符引导,也可以自己定义。
2.在同一parfor中,对简约变量的操作必须一致。
3.如果简约变量的操作是‘*’或者‘[]’,x在操作符前面或者后面都可以,但是位置必须恒定。
4.简约变量赋值应满足结合律和交换律

3、在parfor循环中,Matlab变量主要分类
循环变量(loop variable)
分段变量(sliced variable)
广播变量(broadcast variable)
简约变量(reduction variable)
临时变量(temporary variable)

4、SPMD并行结构的优势
SPMD并行结构给用户提供了更大的自由度,用户可以控制更多的并行计算的细节。

5、SPMD结构中可以使用的三种数据对象
数据集分割方式:
1)通过数据文件的方式将大的数据集分割到各个计算节点;
2)通过composite对象(Matlab特有结构);
3)通过分布式数值阵列(Matlab特有结构)。
6、一般并行程序的数据类型
1)同体变量2)异体变量3)独有变量4)分布式变量
7、常用两种通用并行程序设计的方式
Matlab并行程序一般由三种方式实现:
1)利用Matlab内置的并行结构;
2)利用Matlab提高的通用并行程序设计;
3)Matlab和其他语言混合编程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章