一种基于空间密铺的模板计算方法和系统转让专利

申请号 : CN201810204889.3

文献号 : CN108614735B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张云泉袁泉黄珊郭鹏

申请人 : 中国科学院计算技术研究所

摘要 :

本发明涉及一种基于空间密铺的模板计算方法和系统,包括:采用计算模板对数据空间进行密铺,以将数据空间划分为多个第一类区块,并将第一类区块更新为自然块;以自然块的边中点作为第一类中心点,通过将数据空间中格点划分至与其距离最近的第一类中心点,将数据空间划分为多个第二类区块;更新第二类区块,将数据空间中数据更新次数为零的格点作为第二中心点,通过将数据空间中格点划分至与其距离最近的第二中心点,将数据空间划分为多个第三区块;对第三区块进行更新,以完成对数据空间的更新。通过本发明的空间划分方法,可提高数据空间的更新效率。

权利要求 :

1.一种基于空间密铺的模板计算方法,其特征在于,包括:

步骤1、获取包含待更新数据的数组,将该数组作为待更新的数据空间,该待更新数据在该数据空间中的存储位置称为格点,采用盒型或星型的计算模板对该数据空间进行密铺,以将该数据空间划分为多个第一类区块,并将该第一类区块更新为自然块,该自然块为该第一类区块更新t次所需的最小格点集,其中t为该数据空间中所有格点的目标更新次数;

步骤2、以该自然块的边中点作为第一类中心点,通过将该数据空间中格点划分至与其距离最近的该第一类中心点,将该数据空间划分为多个第二类区块;

步骤3、更新该第二类区块,将该数据空间中数据更新次数为零的格点作为第二中心点,通过将该数据空间中格点划分至与其距离最近的该第二中心点,将该数据空间划分为多个第三区块;

步骤4、对该第三区块进行更新,以完成对该数据空间的更新。

2.如权利要求1所述的基于空间密铺的模板计算方法,其特征在于,该数组为二维或多维数组。

3.如权利要求1所述的基于空间密铺的模板计算方法,其特征在于,该步骤1还包括:当计算模板为盒型时,采用正方形的分块形状对该数据空间进行密铺,当计算模板为星型时,采用菱形的分块形状对该数据空间进行密铺。

4.如权利要求1所述的基于空间密铺的模板计算方法,其特征在于,该步骤3还包括:采用最大更新策略更新该第二类区块;该步骤4还包括:采用最大更新策略对该第三区块进行更新;

其中该最大更新策略为:

给定该数据空间中的区块,将区块中的格点沿着时间维度进行更新,直到某一个坐标点更新t次时,其邻居格点仅更新t-2次,其中t为该数据空间中所有格点的目标更新次数。

5.一种基于空间密铺的模板计算系统,其特征在于,包括:

空间密铺模块,用于获取包含待更新数据的数组,将该数组作为待更新的数据空间,该待更新数据在该数据空间中的存储位置称为格点,采用盒型或星型的计算模板对该数据空间进行密铺,以将该数据空间划分为多个第一类区块,并将该第一类区块更新为自然块,该自然块为该第一类区块更新t次所需的最小格点集,其中t为该数据空间中所有格点的目标更新次数;

第一空间划分模块,用于以该自然块的边中点作为第一类中心点,通过将该数据空间中格点划分至与其距离最近的该第一类中心点,将该数据空间划分为多个第二类区块;

第二空间划分模块,用于更新该第二类区块,将该数据空间中数据更新次数为零的格点作为第二中心点,通过将该数据空间中格点划分至与其距离最近的该第二中心点,将该数据空间划分为多个第三区块;

更新模块,用于对该第三区块进行更新,以完成对该数据空间的更新。

6.如权利要求5所述的基于空间密铺的模板计算系统,其特征在于,该数组为二维或多维数组。

7.如权利要求5所述的基于空间密铺的模板计算系统,其特征在于,该空间密铺模块还包括:当计算模板为盒型时,采用正方形的分块形状对该数据空间进行密铺,当计算模板为星型时,采用菱形的分块形状对该数据空间进行密铺。

