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

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

Info

Publication number
CN103246541B
CN103246541B CN201310153710.3A CN201310153710A CN103246541B CN 103246541 B CN103246541 B CN 103246541B CN 201310153710 A CN201310153710 A CN 201310153710A CN 103246541 B CN103246541 B CN 103246541B
Authority
CN
China
Prior art keywords
cost
statement
parallel
vectorization
scalar
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.)
Expired - Fee Related
Application number
CN201310153710.3A
Other languages
English (en)
Other versions
CN103246541A (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

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的数据集合表示数组x从vmn向上暴露于um的数组区域,数组x的数据集合占用空间的大小表示定义-引用边的权重,ψ(x,v)是数组x在循环v中的外层无关索引的迭代总数,则数组的主导值表示为:
W x = Σ m = 1 m = i Σ n = 1 n = j ( u m , v m n , exp o s e [ v m n ] u m x ) ;
步骤1.1.3、用数组主导值进行代价预评估,选择并行代价相对较小的数组予以划分,获得预并行的循环,即预并行区域;
1.2、循环代价精准评估,由主导值代价评估得到预划分的循环,即预并行区域,并行精确代价为并行计算代价、并行通信代价和网络拥塞代价的叠加,计算公式如下:
设并行计算代价为Sp,并行通信代价为Sc,网络阻塞代价为Sb,则并行精确代价为:
S=Sp+Sc+Sb
设目标计算***的原子计算代价为Scell,原子计算总量为amount_comp,则循环串行的计算代价为Ss=Scell*amount_comp,设计算***拥有np个计算结点,将循环的串行计算代价均分给每个计算结点,则并行计算代价为:
S p = S s n p = S c e l l * a m o u n t _ c o m p n p
一次通信的代价为该次通信步代价与此次通信通信步总量的乘积,设第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
计算网络拥塞代价,通过对计算***网络多次性能测试,测得通信平均代价Sd,通信次数为n,循环的网络拥塞代价为:
Sb=n*Sd
1.3、计算出预并行区域的并行精确代价S后,与串行代价Ss进行对比,评估并行收益,判断是否对源程序中预并行化区域予以并行化执行;
步骤2、中粒度自动并行化代价评估,面向共享存储结构的自动并行化进行代价收益分析,即OpenMP收益代价评估,包含如下步骤:
2.1、针对共享存储中的DOALL并行、流水并行和DSWP并行三种不同的并行模型,构建相互对应的代价评估方法,对应DOALL并行、流水并行和DSWP并行三种并行模型的评估方法分别为:
a)DOALL并行代价分析,编译时的静态分析方式、以及通过预编译与程序员交互的动态方式,将这两种方式相结合进行代价分析,并优化现有的代价模型以适应SPMD并行区的并行额外开销;
b)DOACROSS并行代价分析,包含流水线中最后一个线程开始执行之前的循环执行开销,即流水填充阶段的开销,最后一个线程的执行开销,即满负载阶段的开销;
c)PS-DSWP并行代价分析,自动生成的OpenMPPS-DSWP并行循环有三种类型,即S-S型、S-P型、P-S型,对这三种类型分别分析其代价;
2.2、调用硬件模型中的处理器(Processorc)、Cache(Cachec)和TLB(TLBc)三个子模型,获得具体的开销;
2.3、根据获得的具体开销值,评估并行收益,根据收益情况判断是否并行化执行;
步骤3、细粒度自动并行化代价评估,面向短向量运算部件的自动向量化进行代价收益分析,即SIMD收益代价评估,包含如下步骤:
3.1、计算每条语句的迭代次数,计算公式为:
其中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为向量化因子,表示为:
C S = Σ j = 1 s LINST j C V = 1 V F * Σ 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从vmn向上暴露于um的数组区域,数组x的数据集合占用空间的大小表示定义-引用边的权重,ψ(x,v)是数组x在循环v中的外层无关索引的迭代总数,则数组的主导值表示为:
W x = Σ m = 1 m = i Σ n = 1 n = j ( u m , v m n , exp o s e [ v m n ] u m x ) ;
步骤1.1.3、用数组主导值进行代价预评估,选择并行代价相对较小的数组予以划分,获得预并行的循环,即预并行区域;
1.2、循环代价精准评估,由主导值代价评估得到预划分的循环,即预并行区域,并行精确代价为并行计算代价、并行通信代价和网络拥塞代价的叠加,计算公式如下:
设并行计算代价为Sp,并行通信代价为Sc,网络阻塞代价为Sb,则并行精确代价为:
S=Sp+Sc+Sb
设目标计算***的原子计算代价为Scell,原子计算总量为amount_comp,则循环串行的计算代价为Ss=Scell*amount_comp,设计算***拥有np个计算结点,将循环的串行计算代价均分给每个计算结点,则并行计算代价为:
S p = S s n p = S c e l l * a m o u n t _ c o m p n p
一次通信的代价为该次通信步代价与此次通信通信步总量的乘积,设第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
计算网络拥塞代价,通过对计算***网络多次性能测试,测得通信平均代价Sd,通信次数为n,循环的网络拥塞代价为:
Sb==n*Sd
1.3、计算出预并行区域的并行精确代价S后,与串行代价Ss进行对比,评估并行收益,判断是否对源程序中预并行化区域予以并行化执行;
步骤2、中粒度自动并行化代价评估,面向共享存储结构的自动并行化进行代价收益分析,即OpenMP收益代价评估,包含如下步骤:
2.1、针对共享存储中的DOALL并行、流水并行和DSWP并行三种不同的并行模型,构建相互对应的代价评估方法,对应DOALL并行、流水并行和DSWP并行三种并行模型的评估方法分别为:
a)DOALL并行代价分析,编译时的静态分析方式、以及通过预编译与程序员交互的动态方式,将这两种方式相结合进行代价分析,能够实现更精确的代价评估,对于因为静态分析无法获知信息导致并行负收益的循环,能够更加有效地进行分析,并优化现有的代价模型以适应SPMD并行区的并行额外开销;
b)DOACROSS并行代价分析,包含流水线中最后一个线程开始执行之前的循环执行开销,即流水填充阶段的开销,最后一个线程的执行开销,即满负载阶段的开销;
c)PS-DSWP并行代价分析,自动生成的OpenMPPS-DSWP并行循环有三种类型,即S-S型、S-P型、P-S型,对这三种类型分别分析其代价;
2.2、调用硬件模型中的处理器(Processorc)、Cache(Cachec)和TLB(TLBc)三个子模型,获得具体的开销;
2.3、根据获得的具体开销值,评估并行收益,根据收益情况判断是否并行化执行;
步骤3、细粒度自动并行化代价评估,面向短向量运算部件的自动向量化进行代价收益分析,即SIMD收益代价评估,包含如下步骤:
3.1、计算每条语句的迭代次数,计算公式为:
D = Π j = 1 d ( E j - S j ) / T j , 其中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为向量化因子,表示为:
C S = Σ j = 1 s LINST j C V = 1 V F * Σ 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 (3)

