Parallel Architecture Lecture4
Parallel Architecture Lecture4
并行计算模型
基本概念
并行计算模型是一种计算模型,是计算机体系结构中的一部分。
PRAM模型
简介
是一种SIMD-SM模型,一份程序共享一份内存,多个处理器运行,统一控制。
访存方式
不可同时读写、可同时读不可同时写(最多默认的)、可同时写不可同时读(没用,一般没这种东西)、可同时读写(需要冲突解决方案)
例: 个数求和
EREW并行机只需要处理3轮,
优点
适合并行算法表示和复杂性分析,易于使用,隐藏了并行机的通讯、同步等细节。
缺点
不适合MIMD并行机,忽略了SM的竞争(同时要改一份数据)、通讯延迟等因素。
BSP模型
简介
MIMD-DM模型,支持消息传递,块内异步,块间同步。
参数
处理器数
同步障时间
带宽因子
程序运行流程
每一批次都要同时开始,所以快的要等慢的,等待的这一会就是同步障时间。
BSP处理上边的并行加法问题:
Superstep1
计算耗时
i
每个处理器处理时分预处理和后处理,所以要乘个2。
第一步不仅仅是单次加法,而是每个处理器先计算其局部和,即把分配到自己部分的数据加总到一个值。这涉及多个加法操作,所以不能把计算量简单地设为1。
通讯耗时 1次(因为是同时的)。
Superstep2
计算耗时
通讯耗时1次。
Superstep3
计算耗时
通讯耗时1次。
Superstep4
计算耗时
无需通讯。
共耗时:
因为每次通讯都要消耗一个带宽和同步障,再加上一次计算消耗。
一般时间复杂度为
PRAM模型的时间开销是
BSP和PRAM比较
BSP强调了计算和通讯的分离,提供了一个编程环境,易于程序复杂性分析。
如果BSP的
i
什么是松弛度?
当松弛度高时,计算任务的计算时间远多于通信时间。这意味着各个计算任务之间的相互依赖较少,数据交换或同步的频率较低。当松弛度低时,计算任务的计算时间和通信时间接近,或者通信时间占比较大。这意味着各个任务之间有较高的依赖性,需要频繁的数据交换和同步操作。
logP模型
简介
是一种分布存储的、点到点通讯的多处理机模型,其中通讯由一组参数描述,实行隐式同步。
参数
网络延迟
通信开销
处理器数量
i
这个g到底是什么玩意?为什么1/带宽就是最小发送间隔?
带宽描述了信道内可容纳的数据量,假设一条信道带宽为5(可同时容纳5条消息),那么发送方就要保证不能同时有6条消息在信道内,否则必定丢包。如果每隔1/5的时间发一条消息,就可以保证这件事,当第六条消息发出时,刚好经过了一个单位时间,第一条消息刚好从信道出去。
特征
异步模型
没有同步障、算法设计复杂。
多线程限制
考虑网络容量=
可见通信开销
点对点:
从远程读取:
预加载:
发送n条消息
发n条消息的总开销是
因为在等待网络延迟
最优广播树
8个处理器,传输延迟6,发送间隔4,处理开销2。
在计算广播树广播时间时,先画出顶层的时间轴,之后画各层的。注意,中间层在转发时要消耗
优缺点
捕捉了MPC的通讯瓶颈,隐藏了并行机的网络拓扑、路由、协议,可以应用到共享存储、消息传递、数据并行的编程模型中;但难以进行算法描述、设计和分析。
BSP和LogP比较
同步方式
BSP使用全局同步,即每个并行进程在特定的同步点(超级步)上等待其他进程完成,才能继续执行下一个步骤。
LogP基于逐对同步(pairwise synchronization),采用异步通信方式,每个进程在发送或接收消息时可以独立进行同步,不依赖全局同步点。这种方式可以提高资源利用率。
通信开销
BSP模型可以在增加常数级别的额外开销的情况下模拟LogP模型的行为(因为BSP没有消息传递,如果增加了这个机制会有恒定的开销);
LogP模型可以在增加对数级别的额外开销的情况下模拟BSP模型的行为(因为LogP没有同步,如果要逐级同步,时间复杂度是对数级别)。
时间差异
i
其实同步障Barriers就是对数级开销;收发时间Overhead就是常数级开销。
编程难易
BSP提供了更方便的程设环境,LogP更好地利用了机器资源;
BSP似乎更简单、方便和符合结构化编程。
网络带宽g的定义
BSP从全局视角定义
LogP从局部视角定义
三种模型总结
PRAM
便于设计并行算法的简单概念化模型,专注于负载平衡。
BSP
先计算再通信,二者分离。
循环
粒度是超步大小与通信时间的比值。
LogP
随时计算,随时通信,通信和处理开销单独计算。
PRAM | BSP | LogP | |
---|---|---|---|
结构 | SIMD-SM(共享) | MIMD-DM(分布式) | MIMD-DM |
计算模型 | 同步,处理器同时执行 | 异步,处理器可独立执行 | 异步,不存在超级步,不需要同步 |
同步方式 | 自然同步 | 屏障(超级步之间) | 隐含 |
参数 | |||
粒度 | 细-中等 | 中等-粗 | 中等-粗 |
通信方式 | 共享变量 | 消息传递 | 消息传递 |
地址空间 | 全局(单个) | 单个或多个 | 单个或多个 |
i
什么是粒度?如何计算?
粒度表示一个大任务被划分的细碎程度。
细粒度计算任务被划分得非常小,每个处理器执行较少量的工作,需要大量通信。
粗粒度计算任务被划分得较大,每个处理器执行大量工作,减少了通信开销,但增加了同步等待时间。
性能评测
概述
性能评价和性能分析可以揭示高性能计算机、并行算法和并行应用程序的性能特点和性能瓶颈,指导高性能计算机、并行算法和应用程序的设计与改进。
目的在于提高、预测、诊断和优化性能。
机器级性能评测
概念
CPU和存储器的某些基本性能指标;并行和通信开销分析;并行机的可用性与好用性以及机器成本、价格与性/价比。
指标
性能
指机器的速度,它是程序执行时间的倒数。
程序执行时间
是指用户的响应时间(访问磁盘和访问存 储器的时间,CPU时间,I/O时间以及操作系统的开销)。
时钟周期
CPU时间
它表示CPU的工作时间,不包括I/O等待时间和运行其它任务的时间。
工作负载
百万浮点计算数MFLOP (million floating point operations)
百万指令数MI (million instruction)
速度
每秒百万浮点计算数MFLOPS (million floating point operations per second)
每秒百万指令数目MIPS (million instructions per second)
性能指标总结
算法级性能评测
概念
评价的是软件,一个算法或程序运行在并行机上能否有提高。
指标
加速比
对于一个给定的应用,并行算法(或并行程序)相对于串行算法(或串行程序)的性能提高程度。
并行效率
它表示处理器的利用率。
可扩展性
当系统和问题规模增大时,可维持相同性能的能力,即指应用、算法和结构能否充分利用不断增长的处理器的能力。
程序级性能评测
基准程序(Benchmark)
具体评测标准
加速比性能定律
性能提高的基本测度
加速比特性
由于通信、同步开销的存在,一般:
但是也有可能:
也会存在:
超线性加速比
判定
当出现:
时,就可以说有超线性加速比。
i
当加速比超过了处理器数量,也就是两个处理器干了三个处理器才能做到的事,也就出现了所谓
可能的原因
内存容量增加:多个处理器不仅提供了额外的算力,还带来了更多的累积内存。这使得问题的数据能够更好地适应高速缓存,从而减少缓存未命中的次数,提高整体访问速度。对于大数据集,单个处理器的缓存可能不足,而多处理器在合并缓存后,可以更有效地存储更多数据。
缓存效应:多个处理器使得缓存更高效,因为数据可以在多个处理器的缓存中分布存放。单个处理器可能由于缓存限制而频繁访存,而多处理器通过分散数据,可以减少访存延迟。
i
内存容量增加是利用内存总量的增加,而缓存效应是利用了缓存区数量的增加,有一些区别。
局部性增强:一些算法在并行化后,能够更好地利用数据局部性,提高缓存命中率。
任务分布更均匀:并行计算能够更好地分配任务,避免单个处理器出现的局部性瓶颈。
减少访问冲突:单处理器可能需要频繁访问某些数据,造成冲突,而多处理器分担负载后,这种冲突得到缓解。
例子:深搜
传统深搜算法老老实实搜要走12次,而并行机两个处理器一起,一人走一边,右边的那个走两步就找到了目标,加速比是6。
不同约束条件下的加速比
固定问题规模,PC(Problem constrained)
通过增加处理器数量来缩短解决固定规模问题所需的时间。
固定时间,TC(Time constrained)
通过增加处理器数量,尽可能在固定时间内解决更大规模的问题。
固定存储,MC(Memory constrained)
通过增加处理器数量,在有限的存储空间下优化计算性能。
Amdahl定律
变量
其中:
目标
定量的计算负载分布在多个处理器上,通过增加处理器加快执行速度。
固定规模的加速比
因为
串行任务的时间没法缩减。随着处理器增加,并行任务的时间减少。
定律内容
也就是说串行分量比例
Gustafson定律
目标
定时的计算负载分布在多个处理器上,通过增加处理器增加可完成的任务量。
定律内容
如图,可以把单位时间分为两部分,串行任务用
考虑并行开销,并行机需要额外处理一份任务来支持并行,那么
和上边的相比,其实就是减去了它的额外并行开销,因为这部分任务是没意义的,不能算在总加速比里。
Sun & Ni定律
目标
存储空间一定,去解决尽可能多的问题(不用考虑时间)。
假定在单节点上使用了全部存储容量
在
就是多乘了一个
这里的任务量和处理时间全都不确定,只受存储空间大小影响。
定律内容
考虑并行开销:
和上边一样,在计算并行任务量时要算上额外的并行开销
特性
当
当
当
加速比总结
参考的加速比经验公式
超线性加速,性能的增速比处理器的增速更快。
绝对加速(科学研究):最佳并行算法与串行算法;相对加速(工程应用):同一算法在单机和并行机的运行时间
可扩展性评测标准
概述
影响加速比的因素:系统规模与问题规模。
以下问题会拉低加速比:
求解问题中的串行分量;
并行处理所引起的额外开销(通信、等待、竞争、冗余操作和同步等);
加大的处理器数超过了算法中的并发程度。
以下操作会增加加速比:
增大问题规模,较大的问题规模可提供较高的并发度,额外开销的增加可能慢于有效计算的增加,且算法中的串行分量比例不是固定不变的(串行部分所占的比例随着问题规模的增大而缩小)
可扩展性的概念
增加系统规模(处理器数)会增大额外开销和降低处理器利用率,所以对于一个特定的并行系统(算法或程序),它们能否有效利用不断增加的处理器的能力应是受限的,而度量这种能力就是可扩放性这一指标。
也就是说,处理器少的时候能跑得很有效率,处理器多了也得跑得有效率,不能处理器多了反而不行了。
误区
单纯用固定问题的执行时间来衡量性能是不准确的,应该关心它在系统规模和应用数据规模变化时的执行时间。
可扩展性衡量的就是系统的“规模性能”,是
在可扩展性上希望达到的目标
当系统规模扩大时,希望系统的处理能力能相应增强。
能力增强
同样的时间能处理更多的数据;
处理同样的数据花更少的时间。
增速
线性、对数、指数等增长比例。
需要调整的参数
并行计算要调整的是处理器数
三种量化可扩展性的方式
等效率测度
等速度测度
速度=每秒处理的数据量,便于通过实验数据得到结果。
平均时延测度
时延:理想并行时间与实际并行时间的差距,便于通过实验数据得到结果。
等效率函数
定义
加速比:
效率:
等效率:
如果问题规模
i
在
等效率函数曲线
曲线1表示算法具有很好的扩放性;曲线2表示算法是可扩放的;曲线3表示算法是不可扩放的。
i
这张图里的工作负载其实指的是额外的开销,不是直接反映算法能处理的有效负载。
例
用
并行执行时间
加和时,是如下的树形结构:
层数是
串行执行时间
假设
已知等效率
可以得到,当
如果
如果
评测标准
目前无一个公认的、标准的和被普遍接受的严格定义和评判它的标准,用上边的那些标准就行了。
基准测试程序
程序级性能评测
测试程序的分类
按生成方式:真实、核心、小、综合程序
按应用类型:科学计算、商业应用、信息处理等
按程序功能:宏观测试程序、微观测试程序
基准测试程序
概念
一组标准的测试程序,提供一组控制测试条件和步骤的规则说明(测试平台环境、输入数据、输出结果和性能指标等)
分类
宏观测试程序(Macro-benchmark):计算机系统作为一个整体来测试其性能;
微观测试程序(Micro-benchmark ):测试机器的某一特定方面的性质。
Linpack
Linpack是国际上流行的用于测试高性能计算机系统浮点性能的benchmark(基准测试程序),通过对高性能计算机采用LU分解求解线性代数方程组能力的测试,评价高性能计算机的浮点处理性能。
HPL
高性能Linpack:HPL(High Performance Linpack)