CN103246541A - 自动并行化多级并行代价评估方法 - Google Patents

自动并行化多级并行代价评估方法 Download PDF

Info

Publication number
CN103246541A
CN103246541A CN2013101537103A CN201310153710A CN103246541A CN 103246541 A CN103246541 A CN 103246541A CN 2013101537103 A CN2013101537103 A CN 2013101537103A CN 201310153710 A CN201310153710 A CN 201310153710A CN 103246541 A CN103246541 A CN 103246541A
Authority
CN
China
Prior art keywords
cost
statement
parallel
vectorization
array
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2013101537103A
Other languages
English (en)
Other versions
CN103246541B (zh
Inventor
赵荣彩
庞建民
韩林
徐金龙
傅立国
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
PLA Information Engineering University
Original Assignee
PLA Information Engineering University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by PLA Information Engineering University filed Critical PLA Information Engineering University
Priority to CN201310153710.3A priority Critical patent/CN103246541B/zh
Publication of CN103246541A publication Critical patent/CN103246541A/zh
Application granted granted Critical
Publication of CN103246541B publication Critical patent/CN103246541B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明涉及计算机高性能计算技术领域,特别涉及一种自动并行化多级并行代价评估方法,首先进行粗粒度自动并行化代价评估,其次进行中粒度自动并行化代价评估,最后进行细粒度自动并行化代价评估,然后进行综合代价评估,针对共享存储的DOALL并行、流水并行和DSWP并行三种并行模型,构建对应的评估方法,DOALL并行代价分析将静态分析和动态分析相结合获取代价分析信息,向量化代价由各条语句对应的执行代价叠加而成。本发明提供语句迭代次数和语句单次执行代价的计算方法,并设定经验值确定循环迭代次数,能够较完备的实现对多级并行模式的后端生成代码的精确并行化收益评估,且有效保证目标并行程序的加速效果。

Description

自动并行化多级并行代价评估方法
技术领域
本发明涉及计算机高性能计算技术领域,特别涉及一种自动并行化多级并行代价评估方法。 
背景技术
随着人们对计算能力要求的提高,高性能计算系统的规模也越来越大,速度越来越快,高性能计算水平已经成为体现一个国家科技实力的重要因素,随着高性能计算系统规模的扩大,并行化编译系统在其中扮演越来越重要的角色。 
代价模型是编译器中用来评估应用程序运行时间的模块,反映计算机硬件和软件的性能特征,代价模型在编译器中处于极其重要的地位,是实施各种编译优化、提高程序效率的基础和依据,代价模型的完善程度直接影响程序优化后的性能。 
构建一个充分考虑计算机系统特征和程序特点的代价模型是充满吸引力和挑战性的课题,并行代价评估是当前并行化编译系统研究中不可或缺的一部分,一个程序是否有并行化空间,并行化之后的效果如何,这都需要一套较完备的评估方法来完成。 
发明内容
为克服现有技术中的不足,本发明提供一种较完备的、能够实现对多级并行模式的后端生成代码的精确并行化收益评估,且有效保证目标并行程序的加速效果的自动并行化多级并行代价评估方法。 
按照本发明所提供的设计方案,一种自动并行化多级并行代价评估方法,包含如下步骤: 
步骤1、粗粒度自动并行化代价评估,面向分布存储结构的消息通信自动并行 化进行代价收益分析,即MPI收益代价评估,包含如下步骤: 
1.1、基于计算数组的并行代价预评估,包含内容如下: 
步骤1.1.1、首先对源程序分析获得包含有数组生命周期的定义-引用图G(V,E); 
步骤1.1.2、根据定义-引用图G(V,E),计算源程序中任一数组的主导值; 
设数组x,源程序中数组x的定义次数为i,对其定义-引用图添加数组生命周期标志将其划分成若干子图G1、G2……Gi; 
在任意子图Gm中,设定义循环为um,共有j次引用,其中任一引用循环为vmn,数组x的数据集合
Figure BDA00003120965500021
表示数组x从v向上暴露于u的数组区域,数组x的数据集合 expose [ v mn ] u x m 代表定义-引用边 ( u m , v mn , expose [ v mn ] u x m ) 的权重,ψ(x,v)是数组x在循环v中的外层无关索引的迭代总数,则数组的主导值表示为: 
W x = Σ m = 1 m = i Σ n = 1 n = j ( u m , v mn , expose [ v mn ] u x m ) ;
步骤1.1.3、用数组主导值进行代价预评估,选择并行代价相对较小的数组予以划分,获得预并行的循环,即预并行区域; 
1.2、循环代价精准评估,由主导值代价评估得到预划分的循环,即预并行区域,并行精确代价为并行计算代价、并行通信代价和网络拥塞代价的叠加,计算公式如下: 
设并行计算代价为Sp,并行通信代价为Sc,网络阻塞代价为Sb,则并行精确代价为: 
S=Sp+Sc+Sb
设目标计算系统的原子计算代价为Scell,原子计算总量为amount_comp,则循环串行的计算代价为Ss=Scell*amount_comp,设计算系统拥有np个计算结点,将循环的串行计算代价均分给每个计算结点,则并行计算代价为: 
S p = S s np = S cell * amount _ comp np
一次通信的代价为该次通信步代价与此次通信通信步总量的乘积,设第i 次消息传递的步代价为Ti,原子通信代价为Tcell,原子通信总量为amount_comm,则此次通信的步代价Ti=Tcell*amount_comm, 
设计算系统拥有的进程数为np,通信方式为组内全通信,则消息传递的步总量为stepi=log2np,则此次通信的代价为: 
Si=Ti*stepi; 
通信次数为n,循环的通信代价为: 
S c = Σ i = 1 n S i = Σ i = 1 n T i * step i
计算网络拥塞代价,通过对计算系统网络多次性能测试,测得其次通信平均代价D,通信次数为n,循环的网络拥塞代价为: 
S b = Σ i = 1 n D i = n * D ;
1.3、计算出预并行区域的并行精确代价S后,与串行代价Ss进行对比,评估并行收益,判断是否对源程序中预并行化区域予以并行化执行; 
步骤2、中粒度自动并行化代价评估,面向共享存储结构的自动并行化进行代价收益分析,即OpenMP收益代价评估,包含如下步骤: 
2.1、针对共享存储中的DOALL并行、流水并行和DSWP并行三种不同的并行模型,构建相互对应的代价评估方法,对应DOALL并行、流水并行和DSWP并行三种并行模型的评估方法分别为: 
a)DOALL并行代价分析,编译时的静态分析方式、以及通过预编译与程序员交互的动态方式,将这两种方式相结合进行代价分析,并优化现有的代价模型以适应SPMD并行区的并行额外开销; 
b)DOACROSS并行代价分析,包含流水线中最后一个线程开始执行之前的循环执行开销,即流水填充阶段的开销,最后一个线程的执行开销,即满负载阶段的开销; 
c)PS-DSWP并行代价分析,自动生成的OpenMP PS-DSWP并行循环有三种类型,即S-S型、S-P型、P-S型,对这三种类型分别分析其代价; 
2.2、调用硬件模型中的处理器(Processorc)、Cache(Cachec)和TLB(TLBc)三个子模型,获得具体的开销; 
2.3、根据获得的具体开销值,评估并行收益,根据收益情况判断是否并行化执行; 
步骤3、细粒度自动并行化代价评估,面向短向量运算部件的自动向量化进行代价收益分析,即SIMD收益代价评估,包含如下步骤: 
3.1、计算每条语句的迭代次数,计算公式为: 
Figure BDA00003120965500041
其中D表示语句的迭代次数,假设某条语句在一个D层迭代空间中,Sj为迭代层j的初始值,Ej为结束值,Tj是步长; 
3.2、计算每条语句的单次执行代价,分析每条语句的中间树结构,每个树节点都对应一个操作,每个操作对应一条指令,每条指令的时延对应到树节点的代价,计算每条语句的执行代价; 
3.3、每条语句执行代价为本语句的单次执行代价与迭代次数之积,向量化总代价用C来表示,循环中可向量化语句条数为m,不可向量化语句条数为n,第i条标量语句迭代次数为Di,第j条向量化语句迭代次数为Dj,它们对应的执行代价分别记为CSi和CVj,则 
C = Σ i = 1 n ( CS i * D i ) + Σ j = 1 m ( CV j * D j ) ;
3.4、根据向量化总代价C的收益情况,若向量化总代价C有收益,则执行向量并行化; 
步骤4、对上述三种粒度的并行收益进行综合叠加,得到总的并行收益。 
所述步骤3.1中还包含当循环的迭代次数难以确定时,设定经验值为语句的迭代次数,同时保证内层循环中语句的迭代次数大于等于外层循环中的语句迭代次数。 
所述步骤3.2还包括根据语句向量化程度,分别计算语句执行代价,情况如下: 
3.2.1、当语句能够完全向量化时,用向量化语句的执行时延与向量化因子的商来表示向量化语句代价,其中CS代表标量语句进行单次执行的代价,CV向量化语句进行单次执行的代价,若该语句原子操作个数为s,第j个操作的指令时延为LINSTj,VF为向量化因子,表示为: 
CS = Σ j = 1 s LINST j CV = 1 VF * Σ j = 1 s LINST j ;
3.2.2、当语句不完全向量化时,从中间树的角度,分如下三种情况描述语句代价: 
3.2.2.1、对于根节点,对应的语句形式分为两种情况:a[i]=express和s=express,如果是a[i]=express,表达式左值是数组,按照向量化装载指令时延计算其代价,若该情况下的数组不连续,其代价为VF条将向量拆成标量的语句和VF条标量装载指令执行代价的叠加;若是s=express,表达式左值是标量,此节点的代价为一次赋值的代价,若语句是该标量在基本块中最后一次定义且循环外引用该标量,则在循环外添加对该标量的赋值,将该标量在循环中的最终定义从向量中提取出来,并赋给标量; 
3.2.2.2、对于中间节点,对应算术逻辑运算,依据对应的向量化指令时延计算节点的代价; 
3.2.2.3、对于叶节点,对应数组、标量、常量,包含: 
a:当叶节点对应数组时,按照对应的装载指令时延,计算代价,若数组指针地址相对于循环索引不连续或不对齐,则按照代码生成策略分析代价; 
b:当叶节点对应标量时,当该标量是由循环中某条语句定值,且该语句可向量化,则该标量语句无执行代价;否则,要计算标量到向量的装载代价,计 算标量到向量的装载代价分为两种:1)若语句被完全向量化,则标量语句的执行代价按照相对应的中间树节点的指令延迟计算,2)若语句被部分向量化,标量语句的执行代价还包含向量重组的代价; 
c:当叶节点对应常量时,根据常量到向量的装载运算时延计算代价。 
本发明自动并行化多级并行代价评估方法的有益效果: 
1.本发明自动并行化多级并行代价评估方法,首先进行粗粒度自动并行化代价评估,面向分布存储结构中的消息通信并行机制进行自动并行化代价收益分析,适用于MPI自动并行化,其次进行中粒度自动并行化代价评估,面向共享存储并行机制进行自动并行化代价收益分析,适用于OpenMP自动并行化,最后进行细粒度自动并行化代价评估,面向短向量运算部件的并行化进行代价评估和收益分析,适用于SIMD自动向量化,能够较完整、全面的解决现有技术中的不足。 
2.本发明自动并行化多级并行代价评估方法针对共享存储中的DOALL并行、流水并行和DSWP并行三种不同的并行模型,构建对应的评估方法,细化代价评估模型和并行收益分析,为改进现有代价模型中存在的不足,DOALL并行代价分析将编译时的静态分析和通过预编译时候与程序员交互的动态方式相结合来获取代价分析过程中需要的信息,并优化现有的代价模型以适应SPMD并行区的并行额外开销,本发明将DOACROSS循环的执行代价分为两部分来考虑,第一部分是流水线中最后一个线程开始执行之前循环的执行开销,即流水填充阶段的开销,第二部分是最后一个线程的执行开销,即满负载阶段的开销,对PS-DSWP并行循环的三种类型,S-S型、S-P型和P-S型分别进行代价分析。 
3.本发明自动并行化多级并行代价评估方法中向量化代价由各条语句对应的执行代价叠加而成,每条语句执行代价由本语句的单次执行代价与迭代次数(执行次数)之积来描述,本方法提供了语句迭代次数和语句单次执行代价的计算方法,并采用设定经验值的方式来适应循环迭代次数不确定的情况。 
附图说明:
图1为本发明自动并行化多级并行代价评估方法的流程示意图; 
图2为本发明的粗粒度自动并行化代价评估流程示意图; 
图3为本发明的中粒度自动并行化代价评估流程示意图; 
图4为本发明的细粒度自动并行化代价评估流程示意图。 
具体实施方式:
参见图1~4,一种自动并行化多级并行代价评估方法,包含如下步骤: 
步骤1、粗粒度自动并行化代价评估,面向分布存储结构的消息通信自动并行化进行代价收益分析,即MPI收益代价评估,包含如下步骤: 
1.1、基于计算数组的并行代价预评估,包含内容如下: 
步骤1.1.1、首先对源程序分析获得包含有数组生命周期的定义-引用图G(V,E); 
步骤1.1.2、根据定义-引用图G(V,E),计算源程序中任一数组的主导值; 
设数组x,源程序中数组x的定义次数为i,对其定义-引用图添加数组生命周期标志将其划分成若干子图G1、G2……Gi; 
在任意子图Gm中,设定义循环为um,共有j次引用,其中任一引用循环为vmn,数组x的数据集合表示数组x从v向上暴露于u的数组区域,数组x的数据集合 expose [ v mn ] u x m 代表定义-引用边 ( u m , v mn , expose [ v mn ] u x m ) 的权重,ψ(x,v)是数组x在循环v中的外层无关索引的迭代总数,则数组的主导值表示为: 
W x = Σ m = 1 m = i Σ n = 1 n = j ( u m , v mn , expose [ v mn ] u x m ) ;
步骤1.1.3、用数组主导值进行代价预评估,选择并行代价相对较小的数组予以划分,获得预并行的循环,即预并行区域; 
1.2、循环代价精准评估,由主导值代价评估得到预划分的循环,即预并行区域,并行精确代价为并行计算代价、并行通信代价和网络拥塞代价的叠加,计算公式如下: 
设并行计算代价为Sp,并行通信代价为Sc,网络阻塞代价为Sb,则并行精确代价为: 
S=Sp+Sc+Sb
设目标计算系统的原子计算代价为Scell,原子计算总量为amount_comp,则循环串行的计算代价为Ss=Scell*amount_comp,设计算系统拥有np个计算结点,将循环的串行计算代价均分给每个计算结点,则并行计算代价为: 
S p = S s np = S cell * amount _ comp np
一次通信的代价为该次通信步代价与此次通信通信步总量的乘积,设第i次消息传递的步代价为Ti,原子通信代价为Tcell,原子通信总量为amount_comm,则此次通信的步代价Ti=Tcell*amount_comm, 
设计算系统拥有的进程数为np,通信方式为组内全通信,则消息传递的步总量为stepi=log2np,则此次通信的代价为: 
Si=Ti*stepi; 
通信次数为n,循环的通信代价为: 
S c = Σ i = 1 n S i = Σ i = 1 n T i * step i
计算网络拥塞代价,通过对计算系统网络多次性能测试,测得其次通信平均代价D,通信次数为n,循环的网络拥塞代价为: 
S b = Σ i = 1 n D i = n * D ;
1.3、计算出预并行区域的并行精确代价S后,与串行代价Ss进行对比,评 估并行收益,判断是否对源程序中预并行化区域予以并行化执行; 
步骤2、中粒度自动并行化代价评估,面向共享存储结构的自动并行化进行代价收益分析,即OpenMP收益代价评估,包含如下步骤: 
2.1、针对共享存储中的DOALL并行、流水并行和DSWP并行三种不同的并行模型,构建相互对应的代价评估方法,对应DOALL并行、流水并行和DSWP并行三种并行模型的评估方法分别为: 
a)DOALL并行代价分析,编译时的静态分析方式、以及通过预编译与程序员交互的动态方式,将这两种方式相结合进行代价分析,能够实现更精确的代价评估,对于因为静态分析无法获知信息导致并行负收益的循环,能够更加有效地进行分析,并优化现有的代价模型以适应SPMD并行区的并行额外开销; 
b)DOACROSS并行代价分析,包含流水线中最后一个线程开始执行之前的循环执行开销,即流水填充阶段的开销,最后一个线程的执行开销,即满负载阶段的开销; 
c)PS-DSWP并行代价分析,自动生成的OpenMP PS-DSWP并行循环有三种类型,即S-S型、S-P型、P-S型,对这三种类型分别分析其代价; 
2.2、调用硬件模型中的处理器(Processorc)、Cache(Cachec)和TLB(TLBc)三个子模型,获得具体的开销; 
2.3、根据获得的具体开销值,评估并行收益,根据收益情况判断是否并行化执行; 
步骤3、细粒度自动并行化代价评估,面向短向量运算部件的自动向量化进行代价收益分析,即SIMD收益代价评估,包含如下步骤: 
3.1、计算每条语句的迭代次数,计算公式为: 
Figure BDA00003120965500101
其中D表示语句的迭代次数,假设某条语句在一个D层迭代空间中,Sj为迭代层j的初始值,Ej为结束值,Tj是步长; 
3.2、计算每条语句的单次执行代价,分析每条语句的中间树结构,每个树节点都对应一个操作,每个操作对应一条指令,每条指令的时延对应到树节点的代价,计算每条语句的执行代价; 
步骤3.3、每条语句执行代价为本语句的单次执行代价与迭代次数之积,向量化总代价用C来表示,循环中可向量化语句条数为m,不可向量化语句条数为n,第i条标量语句迭代次数为Di,第j条向量化语句迭代次数为Dj,它们对应的执行代价分别记为CSi和CVj,则 
C = Σ i = 1 n ( CS i * D i ) + Σ j = 1 m ( CV j * D j ) ;
步骤3.4、根据向量化总代价C的收益情况,当向量化总代价C小于串行代码标量代价,代表向量化总代价C有收益,执行向量并行化; 
步骤4、对上述三种粒度的并行收益进行综合叠加,得到总的并行收益。 
所述步骤3.1中还包含当循环的迭代次数难以确定时,设定经验值为语句的迭代次数,同时保证内层循环中语句的迭代次数大于等于外层循环中的语句迭代次数。 
所述步骤3.2还包括根据语句向量化程度,分别计算语句执行代价,情况如下: 
步骤3.2.1、当语句能够完全向量化时,用向量化语句的执行时延与向量化因子的商来表示向量化语句代价,其中CS代表标量语句进行单次执行的代价,CV向量化语句进行单次执行的代价,若该语句原子操作个数为s,第j个操作的指令时延为LINSTj,VF为向量化因子,表示为: 
CS = Σ j = 1 s LINST j CV = 1 VF * Σ j = 1 s LINST j ;
步骤3.2.2、当语句不完全向量化时,从中间树的角度,分如下三种情况描述语句代价: 
步骤3.2.2.1、对于根节点,对应的语句形式分为两种情况:a[i]=express和s=express,如果是a[i]=express,表达式左值是数组,按照向量化装载指令时延计算其代价,若该情况下的数组不连续,其代价为VF条将向量拆成标量的语句和VF条标量装载指令执行代价的叠加;若是s=express,表达式左值是标量,此节点的代价为一次赋值的代价,若语句是该标量在基本块中最后一次定义且循环外引用该标量,则在循环外添加对该标量的赋值,将该标量在循环中的最终定义从向量中提取出来,并赋给标量; 
步骤3.2.2.2、对于中间节点,对应算术逻辑运算,依据对应的向量化指令时延计算节点的代价; 
步骤3.2.2.3、对于叶节点,对应数组、标量、常量,包含: 
a:当叶节点对应数组时,按照对应的装载指令时延,计算代价,若数组指针地址相对于循环索引不连续或不对齐,则按照代码生成策略分析代价; 
b:当叶节点对应标量时,当该标量是由循环中某条语句定值,且该语句可向量化,则该标量语句无执行代价;否则,要计算标量到向量的装载代价,计算标量到向量的装载代价分为两种:1)若语句被完全向量化,则标量语句的执行代价按照相对应的中间树节点的指令延迟计算,2)若语句被部分向量化,标量语句的执行代价还包含向量重组的代价; 
c:当叶节点对应常量时,根据常量到向量的装载运算时延计算代价。 

