性能评测

Download Report

Transcript 性能评测

第四章
性能评测
1
第一节
性能评测概述
一、并行计算机性能指标
1、硬件性能参数
名称
机器规模
时钟频率
峰值速度
通信延迟
渐进带宽
--反映硬件系统基本性能
符号
n
f
Rpeak=nR’peak
t0
R∞
含义
处理器P的数量
时钟周期长度的倒数
并行机峰值速度
传送0/1字节的时间
长消息的通信速率
量纲
个
MHz
Mflop/s
us
MB/s
*硬件性能的辅助参数:
存储系统—主存/Cache容量、页/块大小、关联度等;
通信系统—通信服务、IN及NIC性能参数
2
2、系统性能指标
名称
工作负载
顺序执行时间
并行执行时间
速度
加速比
效率
利用率
吞吐率
--反映软硬件系统性能和可扩放性
符号
W
T1
Tn
Rn=W/Tn
Sn= T1/Tn
En= Sn/n
U=Rn/Rpeak
TP=m/Tn(m)
含义
计算操作的数目
程序在单处理机上运行时间
程序在并行机上运行时间
程序在并行机上运行速度
并行机比单处理机速度的倍数
并行机硬件部件的利用率
并行机峰值速度的利用率
并行机单位时间内处理任务数
量纲
MFlop
s
s
Mflop/s
无量纲
无量纲
无量纲
个/s
*程序参数:问题规模、工作负载、负载不平衡开销、工作
集尺寸、通信-计算比、通信与同步开销、并行性开销等
*影响系统性能因素:硬件参数(结构与速度)、程序参数(应
用与算法),及两者的相互作用
3
回7页
回13页
回24页
回23页
回27页
二、为何要进行性能评测
1、购买者进行性能评测的目的
主要是降低投资风险,提高投资效益
·有利于选择并行机型号(性/价、RARS、可扩展性)
·有利于配置系统相关参数(需求、性能、性/价)
2、设计者进行性能评测的目的
主要是为优化设计提供量化依据
·有利于发现系统设计中存在的问题
·有利于合理地进行软/硬件功能分配,提高系统性/价
·有利于优化结构-算法-应用的组合,设计高效算法
4
三、如何进行性能评测
*系统性能指标:不同测试者所关心的性能指标种类不同
*性能评测层次:机器级、算法级、程序级
1、机器级性能评测
*评测内容:
CPU及存储器基本性能(Tn、Rn等);
并行与通信开销(Tpar、t0、R∞等);
可用性、好用性(运行正常百分比、环境及界面);
性能与成本
*评测方法:通过基准测试程序,
不断改变硬件参数进行测试
5
回7页
2、算法级性能评测
*评测内容:应用-算法-结构组合的可扩放性;
即给定应用背景,系统扩放时的性能
*评测方法:通过基准测试程序,
不断改变问题规模及机器规模进行测试
3、程序级性能评测
*评测内容:各种系统性能(如Tn、Rn、U、TP等)
*评测方法:通过基准测试程序进行测试
*基准测试程序种类:
按生成方式—真实、核心、小、综合程序;
按应用类型—科学计算、商业应用、信息处理等;
按程序功能—宏观测试程序、微观测试程序
6
回15页
第二节
机器级性能评测
一、 CPU及存储器的基本性能指标
1、CPU性能指标
*基本参数:工作负载(W )、顺序执行时间(T1)
工作负载—计算量,常用指令或浮点运算表示;(算法相关)
顺序执行时间—工作负载在单处理器上的执行时间
*基本性能指标:
并行执行时间— Tn=Tcomput+Tcomm+Tsync+Tpara
并行度
n
1
时间
Rn=W /Tn,为系统实际速度(非峰值)
速度--
7
转5页
转3页
2、存储器性能指标
*存储器层次结构:
REG
一级Cache
二级Cache
主存
磁盘
远程存储器
各层性能指标—容量C、延迟L、带宽B;
相关参数—交换粒度、一致性粒度、层间管理方案等
*影响容量C设计的因素:
与应用的进程数及各进程工作集尺寸等有关
*影响延迟L设计的因素:
与CPU主频f、指令系统CPI及带宽B等有关
*影响带宽B设计的因素:
与应用的数据通信量、通信频率和通信延迟等有关
8
二、 并行及通信开销
1、开销来源
*并行开销:包括进程/进程组管理、数据分配等时间
*通信开销:包括通信及同步操作时间(软硬件)
2、开销量化方法
*测量准备:选择测量所用的参数,它们会影响测量结果
(数据结构、语言及编译器、通信硬件及协议、计时方法等)
*测量方法:
点点通信—乒-乓法、热土豆(又称救火队)法等
集合通信—较复杂,原则是尽量避免/减少额外干扰
*测量结果表示:
表格法、曲线法、表达式法等
9
3、开销量化
*并行性开销:
特性--生命周期中分期偿还(总开销/计算量);
量化—测量并行性开销对应的计算量;
如:POWER2处理器的T进程创建=372,000T浮点运算
结果—计算粒度较大时,才需要创建进程
*点点通信(通信、互斥/事件等)开销:
量化--测量t(m)=t0+m/R∞的各项参数;
结果--根据t0与R∞关系确定最佳m(平衡设计原理)
*集合通信(广播、集合、栅障等)开销:
量化--测量t(m,n)=t0(n)+m/R∞(n)的各项参数;
结果--根据测量确定软/硬件功能分配(高性/价)
10
三、 可用性与好用性
1、可用性
指系统正常运行时间占总时间的百分比
可用性 
平均无故障时间
平均无故障时间 +平均修复时间
 MTTFMTTF
 MTTR
