CN103226513B - 基于二次规划模型的非线性下标表达式的依赖测试方法 - Google Patents
基于二次规划模型的非线性下标表达式的依赖测试方法 Download PDFInfo
- Publication number
- CN103226513B CN103226513B CN201310147595.9A CN201310147595A CN103226513B CN 103226513 B CN103226513 B CN 103226513B CN 201310147595 A CN201310147595 A CN 201310147595A CN 103226513 B CN103226513 B CN 103226513B
- Authority
- CN
- China
- Prior art keywords
- equation
- equations
- array
- target system
- tested
- 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
Links
Landscapes
- Complex Calculations (AREA)
Abstract
本发明涉及一种分析程序指令之间依赖关系的方法,属于高性能计算中并行化编译优化技术领域,特别是涉及一种基于二次规划模型的非线性下标表达式的依赖测试方法,本发明针对传统依赖测试方法对非线性依赖测试的不足,通过对循环索引边界约束条件下二次下标表达式的极值分析,将二次表达式的依赖测试抽象为一种二次规划的非线性规划问题,构造一种针对二次下标表达式依赖测试方法的可行方法,判定被测数组对之间的依赖,从而有效提高判定依赖和并行识别的能力。
Description
技术领域
本发明涉及一种分析程序指令之间依赖关系的方法,属于高性能计算中并行化编译优化技术领域,特别是涉及一种基于二次规划模型的非线性下标表达式的依赖测试方法。
背景技术
并行化编译系统是一个自动检测串行程序中潜在的并行性,并将串行程序转变为等价并行程序的编译系统,是并行计算机系统获得高校并行软件的有效途径,由于程序中循环往往占据了主要的运行时间,因此对循环并行性的识别自然成为了并行化编译的研究重点,而识别程序并行循环的基础就是测试循环的依赖关系。
依赖测试是用来判断循环嵌套中在两个相同数组的下标引用之间是否存在依赖的方法,在应用程序中,数组的下标引用可以是任意表达式,当数组下标是当前循环索引的线性表达式时,传统的依赖测试方法能够测试出当前循环的依赖关系,当数组下标是当前循环索引的非线性表达式时,传统的依赖测试方法就只能给出保守结果,即认为有依赖,这可能导致伪依赖的产生。
发明内容
本发明针对传统依赖测试方法对非线性依赖测试的不足,通过对循环索引边界约束条件下二次下标表达式的极值分析,将二次表达式的依赖测试抽象为一种二次规划的非线性规划问题,构造一种针对二次下标表达式依赖测试方法的可行方法,判定被测数组对之间的依赖,从而有效提高判定依赖和并行识别的能力。
本发明的技术方案是:
一种基于二次规划模型的非线性下标表达式的依赖测试方法,含有下列步骤:
步骤1:根据被测数组对的下标表达式,构建用于判断该被测数组对之间依赖的目标方程组:目标方程组中方程的个数等于产生被测数组对下标维展,目标方程组中每个方程的左值为对应维上数组对下标表达式的差值,目标方程组中每个方程的右值设置为0,目标方程组的未知量由包含该数组对的嵌套循环索引构成,嵌套循环的上、下界构成目标方程组的定义域;
步骤2:当被测数组对为循环无关依赖时,方程的左值为:数组下标表达式按循环索引变量的原始形式求差值;当被测数组对为循环携带依赖时,方程的左值为:其中一个数组下标表达式对应循环索引变量变换形式,再与另一数组下标表达式求差;
步骤3:对所述目标方程组进行求解,判定数组对依赖存在的条件是所述目标方程组在其定义域上具有整数解。
对所述目标方程组求解时,需要根据目标方程组中方程的不同情况进行求解,具体含有下列步骤:
步骤3.1:当所述目标方程组中只有一个方程时,且方程中只有一个未知数,对其进行单目标函数的二次规划,即在其带有约束的离散数据空间上求解一元二次方程,首先根据德尔塔判别公式判断方程是否有解,如果方程有解,进而利用求根公式求解并判断其解是否为整数,如果为整数,则被测数组对之间存在依赖,如果无解,则被测数组对之间不存在依赖;
步骤3.2:当所述目标方程组中只有一个方程时,且方程中含有多个未知数,在其带有约束的离散数据空间上进行单目标函数的二次规划,根据目标方程组中方程的二次项的系数构建二次项系数矩阵H,根据矩阵H的实际情况判定被测数组对之间是否存在依赖。
步骤3.3:当目标方程组中有多个方程时,对其进行多目标函数的二次规划,即在带有约束的离散数据空间上求解满足多个目标函数最优化过程,即分别对各个方程进行求解并判断其依赖,当目标方程组中至少有一个方程判断出不存在依赖时,则被测数组即不存在依赖;
步骤3.2.1:当所述二次项系数矩阵H为半正定时,求解方程的极值,如果极值大于0,则被测数组对之间无依赖,如果极值小于等于0时,则利用分支界定法求解方程是否有整数解,如果有整数解,则被测数组对之间存在依赖,如果无整数解,则被测数组对之间不存在依赖;
步骤3.2.2:当所述二次项系数矩阵H为半负定时,求解方程组的极值,如果极值小于0,则被测数组对之间无依赖;如果极值大于等于0,则利用分支界定法求解方程是否有整数解,如果有整数解,则被测数组对之间存在依赖,如果无整数解,则被测数组对之间不存在依赖;
步骤3.2.3:当所述二次项系数矩阵既不是半正定又不是半负定时,则无法判断被测数组对之间是否有依赖并假定被测数组对之间存在依赖;
步骤4:当根据目标方程组的解判定出被测数组存在依赖时,可根据目标方程组的解计算依赖的距离向量和方向向量,并根据被测数组对之间的引用类型,进一步判定该依赖是流依赖、反依赖或者输出依赖;
步骤5:如果被测数组对都是读引用,则认为被测数组对之间不存在依赖。
本发明的有益积极效果是:
1.本发明在对应用程序进行静态编译时,针对数组下标是循环索引的二次多项式的情况,以及通过过程检分析和优化手段将对其它数组的间接引用转化为二次多项式的问题,通过判定一元二次方程是否有解、判定二次项系数矩阵的正定性、求解目标方程左值的极值、求解目标方程的整数解等过程,能够有效判断传统依赖测试无法判断的依赖表达式,有效消除了部分伪依赖。
2.本发明还在程序执行过程中,对部分影响循环并行性的伪依赖进行了消除,从而使得部分根据传统依赖测试无法识别为并行的循环,可以被识别并行并被并行执行,从而有效提高并行识别的能力。
附图说明
图1为单目标函数中含有一个未知数的二次规划求解流程图;
图2为单目标函数中含有多个未知数的二次规划求解流程图;
图3为多目标函数的二次规划求解流程图。
具体实施方式
参见图1,图2,图3,所示,一种基于二次规划模型的非线性下标表达式的依赖测试方法,含有下列步骤:
步骤1:根据被测数组对的下标表达式,构建用于判断该被测数组对之间依赖的目标方程组:目标方程组中方程的个数等于产生被测数组对下标维展,目标方程组中每个方程的左值为对应维上数组对下标表达式的差值,目标方程组中每个方程的右值设置为0,目标方程组的未知量由包含该数组对的嵌套循环索引构成,嵌套循环的上、下界构成目标方程组的定义域;
步骤2:当被测数组对为循环无关依赖时,方程的左值为:数组下标表达式按循环索引变量的原始形式求差值;当被测数组对为循环携带依赖时,方程的左值为:其中一个数组下标表达式对应循环索引变量变换形式,再与另一数组下标表达式求差;
步骤3:对所述目标方程组进行求解,判定数组对依赖存在的条件是所述目标方程组在其定义域上具有整数解。
对所述目标方程组求解时,需要根据目标方程组中方程的不同情况进行求解,具体含有下列步骤:
步骤3.1:当所述目标方程组中只有一个方程时,且方程中只有一个未知数,对其进行单目标函数的二次规划,即在其带有约束的离散数据空间上求解一元二次方程,首先根据德尔塔判别公式判断方程是否有解,如果方程有解,进而利用求根公式求解并判断其解是否为整数,如果为整数,则被测数组对之间存在依赖,如果无解,则被测数组对之间不存在依赖;
步骤3.2:当所述目标方程组中只有一个方程时,且方程中含有多个未知数,在其带有约束的离散数据空间上进行单目标函数的二次规划,根据目标方程组中方程的二次项的系数构建二次项系数矩阵H,根据矩阵H的实际情况判定被测数组对之间是否存在依赖。
步骤3.3:当目标方程组中有多个方程时,对其进行多目标函数的二次规划,即在带有约束的离散数据空间上求解满足多个目标函数最优化过程,即分别对各个方程进行求解并判断其依赖,当目标方程组中至少有一个方程判断出不存在依赖时,则被测数组即不存在依赖;
步骤3.2.1:当所述二次项系数矩阵H为半正定时,求解方程的极值,如果极值大于0,则被测数组对之间无依赖,如果极值小于等于0时,则利用分支界定法求解方程是否有整数解,如果有整数解,则被测数组对之间存在依赖,如果无整数解,则被测数组对之间不存在依赖;
步骤3.2.2:当所述二次项系数矩阵H为半负定时,求解方程组的极值,如果极值小于0,则被测数组对之间无依赖;如果极值大于等于0,则利用分支界定法求解方程是否有整数解,如果有整数解,则被测数组对之间存在依赖,如果无整数解,则被测数组对之间不存在依赖;
步骤3.2.3:当所述二次项系数矩阵既不是半正定又不是半负定时,则无法判断被测数组对之间是否有依赖并假定被测数组对之间存在依赖。
步骤4:当根据目标方程组的解判定出被测数组存在依赖时,可根据目标方程组的解计算依赖的距离向量和方向向量,并根据被测数组对之间的引用类型,进一步判定该依赖是流依赖、反依赖或者输出依赖。
步骤5:如果被测数组对都是读引用,则认为被测数组对之间不存在依赖。
该方法同样适用于在给定距离向量或方向向量的情况下判定依赖,此时目标方程组的未知量由包含该数组对的嵌套循环索引构成,嵌套循环的上下界构成方程组的定义域,并且每两个对应的未知量之间关系由距离向量或方向向量分量决定。
Claims (1)
1.一种基于二次规划模型的非线性下标表达式的依赖测试方法,其特征在于:含有下列步骤:
步骤1:根据被测数组对的下标表达式,构建用于判断该被测数组对之间依赖的目标方程组:目标方程组中方程的个数等于产生被测数组对下标维展,目标方程组中每个方程的左值为对应维上数组对下标表达式的差值,目标方程组中每个方程的右值设置为0,目标方程组的未知量由包含该数组对的嵌套循环索引构成,嵌套循环的上、下界构成目标方程组的定义域;
步骤2:当被测数组对为循环无关依赖时,方程的左值为:数组下标表达式按循环索引变量的原始形式求差值;当被测数组对为循环携带依赖时,方程的左值为:其中一个数组下标表达式对应循环索引变量变换形式,再与另一数组下标表达式求差;
步骤3:对所述目标方程组进行求解,判定数组对依赖存在的条件是所述目标方程组在其定义域上具有整数解,对所述目标方程组求解时,需要根据目标方程组中方程的不同情况进行求解,具体含有下列步骤:
步骤3.1:当所述目标方程组中只有一个方程时,且方程中只有一个未知数,对其进行单目标函数的二次规划,即在其带有约束的离散数据空间上求解一元二次方程,首先根据德尔塔判别公式判断方程是否有解,如果方程有解,进而利用求根公式求解并判断其解是否为整数,如果为整数,则被测数组对之间存在依赖,如果无解,则被测数组对之间不存在依赖;
步骤3.2:当所述目标方程组中只有一个方程时,且方程中含有多个未知数,在其带有约束的离散数据空间上进行单目标函数的二次规划,根据目标方程组中方程的二次项的系数构建二次项系数矩阵H,根据矩阵H的实际情况判定被测数组对之间是否存在依赖,具体包含如下步骤:
步骤3.2.1:当所述二次项系数矩阵H为半正定时,求解方程的极值,如果极值大于0,则被测数组对之间无依赖,如果极值小于等于0时,则利用分支界定法求解方程是否有整数解,如果有整数解,则被测数组对之间存在依赖,如果无整数解,则被测数组对之间不存在依赖;
步骤3.2.2:当所述二次项系数矩阵H为负正定时,求解方程组的极值,如果极值小于0,则被测数组对之间无依赖;如果极值大于等于0,则利用分支界定法求解方程是否有整数解,如果有整数解,则被测数组对之间存在依赖,如果无整数解,则被测数组对之间不存在依赖;
步骤3.2.3:当所述二次项系数矩阵既不是半正定又不是半负定时,则无法判断被测数组对之间是否有依赖并假定被测数组对之间存在依赖;
步骤3.3:当目标方程组中有多个方程时,对其进行多目标函数的二次规划,即在带有约束的离散数据空间上求解满足多个目标函数最优化过程,即分别对各个方程进行求解并判断其依赖,当目标方程组中至少有一个方程判断出不存在依赖时,则被测数组即不存在依赖;
步骤4:当根据目标方程组的解判定出被测数组存在依赖时,可根据目标方程组的解计算依赖的距离向量和方向向量,并根据被测数组对之间的引用类型,进一步判定该依赖是流依赖、反依赖或者输出依赖;
步骤5:如果被测数组对都是读引用,则认为被测数组对之间不存在依赖。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310147595.9A CN103226513B (zh) | 2013-04-25 | 2013-04-25 | 基于二次规划模型的非线性下标表达式的依赖测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310147595.9A CN103226513B (zh) | 2013-04-25 | 2013-04-25 | 基于二次规划模型的非线性下标表达式的依赖测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103226513A CN103226513A (zh) | 2013-07-31 |
CN103226513B true CN103226513B (zh) | 2015-12-09 |
Family
ID=48836971
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310147595.9A Expired - Fee Related CN103226513B (zh) | 2013-04-25 | 2013-04-25 | 基于二次规划模型的非线性下标表达式的依赖测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103226513B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107977314B (zh) * | 2017-11-28 | 2021-05-04 | 哈尔滨工大易通智能机器人技术有限公司 | 一种基于矩阵获取进程任务块依赖关系的方法 |
CN109614571B (zh) * | 2018-10-09 | 2023-05-12 | 创新先进技术有限公司 | 非线性规划问题的处理方法及装置 |
CN114935721B (zh) * | 2022-05-30 | 2023-03-24 | 深圳先进技术研究院 | 一种基于光纤光栅传感器的锂离子电池荷电状态估计方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101944040A (zh) * | 2010-09-15 | 2011-01-12 | 复旦大学 | 一种基于谓词的自动并行优化方法 |
CN102707952A (zh) * | 2012-05-16 | 2012-10-03 | 上海大学 | 嵌入式异构多核处理器上基于用户描述的程序设计方法 |
-
2013
- 2013-04-25 CN CN201310147595.9A patent/CN103226513B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101944040A (zh) * | 2010-09-15 | 2011-01-12 | 复旦大学 | 一种基于谓词的自动并行优化方法 |
CN102707952A (zh) * | 2012-05-16 | 2012-10-03 | 上海大学 | 嵌入式异构多核处理器上基于用户描述的程序设计方法 |
Non-Patent Citations (3)
Title |
---|
A Nonlinear Array Subscripts Dependence Test;Zhao Jie, Zhao Rongcai and Han Lin;《2012 IEEE 14th International Conference on High Performance Computing and Communications》;20120627;正文第4页左栏-第5页右栏 * |
Banerjee-GCD与Banerjee-Bound联合数组相关性测试;马国凯等;《计算机学报》;20020228;第25卷(第2期);全文 * |
循环携带反依赖的MPI自动并行化研究;赵捷等;《计算机科学》;20120630;第39卷(第6期);正文第2页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103226513A (zh) | 2013-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103226513B (zh) | 基于二次规划模型的非线性下标表达式的依赖测试方法 | |
CN105426309B (zh) | 测试用例自动生成方法和装置 | |
US8959498B2 (en) | Parallelization method, system and program | |
CN102346442A (zh) | 适于节点分析框架的微网暂态仿真并行计算方法 | |
Kim et al. | KGEN: A Python tool for automated Fortran kernel generation and verification | |
KR20180034626A (ko) | 데이터 처리 그래프 컴파일 | |
CN102289362A (zh) | 分段符号执行装置及其工作方法 | |
CN104408019A (zh) | 一种基于mic平台实现gmres算法并行加速的方法 | |
CN105302624A (zh) | 一种可重构编译器中循环流水迭代间启动间距自动分析方法 | |
Esler et al. | GAMPACK (GPU accelerated algebraic multigrid package) | |
CN102520984A (zh) | 目标软件在指定硬件环境中最差时间的计算方法 | |
CN102508691B (zh) | 一种图形语言程序的有序分解方法及有序分解器 | |
Finlayson et al. | Introducing tetra: an educational parallel programming system | |
CN106383961B (zh) | Cpu+mic异构平台下的大涡模拟算法优化处理方法 | |
Guillen et al. | DVFS automatic tuning plugin for energy related tuning objectives | |
Huchant et al. | Adaptive partitioning for iterated sequences of irregular OpenCL kernels | |
Latu et al. | Scaling and optimizing the Gysela code on a cluster of many-core processors | |
Bormanis | Development of energy consumption model for virtual commissioning software | |
Banković et al. | A practical approach for energy efficient scheduling in multicore environments by combining evolutionary and YDS algorithms with faster energy estimation | |
Schaefer | Reducing search space of auto-tuners using parallel patterns | |
Woodward et al. | Advancing the adoption of high performance computing for time domain simulation | |
CN109375991A (zh) | 一种将单进程改造为多进程的方法及系统 | |
Nerger et al. | Ensemble Data Assimilation in NEMO using PDAF | |
Carl et al. | An approach to parallelizing the simulation of complicated modelica models | |
Nobre et al. | A DSE example of using LARA for identifying compiler optimization sequences |
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: 20151209 Termination date: 20160425 |