Claims (6)

1.一种自动并行化多级并行代价评估方法,其特征在于:包含如下步骤:
步骤1、粗粒度自动并行化代价评估,面向分布存储结构的消息通信自动并行化进行代价收益分析,即MPI收益代价评估;
步骤2、中粒度自动并行化代价评估,面向共享存储结构的自动并行化进行代价收益分析,即OpenMP收益代价评估;
步骤3、细粒度自动并行化代价评估,面向短向量运算部件的自动向量化进行代价收益分析,即SIMD收益代价评估;
步骤4、对上述三种粒度的并行收益进行综合,得到总的并行收益。
2.根据权利要求1所述的自动并行化多级并行代价评估方法,其特征在于:所述
步骤1还包含包含如下步骤:
步骤1.1、基于计算数组的并行代价预评估,包含内容如下:
步骤1.1.1、首先对源程序分析获得包含有数组生命周期的定义-引用图G(V,E);
步骤1.1.2、根据定义-引用图G(V,E),计算源程序中任一数组的主导值;
设数组x,源程序中数组x的定义次数为i,对其定义-引用图添加数组生命周期标志将其划分成若干子图G1、G2……Gi;
在任意子图Gm中,设定义循环为um,共有j次引用,其中任一引用循环为vmn,数组x的数据集合
Figure FDA00003120965400011
表示数组x从v向上暴露于u的数组区域,数组x的数据集合 expose [ v mn ] u x m 代表定义-引用边 ( u m , v mn , expose [ v mn ] u x m ) 的权重,ψ(x,v)是数组x在循环v中的外层无关索引的迭代总数,则数组的主导值表示为:
W x = Σ m = 1 m = i Σ n = 1 n = j ( u m , v mn , expose [ v mn ] u x m ) ;
步骤1.1.3、用数组主导值进行代价预评估,选择并行代价相对较小的数组予以划分,获得预并行的循环,即预并行区域;
步骤1.2、循环代价精准评估,由主导值代价评估得到预划分的循环,即预并行区域,并行精确代价为并行计算代价、并行通信代价和网络拥塞代价的叠加,计算公式如下:
设并行计算代价为Sp,并行通信代价为Sc,网络阻塞代价为Sb,则并行精确代价为:
S=Sp+Sc+Sb
设目标计算系统的原子计算代价为Scell,原子计算总量为amount_comp,则循环串行的计算代价为Ss=Scell*amount_comp,设计算系统拥有np个计算结点,将循环的串行计算代价均分给每个计算结点,则并行计算代价为:
S p = S s np = S cell * amount _ comp np
一次通信的代价为该次通信步代价与此次通信通信步总量的乘积,设第i次消息传递的步代价为Ti,原子通信代价为Tcell,原子通信总量为amount_comm,则此次通信的步代价Ti=Tcell*amount_comm,
设计算系统拥有的进程数为np,通信方式为组内全通信,则消息传递的步总量为stepi=log2np,则此次通信的代价为:
Si=Ti*stepi
通信次数为n,循环的通信代价为:
S c = Σ i = 1 n S i = Σ i = 1 n T i * step i
计算网络拥塞代价,通过对计算系统网络多次性能测试,测得其次通信平均代价D,通信次数为n,循环的网络拥塞代价为:
S b = Σ i = 1 n D i = n * D ;
步骤1.3、计算出预并行区域的并行精确代价S后,与串行代价Ss进行对比,评估并行收益,判断是否对源程序中预并行化区域予以并行化执行。
3.根据权利要求1所述的自动并行化多级并行代价评估方法,其特征在于:所述步骤2包含如下步骤:
步骤2.1、针对共享存储中的DOALL并行、流水并行和DSWP并行三种不同的并行模型,构建相互对应的代价评估方法,对应DOALL并行、流水并行和DSWP并行三种并行模型的评估方法分别为:
a)DOALL并行代价分析,编译时的静态分析方式、以及通过预编译与程序员交互的动态方式,将这两种方式相结合进行代价分析;
b)DOACROSS并行代价分析,包含流水线中最后一个线程开始执行之前的循环执行开销,即流水填充阶段的开销,最后一个线程的执行开销,即满负载阶段的开销;
c)PS-DSWP并行代价分析,对S-S型、S-P型、P-S型三种类型分别分析其代价;
步骤2.2、调用硬件模型中的处理器(Processorc)、Cache(Cachec)和TLB(TLBc)三个子模型,获得具体的开销;
步骤2.3、根据获得的具体开销值,评估并行收益,根据收益情况判断是否并行化执行。
4.根据权利要求1所述的自动并行化多级并行代价评估方法,其特征在于:所述步骤3包含如下步骤:
步骤3.1、计算每条语句的迭代次数,计算公式为:
Figure FDA00003120965400031
其中D表示语句的迭代次数,假设某条语句在一个D层迭代空间中,Sj为迭代层j的初始值,Ej为结束值,Tj是步长;
步骤3.2、计算每条语句的单次执行代价,分析每条语句的中间树结构,每个树节点都对应一个操作,每个操作对应一条指令,每条指令的时延对应到树节点的代价,计算每条语句的执行代价;
步骤3.3、每条语句执行代价为本语句的单次执行代价与迭代次数之积,向量化总代价用C来表示,循环中可向量化语句条数为m,不可向量化语句条数为n,第i条标量语句迭代次数为Di,第j条向量化语句迭代次数为Dj,它们对应的执行代价分别记为CSi和CVj,则
C = Σ i = 1 n ( CS i * D i ) + Σ j = 1 m ( CV j * D j ) ;
步骤3.4、根据向量化总代价C的收益情况,若向量化有收益,则执行向量并行化。
5.根据权利要求4中所述的自动并行化多级并行代价评估方法,其特征在于:所述步骤3.1中还包含当循环的迭代次数难以确定时,设定经验值为语句的迭代次数,同时保证内层循环中语句的迭代次数大于等于外层循环中的语句迭代次数。
6.根据权利要求4或5任一项权利要求所述的自动并行化多级并行代价评估方法,其特征在于:所述步骤3.2还包括根据语句向量化程度,分别计算语句执行代价,情况如下:
步骤3.2.1、当语句能够完全向量化时,用向量化语句的执行时延与向量化因子的商来表示向量化语句代价,其中CS代表标量语句进行单次执行的代价,CV向量化语句进行单次执行的代价,若该语句原子操作个数为s,第j个操作的指令时延为LINSTj,VF为向量化因子,表示为:
CS = Σ j = 1 s LINST j CV = 1 VF * Σ j = 1 s LINST j ;
步骤3.2.2、当语句不完全向量化时,从中间树的角度,分如下三种情况描述语句代价:
步骤3.2.2.1、对于根节点,对应的语句形式分为两种情况:a[i]=express和s=express,如果是a[i]=express,表达式左值是数组,按照向量化装载指令时延计算其代价,若该情况下的数组不连续,其代价为VF条将向量拆成标量的语句和VF条标量装载指令执行代价的叠加;若是s=express,表达式左值是标量,此节点的代价为一次赋值的代价,若语句是该标量在基本块中最后一次定义且循环外引用该标量,则在循环外添加对该标量的赋值,将该标量在循环中的最终定义从向量中提取出来,并赋给标量;
步骤3.2.2.2、对于中间节点,对应算术逻辑运算,依据对应的向量化指令时延计算节点的代价;
步骤3.2.2.3、对于叶节点,对应数组、标量、常量,包含:
a:当叶节点对应数组时,按照对应的装载指令时延,计算代价,若数组指针地址相对于循环索引不连续或不对齐,则按照代码生成策略分析代价;
b:当叶节点对应标量时,当该标量是由循环中某条语句定值,且该语句可向量化,则该标量语句无执行代价;否则,要计算标量到向量的装载代价,计算标量到向量的装载代价分为两种:1)若语句被完全向量化,则标量语句的执行代价按照对应的中间树节点的指令延迟计算,2)若语句被部分向量化,标量语句的执行代价还包含向量重组的代价;
c:当叶节点对应常量时,根据常量到向量的装载运算时延计算代价。
CN201310153710.3A 2013-04-27 2013-04-27 一种自动并行化多级并行代价评估方法 Expired - Fee Related CN103246541B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310153710.3A CN103246541B (zh) 2013-04-27 2013-04-27 一种自动并行化多级并行代价评估方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310153710.3A CN103246541B (zh) 2013-04-27 2013-04-27 一种自动并行化多级并行代价评估方法