*量化方法:根据实际使用情况进行测量与统计
注意—排除环境、人为等因素的干扰
*可用性的提高:
方法--增加MTTF,或减少MTTR;
技术—分隔的冗余设备(双管理机),
故障诊断、通知与接管(如系统监控),
故障恢复(如检查点)等
11
2、好用性
指用户环境的好用性,包括环境系统及界面2方面
*并行机用户环境:命令行+远程登录、GUI+X协议、
客户GUI+服务器、浏览器+WEB服务器
*用户环境系统的好用性:
·灵活、易扩充和易集成;
·使应用软件开发与平台无关;
·用户可不了解低层系统的实现细节;
·提供单一系统映像
*用户界面的好用性:
实用性(提供服务)、高效性(提供帮助)、易学习性(简单/易理
解/风格统一)、交互性(交互手段多)、美观性(感觉好)
12
四、 性能与成本
1、成本与价格
常见关系为:
33.3% 平均折扣
50%
100% 原料成本
毛利润
25% 直接成本
12.5% 直接成本
75% 原料成本
37.5% 原料成本
33.3%
毛利润
8.3% 直接成本
价
格
成
25.1% 原料成本 本
2、性能/价格
指性能/买价,性能常用速度(Rn)表示
※高性能/价格—性能或性能/成本不一定好
3、成本有效性
指性能/成本,性能通常用利用率(U )表示
※高性能/成本—体系结构较为合理
13
转3页
第三节
算法级性能评测
一、 并行计算性能参数
1、加速比
指对给定应用,并行相对于串行的性能提高程度
即 Sn=T1/Tn=Rn /R1,通常 1≤Sn≤n
※给定应用--指工作负载W 、处理器数n为给定值
*影响Sn的因素:算法并行性、并行机体系结构
*研究加速比的目的:
+对并行算法,研究顺序/并行部分对性能的影响;
+对算法-结构,研究基于结构的并行性开发方法
※性能提高方法—有并行化和容量增加2方面
14
2、可扩放性
指对给定应用背景,性能随P增加(n)的按比例提高能力
即 Ψ(n,n’)=[Sn(W)/n]/[Sn’(W’)/n’ ],Ψ(n,n’)∈(0,1)
※应用背景—扩放时对W 及Tn的要求或限制;
Ψ(n,n’)—为曲线,希望很快接近常数
*特征:反映应用-算法-结构组合的有效性(有效利用n)
*影响Ψ(n,n’)的因素:
算法并行性、并行体系结构、应用背景等
*研究可扩放性的目的:
+对给定问题,选择算法及结构,以充分利用可扩充资源
+对给定应用及算法,评测体系结构的扩放性能
+对给定结构,评测并行算法的扩放性能
+对给定可扩充资源,指导改进体系结构和并行算法
15
转6页
回下页
回23页
二、扩放模型及性能分析
1、应用背景与扩放模型
*应用背景种类:
①实时性要求较高—关注Tn,W可不变,如Web服务
②结果精度要求较高—关注Δ,Tn可不变,如天气预报
③充分利用硬件资源—关注Un,Tn及W均可变,如计算中心
└→充分利用CPU和MEM等
*扩放模型种类:
①固定负载扩放模型—增加n(W固定),以减小Tn
②固定时间扩放模型—增加n及W,以提高精度(保持Tn)
③存储器受限扩放模型—增加n及W,以提高Un
*扩放模型性能分析:
可用3个加速比性能定律进行性能分析
16
转上页
回下页
回19页
回21页
2、Amdahl定律
--适用于固定负载扩放模型
*基本思想:W不变,增加n,以提高处理速度(减小Tn )
*定律公式:设W =fW +(1-f )W,f 为顺序部分比例,则
Sn