8.如权利要求5所述的基于空间密铺的模板计算系统,其特征在于,该第二空间划分模块还包括:采用最大更新策略更新该第二类区块;该更新模块还包括:采用最大更新策略对该第三区块进行更新;

其中该最大更新策略为:

给定该数据空间中的区块,将区块中的格点沿着时间维度进行更新,直到某一个坐标点更新t次时,其邻居格点仅更新t-2次,其中t为该数据空间中所有格点的目标更新次数。

说明书 :

一种基于空间密铺的模板计算方法和系统

技术领域

[0001] 本发明涉及高性能计算领域,特别涉及一种基于空间密铺的并行模板(stencil)计算方法和系统。

背景技术

[0002] 近年来分块方法是提高多重循环嵌套的数据局部性和并行性最有效的转换技术之一。Stencil计算是高性能计算领域的一种计算类型,即空间中的每个点都依赖于相邻的一些点进行计算,而且每个点都是相同的计算模板(stencil),例如,二维盒型stencil中,每个点在时间t时的更新,都需要相邻点包括自己一共9个点在上一时刻t-1时的值。第一类区块的形状是由stencil计算模板的形状(星型或者盒型)决定的,之后区块形状是由前面区块更新后,剩余部分的规律形成的。
[0003] 超矩形分块(Hyper-rectangle tiling)通常应用于高性能计算领域的手动调优实现。在计算多个时间步时,分块之间的数据依赖问题可以通过冗余计算解决,即重叠分块(overlapped tiling)。Philips和Fatica在GPUs上实现了手动调优的3.5D分块代码,在2.5D空间分块的基础上进行时间分块。虽然超矩形分块形状规则,能支持高并发和更精细的优化,但是冗余计算开销可能会超过性能提升效果。因此,本发明着重于无冗余计算方案。
[0004] 时间倾斜分块(Time skewed tiling)所产生的块在2D时为平行四边形,3D时为平行六面体,高维时为超平形体。这种分块方式能消除冗余计算,但是大部分情况下只使用一种分块形状,导致流水线启动和受限的并发度。而本发明提出的密铺方案能够完全并行,两次同步之间的所有数据块都可以并发执行。
[0005] Bondhugula等人首先提出了针对1D Stencil的菱形分块(diamond tiling)方法。之后Bandishti等人将其扩展到了高维Stencil。Grosser等人粗化了菱形的尖端,将菱形在
2D变成六边形,在3D变成八面体。从本质上来说,菱形分块方法使用平行六面体切割和旋转空间得到最大并行,并行执行的分块波阵面共同组成了垂直于时间维度的超平面。这种方法的主要优势在于它可以实现同时启动。
[0006] 缓存无关(cache oblivious)算法可以在未知内存结构参数的情况下充分利用数据局部性。Frigo和Strumpen提出了第一个串行和并行缓存无关Stencil算法。缓存无关平行四边形分块方法同时切分空间和时间维度,可以看作是时间倾斜算法中包含波阵面并行的缓存无关版本。Pochoir是一种同时切割所有空间维度的超平面切割(hyperspace cut)方法,与串行算法相比,它在提高并行性的同时保证了相同缓存复杂度。
[0007] 分裂分块(split tiling)方法确定每个分块中的独立子块来并发执行,然后将结果发送给后继者使其他区域也可以并发执行,避免了波阵面并行中的流水线启动开销。Grosser等人提出了另外一种类似于超空间切割的缓存无关范式,这种循环切割方法可以递归地在所有的空间维度上进行切割。
[0008] Strzodka等人和Malas等人结合菱形分块,平行四边形分块和流水线执行方法,提出了CATS算法和MWD算法。Grosser等人介绍了混合六边形和平行四边形分块算法。这些算法将迭代空间分解为两部分,在时间维度和一个空间维度上使用六边形分块(Hexagonal tiling)或者菱形分块,在其他空间维度上使用时间倾斜分块。六边形分块相当于在空间维度上拉伸的菱形分块,使得高阶Stencil中每个分块最多依赖于三个前置块,是混合分块(Hybrid tiling)的扩展。混合分裂分块(Hybrid split-tiling)方法则是嵌套分裂分块(nested split-tiling)方法和时间倾斜分块的结合。
[0009] 上述提到的菱形分块、超平面切割(缓存无关)和嵌套分裂分块都是最近发展出的能够实现最大并发的方法,但这些方法都存在一些缺点,而本发明的密铺算法由一个能够清晰展现分块方案的数学框架得出,能够克服下面这些问题。
[0010] 菱形分块是一种基于多面体模型的编译器转换技术。传统代码生成方法需要在编译时固定块大小,这限制了高效自动调优以及代码的可移植性。Bertolacci等人提出2D Stencil菱形分块的参数化版本,但并没有解决自动代码生成的问题。菱形分块的另一个缺点是它需要处理位于菱形尖端的小规模数据块。Grosser等人认为在2D中菱形分块可以扩展为六边形分块,并选取截断的八面体作为3D菱形扩展。但是他们并没有说明3D或更高维度上的分块粗化方案。另外,菱形分块用倾斜的超矩形填充整个迭代空间,很难找出合适的分块大小以保证并发启动。同时,也很难直接扩展为多级菱形分块。
[0011] 常见的缓存无关算法总是受限于递归的开销并且只能达到有限的速度提升。超平面切割交错进行时间和空间切割,算法的分治递归实现使子块之间产生伪依赖。Tang等人提出的缓存无关波阵面算法能消除这些伪依赖、提高并行度、缩短算法的关键路径,但是这种方法需要检查波阵面的数据结构,导致执行时间上的开销。
[0012] 嵌套分裂分块最大的问题就是其过高的同步开销,以d维的Stencil为例,需要同步2d次。需要指出是,虽然Tang等人正确地证明了与本算法相同的同步开销。但是,在仔细研究了他们的代码后,本发明发现这个基于普通缓存无关递归框架的实现方案采用了和嵌套分裂分块一样的策略,在d维的Stencil中同样需要同步2d次。虽然采用动态队列能够减少同步开销,但是这种增益会被运行时的调度成本抵消。
[0013] 发明人在进行Stencil并行计算优化方法研究时,发现现有技术中该项缺陷是由仅考虑分块形状简单、递归框架高效而没有考虑并发受限、块之间的伪依赖以及高同步开销的问题而导致的,发明人经过对盒型和星型Stencil不同依赖关系以及更新特点研究发现,解决该项缺陷可以通过分别针对盒型Stencil和星型Stencil设计不同的分块方案密铺迭代空间方法来实现,首先根据不同的Stencil形状得到相应的自然块,然后在该自然块基础上通过特定方法确定下一阶段密铺块的中心点,从而得到新的密铺块,利用这种新的两层密铺分块方法,实现最大化并发执行、无冗余计算的Stencil计算并行算法。