Publications (2)

Publication Number Publication Date
CN103246541A true CN103246541A (zh) 2013-08-14
CN103246541B CN103246541B (zh) 2016-03-23

Family

ID=48926073

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310153710.3A Expired - Fee Related CN103246541B (zh) 2013-04-27 2013-04-27 一种自动并行化多级并行代价评估方法

Country Status (1)

Country Link
CN (1) CN103246541B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103902362A (zh) * 2014-04-29 2014-07-02 浪潮电子信息产业股份有限公司 一种对gtc软件shift模块串行代码并行化的方法
CN106469114A (zh) * 2015-08-18 2017-03-01 上海无线通信研究中心 一种面向通信测试的并行计算性能检测系统及其方法
CN109313449A (zh) * 2017-08-25 2019-02-05 深圳市得道健康管理有限公司 人工智能终端及其行为控制方法
CN110597558A (zh) * 2017-07-20 2019-12-20 上海寒武纪信息科技有限公司 一种神经网络任务处理系统
CN110806897A (zh) * 2019-10-29 2020-02-18 中国人民解放军战略支援部队信息工程大学 面向多代码粒度的向量并行性发掘方法
CN111158757A (zh) * 2019-12-31 2020-05-15 深圳芯英科技有限公司 并行存取装置和方法以及芯片
CN112596789A (zh) * 2019-09-17 2021-04-02 富士通株式会社 信息处理方法和非暂态计算机可读存储介质
CN115865761A (zh) * 2022-12-07 2023-03-28 安世亚太科技股份有限公司 一种考虑阻塞反馈的网络实体任务活动代价评估方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7673295B1 (en) * 2004-04-27 2010-03-02 Sun Microsystems, Inc. System and method for compile-time non-concurrency analysis
CN101944014A (zh) * 2010-09-15 2011-01-12 复旦大学 一种自动流水并行的实现方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7673295B1 (en) * 2004-04-27 2010-03-02 Sun Microsystems, Inc. System and method for compile-time non-concurrency analysis
CN101944014A (zh) * 2010-09-15 2011-01-12 复旦大学 一种自动流水并行的实现方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
张媛媛: "自动向量化中的收益评估技术研究", 《中国优秀硕士学位论文全文数据库 信息技术辑》 *
王慧春等: "基于SMP集群的混合并行编程模型研究", 《计算机工程》 *

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103902362A (zh) * 2014-04-29 2014-07-02 浪潮电子信息产业股份有限公司 一种对gtc软件shift模块串行代码并行化的方法
CN103902362B (zh) * 2014-04-29 2018-05-18 浪潮电子信息产业股份有限公司 一种对gtc软件shift模块串行代码并行化的方法
CN106469114A (zh) * 2015-08-18 2017-03-01 上海无线通信研究中心 一种面向通信测试的并行计算性能检测系统及其方法
CN106469114B (zh) * 2015-08-18 2019-06-04 上海无线通信研究中心 一种面向通信测试的并行计算性能检测系统及其方法
CN110597558A (zh) * 2017-07-20 2019-12-20 上海寒武纪信息科技有限公司 一种神经网络任务处理系统
CN109313449A (zh) * 2017-08-25 2019-02-05 深圳市得道健康管理有限公司 人工智能终端及其行为控制方法
CN112596789A (zh) * 2019-09-17 2021-04-02 富士通株式会社 信息处理方法和非暂态计算机可读存储介质
CN110806897A (zh) * 2019-10-29 2020-02-18 中国人民解放军战略支援部队信息工程大学 面向多代码粒度的向量并行性发掘方法
CN111158757A (zh) * 2019-12-31 2020-05-15 深圳芯英科技有限公司 并行存取装置和方法以及芯片
CN111158757B (zh) * 2019-12-31 2021-11-30 中昊芯英(杭州)科技有限公司 并行存取装置和方法以及芯片
CN115865761A (zh) * 2022-12-07 2023-03-28 安世亚太科技股份有限公司 一种考虑阻塞反馈的网络实体任务活动代价评估方法