W
fW  (1 f )(W / n )
 1( nn1) f

1
f 当n  时
*定律几何意义:
工作负载
加速比Sn
执行时间
W1 W1 W1 W1
T1
×1024
T1
Wp Wp Wp Wp
1
2
3
4
Tp
n
(a)固定负载
1
Tp
2
T1
T1
Tp Tp
3
4
 11024
1023 f
S1024
91
48
n
(b)减少执行时间
0%
1%
31
24
×
×
×
2%
3%
4%
f
(c)固定负载的加速比
17
回下页
转上页
回19页
*定律含义:
--性能分析
①对给定工作负载,Sn≤1/f;
②仅增加n,顺序部分依然是瓶颈
*引入开销的加速比:设额外开销为T0(含通信/同步/并行化)
Sn

W
fW (1 f )(W / n ) T0
 1( n1) fnnT0 /W 
1
f T0 / W 当n  时
18
转上页
3、Gustafson定律
--适用于固定时间扩放模型
*基本思想:保持Tn不变,增加n及W,以增加计算量(精度)
*定律公式:设W’ =fW +(1-f )nW,f 为顺序部分比例,则
Sn
fW (1 f ) nW
fW (1 f ) nW / n

 f  (1  f )n  n  ( n  1) f
*定律几何意义:
工作负载
加速比Sn
执行时间
W1
1024 1004
× × × 983
×
1014
993
×
W1
W1
Wp
Wp
W1
Wp
Wp
1
2
3
4
n
(a)规模扩展的负载
T1 T1 T1 T1
Tp Tp Tp Tp
1
2
3
4
S1024=1024-1023f
n
0%
(b)固定执行时间
1%
2%
3%
f
4%
(c)固定时间的加速比
19
回下页
转16页
转17页
回21页
*定律含义:
--性能分析
①当W可扩展以保持Tn不变时,Sn是n的线性函数
②当n充分大、W’成比例增加时,顺序部分不再是瓶颈
└→关键:顺序部分fW基本不变
*引入开销的加速比:设额外开销为T0(含通信/同步/并行化)
Sn

fW  (1 f ) nW
W T0

f  (1 f ) n
1T0 / W
20
转上页
4、Sun和Ni定律
--适用于存储器受限扩放模型
*基本思想:增加n及W ,以提高Un(充分利用CPU和MEM资源)
*定律公式:设W’=fW +(1-f )G(n)W,f为顺序部分比例,则
Sn

fW (1 f ) G ( n )W
fW (1 f )G ( n )W / n
f (1 f ) G ( n )
f (1 f )G ( n ) / n

*定律几何意义:
工作负载
加速比Sn
执行时间
W1
W1
W1
W1 W Wp
p
Wp
1
2
3
1024 1007
× × × 991
×
1016
999
G(n)=1.25n
×
T1
Wp
4
n
(a)规模扩展的负载
T1
Tp
T
T1 1
Tp
T
p
Tp
1
2
3
4
S1024
n
(b)执行时间稍增
0%
1%
1279 f
 1280
1.250.25 f
2%
3%
4%
f
(c)存储器受限的加速比
21
回下页
转16页
转19页
*定律含义:
--性能分析
①若G(n)=1,Sn性能与Amdahl定律等效;
②若G(n)=n, Sn性能与Gustafson定律等效;
③若G(n)>n,Sn性能比固定负载、固定时间扩放模型都高
工作负载W(问题规模)
└→即W增加速度>MEM增长速度 (n增长速度)
Sn
δ
存储器受限
扩放模型
γ
存储器界限
固定时间
扩放模型
固定负载
扩放模型
α
固定负载扩放模型
通信界限
n
机器规模 n
*引入开销的加速比:设额外开销为T0(含通信/同步/并行化)
Sn

fW  (1 f ) G ( n )W
fW  (1 f ) G ( n )W / n T0

