当前位置: 首页 > 专利查询>南京大学专利>正文

一种针对基于分解的多面体抽象域的并行加速方法技术

技术编号:38547730 阅读:23 留言:0更新日期:2023-08-22 20:56
本发明专利技术公开了一种针对基于分解的多面体抽象域的并行加速方法。具体包括以下技术要点:主要由针对Chernikova算法的并行加速方法与针对基于分解的多面体域操作的并行加速方法两个部分组成,提供了一种并行计算射线的方法来加速Chernikova算法的方法,并且为并行计算产生的读写冲突提供了解决方法。多面体抽象域最主要的域操作有交操作、接合操作、加宽操作、包含测试、条件操作和赋值操作,本发明专利技术为这六种基于分解的域操作提供了并行加速方法。静态程序分析中,在基于分解的多面体抽象域表现不佳的某些场景下,本方法达到了显著缩短多面体抽象域的计算时间、且内存仅略微增加的技术效果。效果。效果。

【技术实现步骤摘要】
一种针对基于分解的多面体抽象域的并行加速方法


[0001]本专利技术涉及静态程序分析
,特别是涉及一种针对基于分解的多面体抽象域的并行加速方法。

技术介绍

[0002]数值抽象域是静态分析器的重要组成。静态分析器为每个程序点计算不变式,然后根据不变式检测程序是否存在数值相关的缺陷,这些缺陷包括除零错误、算术溢出、数组访问越界等。最为常用的数值抽象域包括区间抽象域、八边形抽象域和多面体抽象域。其中区间抽象域可表达的约束形式为x∈[a,b],八边形抽象域可表达的约束形式为
±
x
i
±
x
j
≤c,多面体抽象域可表达约束形式为由此可见,区间抽象域的表达能力最弱,无法表达多个变量之间的约束关系;八边形抽象域的表达能力稍强,可以表达两个变量之间的约束关系;多面体抽象域的表达能力最强,可以表示任意多个变量之间的线性约束关系。但是,计算复杂度是:区间抽象域<八边形抽象域<多面体抽象域,三者的分别是O(n)、O(n2)和指数级。对数值抽象域而言,计算精度和计算效率的本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种针对基于分解的多面体抽象域的并行加速方法,其特征在于,包括以下要点:S1:针对Chernikova算法的并行加速方法;S2:针对基于分解的交操作的并行加速方法;S3:针对基于分解的接合操作的并行加速方法;S4:针对基于分解的加宽操作的并行加速方法;S5:针对基于分解的包含测试的并行加速方法;S6:针对基于分解的条件操作的并行加速方法;S7:针对基于分解的赋值操作的并行加速方法。2.根据权利要求1所述的针对基于分解的多面体抽象域的并行加速方法,其特征在于,所述要点S1针对Chernikova算法的并行加速方法具体包括以下步骤:S11:主线程根据负载均衡原则把将要进行的计算划分为多个任务,并将任务加入线程池的任务队列,如若之前的迭代没有为子线程分配专属内存,则为每个子线程分配内存以保存它们的计算结果,子线程从生成子矩阵中只读取数据,向生成子中写入数据由主线程完成;S12:从任务队列中取得任务的线程开始运行,判断属于自身任务集合的射线对是否相邻,若相邻则生成新射线,并将结果写入属于本线程的内存区域;S13:待线程池的所有线程计算完毕后,主线程将子线程生成的射线拷贝到生成子矩阵。3.根据权利要求1所述的针对基于分解的多面体抽象域的并行加速方法,其特征在于,所述要点S2针对基于分解的交操作的并行加速方法具体包括以下步骤:S21:主线程计算划分π
P
和π
Q
的最小上界π
O
,作为结果多面体O的划分;主线程根据负载均衡原则把将要进行的计算划分为多个任务,并将任务加入线程池的任务队列;S22:从任务队列中取得任务的线程开始运行;每个线程的计算任务是:根据主线程指定的任务区间[begin,end),计算结果多面体O的因子(O
begin
,O
begin+1
,...,O
end
‑1);子线程计算因子O
k
的步骤包括:将多面体P中和变量集合π
O
,k

有关的因子的约束矩阵合并到约束矩阵将多面体Q中和变量集合π
O
,k

有关的因子的约束矩阵合并到约束矩阵以作为因子O
k
的约束矩阵,最后使用Chernikova算法为因子O
k
计算生成子矩阵S23:主线程等待线程池所有线程计算完成,返回多面体O=(O1,O2,...)及其划分π
O
。4.根据权利要求1所述的针对基于分解的多面体抽象域的并行加速方法,其特征在于,所述要点S3针对基于分解的接合操作的并行加速方法具体包括以下步骤:S31:进行第一阶段,重构多面体P为P

,重构多面体Q为Q

,并比较P

和Q

的对应因子是否相等;首先,主线程计算划分π
P
和π
Q
的最小上界π,主线程根据负载均衡原则把将要进行的计算划分为多个任务,并将任务加入线程池的任务队列;S32:从任务队列中取得任务的线程开始运行,每个线程的计算任务是:根据主线程指定的任务区间[begin,end),重构对P的部分因子,得到(P

begin
,P

begin+1
,...,P

end
‑1);重构多面体Q的部分因子,得到(Q

begin
,Q

begin+1
,...,Q

end
‑1);比较P

k
和Q

k
(其中k∈,begin,end))是否相等,将比较结果写入is_equal_array[k]中;S33:主线程等待所有子线程完成计算,第一阶段结束,进入第二阶段;在第二阶段中,
主线程首先遍历is_equal_array,连接is_equal_array中false位置对应的多面体P

的因子,得到大因子P

T
;连接is_equal_array中false位置对应的多面体Q

的因子,得到大因子Q

T
;合并因子P

T
和Q

T
的生成子,得到生成子矩阵F,然后使用所述要点S1提出的并行Chernikova算法计算F对应的约束矩阵C。S34:主线程将所述步骤S43中的(C,F)作为结果多面体O的一个因子加入O,并将is_equal_array中true位置对应的多面体P

的因子加入O。计算O的划分π
O
,然后返回O及其划分π
O
。5.根据权利要求1所述的针对基于分解的多面体抽象域的并行加速方法,其特征在于,所述要点S4针对基于分解的加宽操作的并行加速方法具体包括以下步骤:S41:主线程计算划分π
P
和π
Q
的最小上界π
O
,作为结果多面体的划分π
O
。主线程根据负载均衡原则把将要进行的计算划分为多个任务,并将任务加入线程池的任务队列;S42:从任务队列中取得任务的线程开始运行;每个线程的计算任务是:根据主线程指定的任务区间[begin,end),计算因子(...

【专利技术属性】
技术研发人员:左志强邓宇慧李宣东
申请(专利权)人:南京大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1