Also Published As

Publication number Publication date
CN103246541B (zh) 2016-03-23

Similar Documents

Publication Publication Date Title
CN103246541A (zh) 自动并行化多级并行代价评估方法
Khezrimotlagh et al. Data envelopment analysis and big data
Carrington et al. An idiom-finding tool for increasing productivity of accelerators
Halbiniak et al. Performance exploration of various C/C++ compilers for AMD EPYC processors in numerical modeling of solidification
Ilić et al. High-performance computing on heterogeneous systems: Database queries on CPU and GPU
CN104793922B (zh) 一种大整数乘法Comba算法基于OpenMP的并行实现方法
Chen et al. Performance evaluation of convolutional neural network on Tianhe-3 prototype
Al-Zoubi et al. Towards dynamic multi-task schedulling of opencl programs on emerging cpu-gpu-fpga heterogeneous platforms: A fuzzy logic approach
Peredo et al. Acceleration of the Geostatistical Software Library (GSLIB) by code optimization and hybrid parallel programming
Ferreóon et al. Crossing the architectural barrier: Evaluating representative regions of parallel HPC applications
CN106020982A (zh) 一种软件组件资源消耗模拟方法
Li et al. A GPU-based parallel algorithm for large scale linear programming problem
Wei et al. Research on coarse-grained parallel algorithm of the Monte-Carlo simulation for probabilistic load flow calculation
Liyanage et al. Utilizing Intel advanced vector extensions for Monte Carlo simulation based value at risk computation
Djinevski et al. Network simulator tools and GPU parallel systems
Rai et al. On prediction accuracy of machine learning algorithms for characterizing shared L2 cache behavior of programs on multicore processors
Alberdi-Rodriguez et al. Recent memory and performance improvements in Octopus code
Nord et al. Monte Carlo option pricing with graphics processing units
Lastovetsky et al. How pre-multicore methods and algorithms perform in multicore era
Nesi et al. Summarizing task-based applications behavior over many nodes through progression clustering
Wang et al. Performance optimization for CPU-GPU heterogeneous parallel system
Schwambach et al. Estimating the potential speedup of computer vision applications on embedded multiprocessors
CN117435308B (zh) 一种基于并行计算算法的Modelica模型仿真方法及系统
Wang et al. Performance modeling and running strategy of parallel cdugksFOAM program
Costa et al. Exploring Opportunities for Performance Improvement in a Global Climate Model

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160323

Termination date: 20170427

CF01 Termination of patent right due to non-payment of annual fee