f  (1 f ) G ( n )
f  (1 f ) G ( n ) / n T0 / W
22
转上页
回下页
三、可扩放性评测标准
1、可扩放性评测标准
*可扩放性的特征:可用效率、速度、利用率等反映
 ( n, n ' )

[T1 (W ) / Tn (W )] / n
[T1 (W ) / Tn ' (W )] / n '

En
En '

Rn / n
Rn ' / n '

Rn
Rn '

*可扩放性的度量:
存在问题—W较大时T1(W)无法测量→Sn等无法测量
解决方法—同时增加n及W,以保持性能不变,用所增加
的W来衡量可扩放性
度量方法—解析法、测量法
*可扩放性评测标准:
现状—无公认的、定义严格的评测标准
标准--等效率标准、等速度标准、等延迟标准
(解析法)
(测量法)
(测量法)
23
回下页
转15页 转上页
转3页
回28页
2、等效率标准
用维持效率不变时,所需增加的W来度量可扩放性
(1)等效率函数
设问题规模为s,工作负载W(s)为s的函数,
并行开销为T0(s,n)为s及n的函数
则
E

T (1)
nT ( n )

W (s)
n[W ( s ) / n T0 ( s , n )]

W (s)
W ( s )  nT0 ( s , n )
解析法
 1T0 ( s ,n)1/[W ( s ) / n]
*等效率需求:增大n时,需增大s,E才可能保持不变
*等效率函数:为保持效率E不变,增大n时增加W(s),此时
W(s)与n的函数关系即为等效率函数
由效率公式得,W(s)=E/(1-E)×nT0(s,n)
因E为常数,则对上式求解方程,可得s =y(n)
等效率函数为
fE(n)=W(s)=W( y(n))
24
回下页
回26页
转3页
(2)可扩放性评测
*度量:对给定的等效率值,可获得具体的等效率函数
*评价:等效率函数fE(n)越小,可扩放性越好
效率E
1
等效率函数fE(n)
E系统1=E系统2=E系统3
系统3
系统2
系统1
n
n
可扩放性排序(好→差)结果:系统1→系统2→系统3
*等效率值的特性:等效率值E越小,可扩放性越好
效率E
1
等效率函数fE(n)
系统1
系统2
E系统1=E系统2
0.5
0.3
n
n
25
转上页
例—两个N×N 矩阵相乘,W(s)=cN 3,A、B两系统运行时间
分别为 cN 3 bN 2 / n 、 2cN 3 bN 2 /(2 n ) ,评价等效率值Ec分别
保持1/3和1/4时,哪个系统具有更好的可扩放性。
(1)当Ec=1/3时,1/3=cN 3/(cN 3+T0)
对A系统有 bN 2
n  2cN 3 ,即 N  b (2c n ) ,
3 1.5
等效率函数 f E ( n)  c[b /(2c )] n
3 1.5
对B系统,等效率函数 f E ( n)  c[b /(2c )] n
即当Ec=1/3时,可扩放性A、B系统相同
(2)当Ec=1/4时,1/4=cN 3/(cN 3+h)
对A系统有 bN 2 n  3cN 3 ,即 N  b (3c n ),
3 1.5
等效率函数 f E ( n )  c[b /(3c )] n
3 1.5
对B系统,等效率函数 f E ( n)  c[b /(4c )] n
即当Ec=1/4时,可扩放性B系统比A系统好
转24页
26
3、等速度度量标准
用维持平均速度不变时,所需增加的W来度量可扩放性
(1)等平均速度(简称等速度)可扩放性
*平均速度: Rn 
Rn W / Tn

n
n
*等速度特性:Rn与n呈线性关系(∵Rn=Rn×n)
*等速度可扩放性:增大n时增大W,若能够保持平均速度不
变,则称该算法(或结构)是可扩放的
即 Ψ ( n, n' )
 WW'// nn'
,Ψ值越大,可扩放性越好
*等速度可扩放性测量:
问题—无法保持平均速度不变

W
W'
方法—因平均速度不变时,有 nTn
n 'Tn '
Tn
W /n
则有 Ψ ( n , n ' ) W '/ n '
Tn ' ,即可测量并行时间

回下页

转3页
27
(2)可扩放性度量
*度量方法:测量法、计算法、预计法
*计算法度量步骤:
①对各种n,分别测得W→W’时的Rn-Tn曲线;
(已知W为s的函数,测得Tn后,可求得Rn)
②对选定的平均速度RSel,求得各种n时的等速度Tn;
③根据公式,求得Ψ(n,n’) 矩阵,可画出曲线簇
Rn
n1
n2
n3
RSel
n 1 2 4 8 16 32
1 1.0 0.a 0.b 0.c 0.d 0.e
n4
W’
W
T1
T2
T3
T4
Rn- T曲线及等速度的Tn
T
2
4
8
16
32
1.0 0.f 0.g 0.h
1.0 0.j 0.k
1.0 0.n
1.0
Ψ(n,n’) 矩阵
0.i
0.m
0.p
0.r
1.0
1.0
0.8
0.6
0.4
0.2
0.0
1 2
4
8
16
32
Ψ(n,n’)-n’ 曲线簇
28
转上页
转23页
第四节
程序级性能评测
一、 性能评测与测试程序
1、性能评测
*性能指标:不同评测者关心的系统性能指标不同
*性能度量:均通过在机器上运行测试程序来测量
2、测试程序
*种类:多种,可反映不同应用领域的特征
*级别:多级别,可反映不同机器层次的性能
*参数:参数可选,可调节不同的工作负载及机器规模
※基准测试程序:相对公正的、业界可接受的测试程序
※基准测试程序组件:能反映特定领域、不同层次系统性能
的一组测试程序
29
回下页
二、 基准测试程序分类
*按生成方式分:
真实程序、核心程序、小测试程序、综合测试程序
(实际的程序)
(人为编写的程序)
*按应用方式分:科学计算、商业应用、信息处理、网络服务等
*按性质与功能分:宏观测试程序、微观测试程序
三、 基准测试程序
*基本基准测试程序:Whetstone、LinPACK、LMBENCH等
*并行基准测试程序:NPB、PARKBENCH、STAP等
*商用基准测试程序:TPC系列等
*基准测试程序组件:SPEC、WinBench等
30
转上页
第五节
如何提高性能
一、 并行程序设计过程
1、系统性能
*并行执行时间:Tn=Tcomput+Tcomm+Tsynch+Tpara
*影响性能的主要因素:
①并行处理能力—
硬件—节点结构及性能(CPU、MEM及NIC),可扩放性等
软件—算法并行性及可扩放性、负载平衡等
②通信/同步/管理开销-硬件—通信、同步及一致性模型,IN性能等
软件—数据组织、任务粒度、OS性能等
31
2、并行程序设计步骤
*设计过程:
①David E. Culler—分为分解、分配、协调、映射4个阶段
划分
分
分
P0
P1
协
P0
P1
映
P0
P2
解
配
P2
P3
调
P2
P3
射
P1
P3
串行计算
任务
进程
并行程序
处理器
②Bal H E等—分为划分、通信、组合、映射4个阶段
△比较—David的协调阶段=Bal的通信及组合阶段
*基本要点:①开拓算法的并发性和可扩放性;
②优化算法的全局执行时间和通信成本
32
回下页
回37页
(1)问题的分解
*目的:选择最佳算法,将计算分解成多个任务
*目标:开发并行性(数据并行及功能并行)、兼顾管理开销
可扩放性较好←┘
└→可扩放性有限
并行度DOP
n
并行度DOP
n
k
1
时间
1
时间
fk
串行算法
并行算法并发态曲线
*分解方法:
数据分解(域分解)—数据片尽量小、计算与数据关联;
功能分解(任务分解)—开发并行化、兼顾开销
*分解要点:
使数据集和功能集互不相交
←避免复制
33
转上页
回下页
回39页
(2)任务的分配
*目的:将各任务分配到进程中
*目标:平衡负载,减少通信量、管理分配开销
*任务分配方法:
--各进程负责哪些任务
静态分配—编程时分配,无管理开销、负载平衡不好;
动态分配—运行时分配,有管理开销,负载平衡好
*任务调度方法:
--各进程中任务何时执行
√静态调度—按空间或轮转调度;
(适用于静态分配)
动态调度—维护任务队列,按一定算法、适时调度
*任务划分特性:
(划分=分解+分配)
侧重算法性能的分析与设计,
独立于编程模型和体系结构
34
回40页
转上页
回下页
(3)进程的协调
*目的:选择有效机制,以高效实现划分阶段的算法
*目标:降低通信开销及同步开销,降低并行性管理开销
└→可重新选择任务划分阶段的算法
*实现机制:
开发进程中数据局部性,减少附加通信量;
通信结构化,以降低通信开销;
减少操作序列化现象,降低同步开销
*协调的特性:
侧重算法性能的分析与实现;
与编程模型和体系结构及程序语言有很大关系
35
回41页
回下页
转上页
(4)处理器的映射
*目的:将进程映射到处理器上
*目标:最小化全局执行时间和通信成本
└→从处理器角度平衡负载(任务分配是从进程角度平衡)
*映射策略:
①可并发执行的进程映射到不同处理器上;
②需频繁通信的进程映射到同一处理器上
*映射方法:
--系统常2者都支持
①绑定—程序可将进程静态映射(绑定)到处理器上;
例—作业脚本实现静态映射
②调度—OS可将进程动态映射(调度)到处理器上
例—进程调度及迁移实现动态映射
36
转上页
3、程序并行化与体系结构关系
步骤
与体系结
构关系
分解
无关
分配
无关
协调
相关
映射
相关
主要性能目标
实现内容
开发并行性、兼顾管理开销 数据分解、功能分解
平衡负载、减少通信量,
任务分配与调度
减少任务管理开销
开发数据局部性,通信结构
降低通信、同步及管理开销
化,减少操作序列化现象
最小化全局执行时间及通信
进程映射方法、调度方法
成本
37
转32页
4、并行程序设计例题
(0)有限差分方法求解偏微分方程(串行)程序
int n;
float **A, diff=0;
main()
{
read(n);
A←malloc(n+2,n+2);
initialize(A);
Solve(A);
}
procedure Solve(float **A)
{
int i, j, done = 0;
float temp=0;
while (!done)
{ diff = 0;
for (i = 0, i<n; i++)
for (j = 1, j<=n; j++)
{ temp = A[i,j];
A[i,j]=0.2*(A[i,j]+A[i,j-1]
+A[i-1,j]+A[i,j+1]+A[i+1,j]);
diff += abs(A[i,j]-temp);
}
if (diff/(n*n) < TOL ) done = 1;
}
}
38
回下页
(1)问题分解
*功能分解方法:相同次迭代操作并行,不同次迭代操作串行
*域分解方法:
全并行法—DOP=n2,点点同步增加,迭代次数增多
反对角线法—DOP≤n1/2(不稳定),全局同步频繁
反对角线法
红-黑序法
区域法
红-黑序法—DOP=n2/2,迭代次数翻倍(计算量相近)
区域法—DOP=n,全局同步次数少
*问题分解结果:红-黑序法、区域法
39
转上页
转33页
(2)任务分配
*问题分解方案确定:区域法(负载平衡较好、通信量小)
域分解方法
并行性
通信-计算比
同步节点数
n2/2 4/1=4
n2/2
红-黑序法
p
(4n/p1/2)/(n2/p)=4(p/n)1/2
p
区域 按块(n2/p格点/块)
法 按行
n
2n/n=2
n
*分配方法:静态分配(任务可预测),
每进程负责1行或1块
*调度方法:静态,按空间调度较好
P0
P1
P2
P0
P1
P2
P0
P1
按条的区域法
P2
轮转调度方式
空间调度方式
40
转34页
(3)进程的协调
*基于共享变量模型的进程协调:
通信及同步机制—隐式通信,显式进程创建及同步;
通信操作(原语)名称
CREATE(p,proc,args)
G_MALLOC(size)
LOCK(name)
UNLOCK(name)
BARRIER(name,number)
WAIT_FOR_END(number)
WAIT(flag)
SIGNAL(flag)
实现功能
创建P个进程,用参数args从过程proc开始执行
分配size字节的共享数据空间
获得互斥访问权
释放互斥访问权
在number个进程间实现栅障事件同步
等待number个进程一起终止
(踏步)等待flag的出现,用于点点事件
设置flag,阻塞等待flag的进程,用于点点事件
数据局部性—增加冗余计算(减少通信);
增加私有变量操作(减少通信及同步)
41
转35页
回下页
回43页
并行程序—基于共享变量编程模型
int
n, nproc;
float **A, diff;
LOCKDEC(diff_lock);
BARDEC(bar1);
main()
{ read(n);
read(nproc);
A←G_MALLOC(n+2,n+2);
initialize(A);
CREATE(nproc-1,Solve,A);
Solve(A);
WAIT_FOR_END(nproc-1);
}
procedure Solve( float **A)
{ int
i,j,pid,done = 0;
float temp, mydiff=0;
……
}
int mymin = 1+(pid*n/nproc);
int mymax = mymin+n/nproc-1;
while (!done)
{ mydiff = diff = 0;
BARRIER(bar1, nproc);
for (i = mymin, i<mymax; i++)
for (j = 1, j<=n; j++)
{ temp = A[i,j];
A[i,j]=0.2*(A[i,j]+A[i,j-1]
+A[i-1,j]+A[i,j+1]+A[i+1,j]);
mydiff += abs(A[i,j]-temp);
}
LOCK(diff_lock);
diff += mydiff;
UNLOCK(diff_lock);
BARRIER(bar1,nproc);
if (diff/(n*n) < TOL ) done = 1;
BARRIER(bar1,nproc);
}
42
转上页
*基于消息传递模型进程的协调:
通信及同步机制—显式通信,显式进程创建,
Send/Recv匹配实现一个同步事件
通信操作(原语)名称
实现功能
CREATE(p,proc)
创建p个进程,从过程proc开始执行
SEND(scr_addr,size,
向dest进程发送标识为tag、首地址为scr_addr
dest,tag)
的size个字节数据
RECEIVE(buff_addr,size, 从scr进程接收标识为tag的消息,将其size个
scr,tag)
字节数据放到首地址为buff_addr的缓冲区中
SEND_PROBE(tag,dest)
检查标识为tag的消息是否已送给了dest进程
RECV_PROBE(tag,scr)
检查是否已从scr进程收到标识为tag的消息
BARRIER(name,number)
在number个进程间实现栅障事件同步
WAIT_FOR_END(number)
等待number个进程一起终止
说明:异步互锁/非互锁通信时才用到SEND_PROBE、RECV_PROBE
数据局部性—各进程增加2个边界行(减少通信开销),
各进程每次迭代开始产生一次通信
43
回下页
转41页
并行程序— 基于消息传递编程模型
int n,,nproc;
float **myA;
main()
{
read(n); read(nproc);
CREATE(nproc-1,Solve);
Solve(A);
WAIT_FOR_END(nproc-1);
}
procedure Solve()
{
int i, j, pid, done = 0;
int n’=n/nprocm;
int nsize=n*sizeof(float);
float temp, tempdiff,mydiff=0;
myA←malloc(n’+2,n+2);
initialize(myA);
……
}
while (!done)
{ mydiff = 0;
if (pid != 0) SEND(&myA[1,0],nsize,pid-1,ROW);
if (pid != nproc-1)
SEND(&myA[n’,0],nsize,pid+1,ROW);
if (pid != 0)
RECEIVE(&myA[0,0],nsize,pid-1,ROW);
if (pid != nproc-1)
RECEIVE(&myA[n’+1,0],nsize,pid+1,ROW);
//省略有限差分求和
if (pid != 0) {
SEND(mydiff,sizeof(float),0,DIFF);
RECEIVE(done,sizeof(int),0,DONE); }
else
{ for (i=1;i<=nproc-1;i++) {
RECEIVE(tempdiff,sizeof(float),*,DIFF);
mydiff += tempdiff; }
if (diff/(n*n) < TOL ) done = 1;
for (i=1;i<=nproc-1;i++)
SEND(done,sizeof(int),i,DONE);
}
}
44
转上页
二、划分阶段的性能提高
*并行程序的执行时间:
T(n)=Tcomput+Tlocal+Tcomm+Tsynch+Tpara,Tcomm=T固有+T附加
*划分阶段可提高的性能:
Tcomput、Tcomm中T固有、Tsynch和Tpara
1、平衡负载与同步等待时间
*目标:极小化同步等待时间,使各进程任务量相近
*过程:识别足够的并发性、决定并发性的管理方式、
确定任务的粒度、降低序列化现象
(1)识别足够的并发性
*数据并发性:充分开发并行性(nTcomput→Tcomput)
*功能并发性:尽量减少全局同步量(min{Tsynch})
45
回下页
回47页
回48页
(2)决定并发性的管理方式
*静态/动态分配特征:
在负载平衡效果、管理开销、通信代价等方面不同
*选择:常选静态分配方式(∵ΔTcomput<<Δ(Tcomm+Tpara))
(3)确定任务的粒度
*粒度特征:并行性粒度—通信/同步/管理开销性能矛盾
*粒度确定:折中并行性与三种开销(∵ΔTcomput<<ΔTcomm)
*折中方法:粒度组合、重复计算、静态分配等
(4)降低序列化现象
序列化现象—此处指同步点上的串行化现象
*影响因素:同步类型、同步粒度、同步次数
*措施:使用最适宜的同步类型(最小化参与者数),
折中同步粒度与同步次数(开销最小化)等
46
转上页
2、减少固有的通信开销
*方法一:减少通信-计算比
例—区域法分解中,块划分通信量少于行或条划分
区域法分解方法 并行性
通信-计算比
同步节点数
n
2n/n=2
n
按行
p
(4n/p1/2)/(n2/p)=4(p/n)1/2
p
按块(n2/p格点/块)
p
2n/(n2/p)=2p/n
p
按条(n/p行/条)
*方法二:尽量使访问相同数据/频繁通信的任务在同一进程
优点—Tcomm→Tlocal;
缺点—负载可能不平衡;
折中—倾向性取决于系统的通信代价大小
注:通信代价为实现延迟,与通信量概念不同
47
转45页
3、减少划分的额外开销
*额外开销类型一:分配及调度算法增加的管理开销
处理方法—权衡负载不平衡—划分算法的代价
如:对可预测任务,尽量采用静态分配及调度方法
对不可预测任务,则采用半静态/动态方法
*额外开销类型二:并行化管理带来的开销
处理方法—减少进程管理开销(Tpara)
如:减少进程创建次数!
可通过冗余计算减少同步等待时间
48
转45页
三、协调阶段的性能提高
*并行程序的执行时间:
T(n)=Tcomput+Tlocal+Tcomm+Tsynch+Tpara,Tcomm=T固有+T附加
*协调阶段可提高的性能:
T附加,Tcomm代价
1、附加通信产生原因
(1)人为产生的附加通信
数据存储分配
原因
不好
传送中的非必 冗余的数据通 有限的复制能
要数据
信
力
数据在其它进
现象
程/节点中
所用数据量小 复制-使用的次 S复制>S本地MEM
于传送粒度
数、时间不匹配 引起重复传送
改进任务分配、减小传送粒度 减少复制-使用 增加本地MEM的
解决
数据分布等
(传送开销↑) 时间差
容量
49
回下页
回51页
(2)扩展存储层次结构产生的附加通信
*扑空类型:冷启动扑空、容量扑空、冲突扑空,通信扑空
※通信扑空—多处理机系统才有(Cache-本地MEM-远程MEM)
由程序固有通信及附加通信引起
*Cache容量与程序的数据通信量:
数据通信量
程序第一工作集
因容量不够所产生的
通信量(包括冲突扑空)
程序第二工作集
其他和容量无关的通信
固有通信量
冷启动(强迫)通信量
Cache容量
Cache中工作集—算法的工作集(反映访问数据的时间局部性)
其它层中工作集—与算法工作集、层次管理有关
50
转上页
2、减少附加通信
(1)开发时间局部性
*目标:优化程序/算法(改变局部性特征),以适应给定的体
系结构(如Cache容量等)
*方法:①减小算法工作集(相同数据任务→同一P、
数据使用时间靠拢)
②优先远程数据时间局部性的开发
例—在节点Scache<3行数据的SMP系统中,对求解偏微分
方程算法,若采用按行的区域法分解,将因时间局部性导致大
量附加通信,如何优化?
解—可考虑采用按块的区域法分解
51
回下页
转49页
回54页
(2)开发空间局部性
*目标:优化程序/算法(改变局部性特征),以适应给定的体
系结构(如存储粒度等)
*方法:①数据分配与存储粒度和一致性粒度匹配
(不同P的数据应分配在不同页/块中)
②分配给同一P的数据应连续、不同P的数据应分开
(按块的区域法分解中,四维数组的数据分布较好)
③增大传送粒度,协调通信次数与通信开销
T通信=次数*(T启动+T网络+L数据/B)
52
转上页
(3)权衡附加通信与固有通信
*通信产生时机:
固有通信
附加通信
通信产生时机
划分阶段
划分阶段
通信反映时机
划分阶段
协调阶段
*权衡方法:重新评价与选择算法
例—偏微分方程的域分解,究竟应采用块划分/条划分?
解—条划分~固有通信略大,附加通信小(代价随结构改
善减小)、可扩展性好;
块划分~固有通信略小,附加通信大(代价不随结构
改善而减小)、可扩展性差;
结
果~条划分性能优于块划分
53
3、通信结构化以减少通信代价
*通信代价模型:
C=频率×(开销+延迟+消息长度/带宽+竞争-重叠)
=f×(t0+tl+(nc/m)/B+tc-toverlap)
其中:tc为网络冲突时间、nc为通信总量、m为消息数
*通信结构化:通信过程由按结构化方式分解、功能相对独立
的多个有序阶段组成
*结构化通信的目标及相关程序设计技术:
降低开销(m×t0)—组织成大消息传输(减少f)
降低延迟(m×tl)—(硬件)优化CA及NIC、IN相关部分
减少冲突(m×tc)—(程序) 避免关键路径、错峰传输
通信重叠(toverlap)—异步通信、预通信、多线程、流水传输
54
转49页
△影响并行程序性能因素汇总:
T(n)=Tcomput+Tlocal+Tcomm+Tsynch+Tpara, Tcomm=T固有+T附加
影响Tcomput因素—分解算法、任务粒度、操作串行化程度、
冗余计算量(负载平衡与通信/同步开销的权衡);
影响Tlocal因素—存储层次结构、数据局部性开发;
影响T固有因素—分解算法、任务粒度、负载平衡与通信开
销的权衡(冗余计算因素)、附加通信与固有通信的权衡;
影响T附加因素—数据结构组织、数据局部性开发、传送粒
度、存储层次结构、数据局部性与体系结构的吻合、固有通信
与附加通信的权衡;
影响Tsynch因素—负载平衡、同步机制及粒度、同步操作;
影响Tpara因素—并发管理方式及任务管理的额外开销
55