1.一种自动并行化多级并行代价评估方法,其特征在于:包含如下步骤:
步骤1、粗粒度自动并行化代价评估,面向分布存储结构的消息通信自动并行化进行代价收益分析,即MPI收益代价评估;
步骤1还包含包含如下步骤:
步骤1.1、基于计算数组的并行代价预评估,包含内容如下:
步骤1.1.1、首先对源程序分析获得包含有数组生命周期的定义-引用图G(V,E);
步骤1.1.2、根据定义-引用图G(V,E),计算源程序中任一数组的主导值;
设数组x,源程序中数组x的定义次数为i,对其定义-引用图添加数组生命周期标志,并将其划分成i个子图G1、G2……Gi;
在任意子图Gm中,设定义循环为um,共有j次引用,其中任一引用循环为vmn,数组x的数据集合表示数组x从vmn向上暴露于um的数组区域,数组x的数据集合占用空间的大小表示定义-引用边的权重,则数组的主导值表示为:
W x = Σ m = 1 m = i Σ n = 1 n = j ( u m , v m n , exp o s e [ v m n ] u m x ) ;
步骤1.1.3、用数组主导值进行代价预评估,选择并行代价相对较小的数组予以划分,获得预并行的循环,即预并行区域;
步骤1.2、循环代价精准评估,由主导值代价评估得到预划分的循环,即预并行区域,并行精确代价为并行计算代价、并行通信代价和网络拥塞代价的叠加,计算公式如下:
设并行计算代价为Sp,并行通信代价为Sc,网络阻塞代价为Sb,则并行精确代价为:
S=Sp+Sc+Sb
设目标计算***的原子计算代价为Scell,原子计算总量为amount_comp,则循环串行的计算代价为Ss=Scell*amount_comp,设计算***拥有np个计算结点,将循环的串行计算代价均分给每个计算结点,则并行计算代价为:
S p = S s n p = S c e l l * a m o u n t _ c o m p n p
一次通信的代价为该次通信步代价与此次通信通信步总量的乘积,设第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
计算网络拥塞代价,通过对计算***网络多次性能测试,测得通信平均代价Sd,则循环的网络拥塞代价为:
Sb=n*Sd
步骤1.3、计算出预并行区域的并行精确代价S后,与串行代价Ss进行对比,评估并行收益,判断是否对源程序中预并行化区域予以并行化执行;
步骤2、中粒度自动并行化代价评估,面向共享存储结构的自动并行化进行代价收益分析,即OpenMP收益代价评估;
步骤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、根据获得的具体开销值,评估并行收益,根据收益情况判断是否并行化执行;
步骤3、细粒度自动并行化代价评估,面向短向量运算部件的自动向量化进行代价收益分析,即SIMD收益代价评估;
步骤3包含如下步骤:
步骤3.1、计算每条语句的迭代次数,计算公式为:其中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的收益情况,若向量化有收益,则执行向量并行化;
步骤4、对上述三种粒度的并行收益进行综合,得到总的并行收益。
2.根据权利要求1中所述的自动并行化多级并行代价评估方法,其特征在于:所述步骤3.1中还包含当循环的迭代次数难以确定时,设定经验值为语句的迭代次数,同时保证内层循环中语句的迭代次数大于等于外层循环中的语句迭代次数。
3.根据权利要求1所述的自动并行化多级并行代价评估方法,其特征在于:所述步骤3.2还包括根据语句向量化程度,分别计算语句执行代价,情况如下:
步骤3.2.1、当语句能够完全向量化时,用向量化语句的执行时延与向量化因子的商来表示向量化语句代价,其中CS代表标量语句进行单次执行的代价,CV向量化语句进行单次执行的代价,若该语句原子操作个数为s,第j个操作的指令时延为LINSTj,VF为向量化因子,表示为: C S = Σ j = 1 s LINST j C V = 1 V F * Σ 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 CN103246541A (zh) 2013-08-14
CN103246541B true 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)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103902362B (zh) * 2014-04-29 2018-05-18 浪潮电子信息产业股份有限公司 一种对gtc软件shift模块串行代码并行化的方法
CN106469114B (zh) * 2015-08-18 2019-06-04 上海无线通信研究中心 一种面向通信测试的并行计算性能检测***及其方法
CN107729990B (zh) * 2017-07-20 2021-06-08 上海寒武纪信息科技有限公司 支持离散数据表示的用于执行正向运算的装置及方法
CN109313449B (zh) * 2017-08-25 2021-07-30 深圳市大富智慧健康科技有限公司 人工智能终端及其行为控制方法
JP7263994B2 (ja) * 2019-09-17 2023-04-25 富士通株式会社 情報処理方法及び最適化プログラム
CN110806897B (zh) * 2019-10-29 2022-02-01 中国人民解放军战略支援部队信息工程大学 面向多代码粒度的向量并行性发掘方法
CN111158757B (zh) * 2019-12-31 2021-11-30 中昊芯英(杭州)科技有限公司 并行存取装置和方法以及芯片
CN115865761B (zh) * 2022-12-07 2024-06-18 安世亚太科技股份有限公司 一种考虑阻塞反馈的网络实体任务活动代价评估方法

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集群的混合并行编程模型研究;王慧春等;《计算机工程》;20090228;第35卷(第3期);第271-273页 *
自动向量化中的收益评估技术研究;张媛媛;《中国优秀硕士学位论文全文数据库 信息技术辑》;20120715(第7期);I138-2307 *