发明内容

[0014] 本发明目的在于解决上述现有技术中有冗余计算、并发受限、假依赖等问题,提出了一种新的两层密铺分块的并行算法,能够最大化并发执行,无冗余计算,具有简洁的循环条件,并且适应Stencil不同的尺寸、形状、阶数和边界条件,其中并行指的是分块之后,每个块内的数据和其他块不产生依赖,每个块都能独立的同时计算。
[0015] 具体地说,本发明公开了一种基于空间密铺的模板计算方法,其中,包括:
[0016] 步骤1、获取包含待更新数据的数组,将该数组作为待更新的数据空间,该待更新数据在该数据空间中的存储位置称为格点,采用盒型或星型的计算模板对该数据空间进行密铺,以将该数据空间划分为多个第一类区块,并将该第一类区块更新为自然块,其中第一类区块的更新为并行更新;
[0017] 步骤2、以该自然块的边中点作为第一类中心点,通过将该数据空间中格点划分至与其距离最近的该第一类中心点,将该数据空间划分为多个第二类区块;
[0018] 步骤3、更新该第二类区块,将该数据空间中数据更新次数为零的格点作为第二中心点,通过将该数据空间中格点划分至与其距离最近的该第二中心点,将该数据空间划分为多个第三区块,其中第二类区块的更新为并行更新;
[0019] 步骤4、对该第三区块进行更新,以完成对该数据空间的更新,其中第三类区块的更新为并行更新。
[0020] 该基于空间密铺的模板计算方法,其中,该数组为二维或多维数组。
[0021] 该基于空间密铺的模板计算方法,其中,该步骤1还包括:当计算模板为盒型时,采用正方形的分块形状对该数据空间进行密铺,当计算模板为星型时,采用菱形的分块形状对该数据空间进行密铺。
[0022] 该基于空间密铺的并行模板计算方法,其中,该自然块为该第一类区块更新t次所需的最小格点集,其中t为该数据空间中所有格点的目标更新次数。
[0023] 该基于空间密铺的模板计算方法,其中,该步骤3还包括:采用最大更新策略更新该第二类区块;该步骤4还包括:采用最大更新策略对该第三区块进行更新;
[0024] 其中该最大更新策略为:
[0025] 给定该数据空间中的区块,将区块中的格点沿着时间维度进行更新,直到某一个坐标点更新t次时,其邻居格点仅更新t-2次,其中t为该数据空间中所有格点的目标更新次数。
[0026] 本发明还提出了一种基于空间密铺的模板计算系统,其中,包括:
[0027] 空间密铺模块,用于获取包含待更新数据的数组,将该数组作为待更新的数据空间,该待更新数据在该数据空间中的存储位置称为格点,采用盒型或星型的计算模板对该数据空间进行密铺,以将该数据空间划分为多个第一类区块,并将该第一类区块更新为自然块;
[0028] 第一空间划分模块,用于以该自然块的边中点作为第一类中心点,通过将该数据空间中格点划分至与其距离最近的该第一类中心点,将该数据空间划分为多个第二类区块;
[0029] 第二空间划分模块,用于更新该第二类区块,将该数据空间中数据更新次数为零的格点作为第二中心点,通过将该数据空间中格点划分至与其距离最近的该第二中心点,将该数据空间划分为多个第三区块;
[0030] 更新模块,用于对该第三区块进行更新,以完成对该数据空间的更新。
[0031] 该基于空间密铺的模板计算系统,其中,该数组为二维或多维数组。
[0032] 该基于空间密铺的模板计算系统,其中,该空间密铺模块还包括:当计算模板为盒型时,采用正方形的分块形状对该数据空间进行密铺,当计算模板为星型时,采用菱形的分块形状对该数据空间进行密铺。
[0033] 该基于空间密铺的并行模板计算系统,其中,该自然块为该第一类区块更新t次所需的最小格点集,其中t为该数据空间中所有格点的目标更新次数。
[0034] 该基于空间密铺的模板计算系统,其中,该第二空间划分模块还包括:采用最大更新策略更新该第二类区块;该更新模块还包括:采用最大更新策略对该第三区块进行更新;
[0035] 其中该最大更新策略为:
[0036] 给定该数据空间中的区块,将区块中的格点沿着时间维度进行更新,直到某一个坐标点更新t次时,其邻居格点仅更新t-2次,其中t为该数据空间中所有格点的目标更新次数。
[0037] 实验环境为配置有两个2.70GHz的Intel Xeon E5-2670处理器的机器,并在单核到24核上进行了测试。单核L1和L2大小分别为32K和256K,一个socket上的12个核共享30M的L3cache。ICC版本为16.0.1,优化选项为‘-O3-openmp’。
[0038] 将盒型密铺算法和另外两种高度并行方案进行了比较,即Pluto和Pochoir。其中Pluto采用diamond分块方法,Pochoir采用hyperspace cut分块方法。测试包括4种星型Stencil(Heat-1D 3-point,Heat-1D 5-point,Heat-2D 5-point和Heat-3D 7-point)以及2种盒型Stencil(Heat-2D 9-point和Heat-3D 27-point)。测试参考中提到的参数的大小设置了参数大小,保证数据规模大小能够真实反映算法性能同时不会导致过长的测试时间。由于密铺方案的代码包含更多的可调参数,将其他参数设置为分块大小的一半或两倍,使其与Pluto和Pochoir中的分块近似。对于2D 9-point Stencil,Pluto和Pochoir表现出了和5-point Stencil中相同的趋势。但是本发明的方案平均性能比他们提升了14%和
20%。在3D 27-point Stencil中,本发明的代码性能显著优于Pluto和Pochoir,最高提高
74%和100%,平均提升达30%和99%。
[0039] 将星型密铺算法与Girih和Pluto方案进行了比较,在数据量大小为2563的3D7P星型Stencil中本发明的方案相比Girih最高提升了1.24倍,平均提升了1.19倍,在更高阶Stencil上性能也高于其他两种方案。

