[发明专利]一种针对模板计算的菱形分块并行优化方法有效
申请号: | 202010136404.9 | 申请日: | 2020-03-02 |
公开(公告)号: | CN111381886B | 公开(公告)日: | 2022-07-12 |
发明(设计)人: | 伍卫国;王倩;刘松;屈彬 | 申请(专利权)人: | 西安交通大学 |
主分类号: | G06F9/38 | 分类号: | G06F9/38 |
代理公司: | 西安通大专利代理有限责任公司 61200 | 代理人: | 高博 |
地址: | 710049 *** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 针对 模板 计算 菱形 分块 并行 优化 方法 | ||
1.一种针对模板计算的菱形分块并行优化方法,其特征在于,包括以下步骤:
S1、定义一个d维空间迭代域计算定义模板,根据模板计算的斜率与菱形分块的宽度和高度选择菱形分块形状以及模板计算运行的计算机系统的Cache大小,确定菱形分块大小,针对模板计算确定菱形分块策略;
S2、对步骤S1得到的菱形分块进行并行调度策略,并在菱形分块的某一未进行菱形分块的维度上采取波阵面并行策略,针对模板计算采取所有菱形分块粗粒度并行策略及菱形分块内部细粒度波阵面并行的策略,完成并行优化;
菱形分块的并行调度策略具体为:
S2011、初始化DTSM,创建一个空的DAQ;将词典序最小的菱形分块diamond[0].d_pos的位置信息push()给DAQ,并将diamond[0].d_pos.state设置为BUSY;
S2012、线程从DAQ中pop()一个分块进行计算,计算完成后更新d_pos.state设为COMPLATE,并检查当前执行的菱形分块依赖的上层菱形分块是否达到可执行条件,若满足条件,则将上层菱形分块的diamond[check].d_pos的位置信息push进DAQ;
S2013、当所有diamone[].state的状态均为COMPLATE,则并行化过程结束;否则,继续执行步骤S2012;
未分块的维度波阵面并行策略具体为:
对模板计算的其中一维进行菱形分块后,对于空间迭代域大于1维的模板计算,得到的是棱柱体,在棱柱体内部我们提出一种基于波阵面的并行策略,通过OpenMP制导语句,针对每个菱形分块内部进行并行优化。
2.根据权利要求1所述的针对模板计算的菱形分块并行优化方法,其特征在于,步骤S1中,定义模板计算具体为:
定义一个d维空间迭代域为:
Φ={0,…,N1}×…×{0,…,Nd}
其中,Ni表示迭代空间中的任意一个迭代实例,Φ中共有N个迭代实例,每个迭代遵守模板S进行数据的更新,具体为:
S:Φ×{-R,…,+R}d
其中,R表示模板计算的斜率;模板计算的迭代时空域为Φ×{0,…,T},在时空域中共有T×N个迭代实例需要计算,T为总的时间步长。
3.根据权利要求1所述的针对模板计算的菱形分块并行优化方法,其特征在于,步骤S1中,模板计算的斜率R与菱形分块的宽度以及高度的关系如下:
其中,DW为菱形的宽度,DH为菱形的高度。
4.根据权利要求3所述的针对模板计算的菱形分块并行优化方法,其特征在于,步骤S1中,菱形分块的宽度为:
其中,Cache_size经过试验,选择L2 Cache大小得出的菱形分块大小对于程序局部性改善最优;Ntile表示进行菱形分块维度的大小,Dd是一个参考系数,表示模板计算的依赖深度,N表示模板计算空间迭代域的大小。
5.根据权利要求1所述的针对模板计算的菱形分块并行优化方法,其特征在于,步骤S2011中,对所有的菱形分块进行初始化,将d_pos.state设为FREE。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安交通大学,未经西安交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010136404.9/1.html,转载请声明来源钻瓜专利网。