Also Published As

Publication number Publication date
CN103246541A (zh) 2013-08-14

Similar Documents

Publication Publication Date Title
CN103246541B (zh) 一种自动并行化多级并行代价评估方法
CN103279327B (zh) 面向异构simd扩展部件的自动向量化方法
CN103617150A (zh) 一种基于gpu的大规模电力***潮流并行计算***及其方法
Brandvik et al. An accelerated 3D Navier-Stokes solver for flows in turbomachines
CN103077253A (zh) Hadoop框架下高维海量数据GMM聚类方法
CN101639788B (zh) 一种基于tbb线程构建块的连续***仿真多核并行方法
CN112433853A (zh) 一种面向超级计算机数据并行应用的异构感知数据划分方法
CN111651208B (zh) 面向异构众核并行计算机的模态并行计算方法及***
CN101561833B (zh) 专用指令集处理器的设计方法
Munier et al. A Fast Implementation of Minimum Spanning Tree Method and Applying it to Kruskal’s and Prim’s Algorithms
CN103530132A (zh) 一种cpu串行程序移植到mic平台的方法
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
CN105608267A (zh) 一种多变量全局优化算法
Meyer et al. Performance modeling of heterogeneous systems
Seok et al. Parallel discrete event simulation for DEVS cellular models using a GPU
CN106020982A (zh) 一种软件组件资源消耗模拟方法
Li et al. A GPU-based parallel algorithm for large scale linear programming problem
Bacci et al. Summarising an experiment in parallel programming language design
Liu et al. An efficient SAT solving algorithm using pseudo-conflict learning and heterogeneous computing
Wang et al. Performance modeling and running strategy of parallel cdugksFOAM program
Shi et al. Efficient implementation of particle Swarm optimization algorithm
Garanina et al. Auto-Tuning High-Performance Programs Using Model Checking in Promela
Hao et al. Profpred: A compiler-level ir based performance prediction framework for mpi industrial applications
Kredel et al. A simple concept for the performance analysis of cluster-computing

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160323

Termination date: 20170427