附图说明

[0040] 图1为2D9P盒型Stencil示意图;
[0041] 图2为2D5P星型Stencil示意图;
[0042] 图3为密铺2D盒型Stencil数据空间示意图;
[0043] 图4为密铺2D盒型Stencil迭代空间示意图;
[0044] 图5为密铺2D星型Stencil数据空间示意图;
[0045] 图6为密铺2D星型Stencil迭代空间示意图;
[0046] 图7、图8为两次更新技术示意图。

具体实施方式

[0047] 本发明公开了一种基于空间密铺的模板计算方法,其中,包括:
[0048] 步骤1、获取包含待更新数据的数组,将该数组作为待更新的数据空间,该待更新数据在该数据空间中的存储位置称为格点,采用盒型或星型的计算模板对该数据空间进行密铺,以将该数据空间划分为多个第一类区块(对应下文实施例中的B1),并将该第一类区块更新为自然块;
[0049] 步骤2、以该自然块的边中点作为第一类中心点,通过将该数据空间中格点划分至与其距离最近的该第一类中心点,将该数据空间划分为多个第二类区块(对应下文实施例中的B2);
[0050] 步骤3、更新该第二类区块,将该数据空间中数据更新次数为零的格点作为第二中心点,通过将该数据空间中格点划分至与其距离最近的该第二中心点,将该数据空间划分为多个第三区块;
[0051] 步骤4、对该第三区块进行更新,以完成对该数据空间的更新。
[0052] 该基于空间密铺的模板计算方法,其中,该数组为二维或多维数组。
[0053] 该基于空间密铺的模板计算方法,其中,该步骤1还包括:当计算模板为盒型时,采用正方形的分块形状对该数据空间进行密铺,当计算模板为星型时,采用菱形的分块形状对该数据空间进行密铺。
[0054] 该基于空间密铺的并行模板计算方法,其中,该自然块为该第一类区块更新t次所需的最小格点集,其中t为该数据空间中所有格点的目标更新次数。
[0055] 该基于空间密铺的模板计算方法,其中,该步骤3还包括:采用最大更新策略更新该第二类区块;该步骤4还包括:采用最大更新策略对该第三区块进行更新;
[0056] 其中该最大更新策略为:
[0057] 给定该数据空间中的区块,将区块中的格点沿着时间维度进行更新,直到某一个坐标点更新t次时,其邻居格点仅更新t-2次,其中t为该数据空间中所有格点的目标更新次数。
[0058] 为让本发明的上述特征和效果能阐述的更明确易懂,下文特举实施例,并配合说明书附图作详细说明如下。
[0059] 本发明的目的是将数据空间(二维)中所有格点,更新t次,即沿着时间维度更新,数据空间维度+时间维度=迭代空间维度,数据空间是二维或者三维是根据stencil计算模板中格点坐标维度决定的。迭代空间总比数据空间多一维(即时间维度)。时间片大小为b时,每个时间片内,所有格点都更新b个时间步。
[0060] 首先,为了区分不同的Stencil形状,需要介绍下自然块(natural block)的概念。将数据空间中,每个坐标点,叫做格点。所有点在同一时间维度时,更新一个格点t时间步所需的最小格点集被称为更新t步的自然块,最小格点集也就是生成的自然块边界最多只有一圈0,而不能是多圈0,其中所有点指的是数据空间内的所有格点,初始就已知数据空间内的所有格点在时间步t=0的值。每个待更新数据更新一次,需要调用周围的数据以及自身数据,即盒型的需要9个数据,星型的需要5个数据才能完成一次更新,因此自然块的最外围数据的更新次数为0,因周围凑不够数据个数而无法更新。图1、图2分别为2D9P盒型Stencil和2D5P星型Stencil更新4步的自然块。本发明用B0来标识数据空间的自然块B0,B0中每个格点更新相应时间步后在迭代空间内的密铺块记为
[0061] 与自然块类似有另一个概念是最大更新(maximalupdating):给定数据空间中的块B,每个点沿着时间维度更新直到不满足Stencil定义的依赖关系,更新的最大时间步数即为最大更新,其中该依赖关系指的是计算某一格点在时间步t的值,需要其邻居格点在时间步t-1的值,即依赖,不满足依赖关系即为计算该格点在时间步t的值时,其邻居格点还没有更新到时间步t-1。自然块和最大更新从某种程度来说是一对对偶的概念,给定同样的格点集合B0,两种机制可以产生同样的B0。但是这两种概念也相互补充,最大更新不提供划分数据空间的具体形状,而只有自然块B0也无法密铺整个迭代空间,还需要最大更新产生迭代空间中的后继块B1和B2。
[0062] 将三维(3D)迭代空间在时间维度划分为多个时间片,每个时间片(t=4)中盒型Stencil和星型Stencil迭代空间的3个密铺阶段实施过程如下,其中t为时间片的大小,可以为其他正整数,步骤下同。
[0063] 第一阶段,用正方形(盒型Stencil)或菱形(星型Stencil)B0对数据空间进行密铺,并将B0作为第一类区块,如图3中(a),图5中(a)所示,其中数据空间的大小尺寸是初始就确定的,根据要解决的问题规模而定。经过自然块B0更新后,盒型和星型Stencil中更新次数为0的点分别为正方形和菱形的边界(边),如图4中(a),图6中(a)所示。然后根据自然块的思想,将经过B0更新后更新步数仍为0的格点凸集的中心点确定为B1的中心点(中心点一定在先行块的边界上),集合S中任两点的连线上的点都在S内,则称集合S为格点凸集。根据凸面要求,四个边界就是四个点集,方框框出来的四个点即为后继块的中心点,并将B0中的点分配给距离最近中心点所在的B1块。图3的(b)和图5的(b)中虚线展示了B0到第二类区块B1的转换过程。由此迭代空间被划分成多个时间片,每个菱形被平行于x轴的横线划分为两个大小相等的子三角形,迭代空间被正三角形和倒三角形密铺。其中需要注意的是B0是第一步对数据空间进行密铺的块,所以在前面写的第一类区块;要根据stencil计算模板的特点(盒型还是星型)来决定B0是正方形还是菱形,B0必定满足自然块的定义。因此,B0既是自然块又是第一类区块。
[0064] 第二阶段,用菱形或正方形B1密铺数据空间,如图3中(c)和图5中(c)所示,然后采用最大更新策略进行更新。B1在迭代空间中对应块B1中各点更新次数如图4中(b)和图6中(b)所示,经过B0和B1更新后各点更新次数如图4中(c)和图6中(c)所示,可以确定画框的数所在格点为后继块即第三区块B2的中心点。然后将B1中的点分配给距离最近中心点所在的B2块。B1到B2的转换过程如图3的(d)和图5的(d)中虚线所示。
[0065] 第三阶段,用正方形或菱形B2密铺数据空间,如图3中(e)和图5中(e)所示,然后采用最大更新策略进行更新。B2在迭代空间中对应块B2中各点更新次数如图4中(d)和图6中(d)所示,经过B0,B1和B2更新后各点更新次数如图4中(e)和图6中(e)所示,所有点都被更新了4(t=4)次,完成了一个时间片的更新。
[0066] 需要注意的是上述区块的分界处,由于是密铺因此会共用一列或一行数据。块内数据空间格点用其在分块中时间维度上的更新次数表示。盒型密铺算法可以扩展到d维数据空间,从Bi到Bi+1的变换方法可以简单表述为:连接Bi中心点和Bi所有边界(d-1维)的边界(d-2维),如图5和图3虚线所示,然后去掉原来Bi的边界(图5和图3中的实线)。
[0067] d维Stencil的d+1个密铺阶段;利用d+1种分块密铺数据空间后,分块沿时间维度扩展的d+1维块能组成一个所有格点都更新b步的时间片,从而密铺迭代空间,d维的模板指的d维超立方体等一系列分块,此处d维是指stencil的计算的格点可以是d维空间中的点,即在二维中用A[t][x][y]表示坐标为(x,y)处的格点在时间步t的值,d维stencil中,格点即为d维数据空间中的点。
[0068] 如图7第二行所示,B1块的一般更新方式是从起始维度(主对角线)到结束维度(副对角线),将B1按时间步分解为4个矩阵,即4个矩阵分别表示在每个时间步数据空间内要更新的格点位置。每一步叠加到B0上后,为第一行箭头“→”指向的结果。星型密铺算法可以对同一格点连续更新两次,即两次更新(double updating)技术,本发明在B1的更新中引入了该技术。在一个时间步的格点沿着相同的时间维度更新,因此同一时间步中格点的更新顺序可以是任意的,可以将图7第二行 更新步骤的中间两个矩阵分解成如图8形式并按分解后的次序执行。这样分解后的矩阵能分别和图7第二行 更新步骤的最左、最右矩阵结合,形成图7第3行( 指向)的矩阵,矩阵中每个点更新2次。
[0069] 以下为与上述方法实施例对应的系统实施例,本实施系统可与上述实施方式互相配合实施。上述施方式中提到的相关技术细节在本实施系统中依然有效,为了减少重复,这里不再赘述。相应地,本实施系统中提到的相关技术细节也可应用在上述实施方式中。
[0070] 本发明还提出了一种基于空间密铺的模板计算系统,其中,包括:
[0071] 空间密铺模块,用于获取包含待更新数据的数组,将该数组作为待更新的数据空间,该待更新数据在该数据空间中的存储位置称为格点,采用盒型或星型的计算模板对该数据空间进行密铺,以将该数据空间划分为多个第一类区块,并将该第一类区块更新为自然块;
[0072] 第一空间划分模块,用于以该自然块的边中点作为第一类中心点,通过将该数据空间中格点划分至与其距离最近的该第一类中心点,将该数据空间划分为多个第二类区块;
[0073] 第二空间划分模块,用于更新该第二类区块,将该数据空间中数据更新次数为零的格点作为第二中心点,通过将该数据空间中格点划分至与其距离最近的该第二中心点,将该数据空间划分为多个第三区块;
[0074] 更新模块,用于对该第三区块进行更新,以完成对该数据空间的更新。
[0075] 该基于空间密铺的模板计算系统,其中,该数组为二维或多维数组。
[0076] 该基于空间密铺的模板计算系统,其中,该空间密铺模块还包括:当计算模板为盒型时,采用正方形的分块形状对该数据空间进行密铺,当计算模板为星型时,采用菱形的分块形状对该数据空间进行密铺。
[0077] 该基于空间密铺的并行模板计算系统,其中,该自然块为该第一类区块更新t次所需的最小格点集,其中t为该数据空间中所有格点的目标更新次数。
[0078] 该基于空间密铺的模板计算系统,其中,该第二空间划分模块还包括:采用最大更新策略更新该第二类区块;该更新模块还包括:采用最大更新策略对该第三区块进行更新。
[0079] 虽然本发明以上述实施例公开,但具体实施例仅用以解释本发明,并不用于限定本发明,任何本技术领域技术人员,在不脱离本发明的构思和范围内,可作一些的变更和完善,故本发明的权利保护范围以权利要求书为准。