CN113505825B - 一种图计算装置 - Google Patents
一种图计算装置 Download PDFInfo
- Publication number
- CN113505825B CN113505825B CN202110759760.0A CN202110759760A CN113505825B CN 113505825 B CN113505825 B CN 113505825B CN 202110759760 A CN202110759760 A CN 202110759760A CN 113505825 B CN113505825 B CN 113505825B
- Authority
- CN
- China
- Prior art keywords
- tree
- graph
- data
- points
- dimension
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
- G06F18/2413—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
- G06F18/24147—Distances to closest patterns, e.g. nearest neighbour classification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/243—Classification techniques relating to the number of classes
- G06F18/24323—Tree-organised classifiers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明提供一种图计算装置,包括存储层、逻辑层、列控制器,所述存储层用于原始数据以及中间数据的存储;所述逻辑层包括树创建模块、动态构图模块以及图创建模块;以及所述列控制器用于控制数据在存储层和逻辑层之间迁移。本发明是针对动态图构建进行优化的专用硬件加速器架构,针对动态图更新的性能和吞吐量进行了优化,更贴近现实应用的需求。
Description
技术领域
本发明涉及加速器和处理器体系结构领域,具体涉及一种图计算装置。
背景技术
图作为一种数据结构,被广泛地应用于机器学习以及现代处理系统中,多用来表示非线性对象之间的联系。当大量随机、关联的数据以图的形式表示之后,很多图学习或者图处理的方法可以被用来分析并找出这些数据之间存在的关联性。比如,在现代推荐系统中,用户、物品以及他们之间的联系可以被描述成一个有着上亿结点的图,这样,机器学习或者数据挖掘应用能够很方便地在图中搜索到他们的目的结点。因此,在对数据进行分析前,将大规模的数据转化成包含点、边及其高维特征的图是一个比较常见、有效的步骤。目前最流行的图的组织形式是k最近邻(K-Nearest Neighbor,简称KNN)图,KNN图中每个结点都和它最近邻的k个结点相连。在创建了这些图之后,物体之间的相似度和联系就被保存下来了,这也极大地方便了对图的访问和检索。
然而,创建一个KNN图需要计算每个点与数据集内其余点的距离并比较排序得到点的k个最近邻点,其时间复杂度为O(n2d),其中n代表数据集中点的数量,d代表点的维度。对于大规模的数据集,建立一个KNN图是一个相当费时的过程,因此实际应用中常常用近似K近邻(Approximate Nearest Neighbor,简称ANN)图来代替KNN图。目前已有大量的方法用于降低图创建的时间开销,其中基于树的算法能极大地减少计算量,成为了主流的图创建算法之一。该算法主要包括两个阶段:树创建阶段和图创建阶段。树创建阶段递归地将整个数据集划分为很多个小的数据集并组织成树的形式,这样具有空间局部性的点就能被放在同一个或者相近的叶子结点中;在图创建阶段,对于每个点,在整棵树中进行搜索,找到点所在的叶子结点或者子树,然后在这些叶子结点中进行暴力查找,从而找到每个点的k个最近邻结点。
尽管好的算法设计能够极大地减少计算的时间复杂度来降低计算所带来的功耗和提升性能,但是当数据量过大时,算法带来的改进有限,无法满足实时性能和功耗的要求。比如在线交易平台中,通常会涉及到上亿结点的图创建和更新操作,造成极大的数据随机访问,导致严重的性能和功耗问题,这时通常会采用图形处理器(GPU)来代替中央处理器(CPU)来提升其处理性能。即使GPU能提供充足的计算资源,但是在内存中大量、随机且复杂的图数据访问仍然会导致严重的资源浪费和功耗问题。专用的硬件加速器通过使数据流适应硬件架构,增加数据重用,减少计算和内存之间的数据迁移,在保证性能提升的同时也能很大程度上降低功耗。但现存的图处理和图学习的专用硬件加速器方案主要集中在图搜索和树搜索,无法直接应用到KNN图的创建中。或者针对特殊的应用场景,比如3D点云进行加速,有着其专用的硬件加速器设计,这样得到的图的规模以及应用场景仍然受到了很大的限制。
通常来说,实际应用中图创建的硬件加速器设计主要受到三个方面的限制:1)在图的相似度建立的过程中会存在大量的随机数据读取,需要很大的内存带宽;2)先前的工作未能充分探索高维数据重用,造成同一个数据多次在计算侧和存储侧之间的迁移,带来较多的带宽浪费;3)现有的图创建方案一次将所有的数据都组织成一张图,但是在实际生产中,图是动态产生的,而且新增的点与原有数据集中的大多数点没有连接关系,简单的重复建图会带来大量不必要的计算,严重影响建图效率。
发明内容
为解决上述现有技术中存在的问题,提供一种种图计算装置,包括存储层、逻辑层、列控制器,
所述存储层用于原始数据以及中间数据的存储;
所述逻辑层包括树创建模块、动态构图模块以及图创建模块;以及
所述列控制器用于控制数据在存储层和逻辑层之间迁移;
其中,所述树创建模块用于基于数据集在随机维度上的均值将数据集递归划分为树,所述树的树结点存储划分信息,所述树的叶子结点存储数据集点的索引;
所述图创建模块用于基于所述树的每个叶子结点内的点之间的距离,得到所有点的k个最近邻点,并按照图的格式进行存储;
所述动态构图模块用于根据所述树的划分信息将新点插入树中并更新所述图。
优选的,所述树创建模块包括随机数生成器、均值计算单元以及均值划分单元;其中,所述随机数生成器用于生成一个随机维度;所述均值计算单元用于计算数据集内所有点在所述随机维度上的均值;所述均值划分单元根据随机维度上的均值将输入的数据集划分为两个子集。
优选的,所述图创建模块包括距离缓存区以及最小k计算器;所述距离缓存区用于暂存叶子结点内各个点相互之间的距离;所述最小k计算器,用于比较距离并得到最近的k个点。
优选的,所述最小k计算器包括二维处理单元阵列,所述处理单元阵列的每行处理单元包括优先队列,所述优先队列用于查找距离并得到最近的k近邻点。
优选的,所述动态构图模块包括树缓存区和树搜索模块,所述树缓存区用于存放树创建阶段得到的树结构,所述树搜索模块用于在树中递归地搜索得到叶子结点。
优选的,所述树创建模块基于数据集在随机维度上的均值将数据集划分为两个子数据集,构成左子树和右子树,分别对左子树和右子树的数据集再次按照随机维度上的均值划分为新的两个子数据集,如此递归划分直到子数据集的大小达到预定值。
优选的,所述划分信息包括划分的维度及其数值、左子树结点和右子树结点的地址信息、左子树结点和右子树结点的地址信息、两个子数据集在存储层内的起始地址、两个子数据集的长度;所述叶子结点存储子集在存储层内的起始地址、子集的长度、叶子结点最大的存储量。
优选的,其中所述存储层由三维动态堆叠随机存储器的存储层构成,所述逻辑层由所述三维动态堆叠随机存储器的逻辑层构成。
一种利用上述图计算装置的方法,包括:
基于数据集在随机维度上的均值将数据集划分为两个子数据集,构成左子树和右子树,分别对左子树和右子树的数据集再次按照随机维度上的均值划分为新的左子树和右子树,如此按照预定的划分次数递归划分,其中,树结点存储划分信息,叶子结点存储数据集点的索引;
基于每个叶子结点内的点之间的距离,得到所有点的k个最近邻点,并按照图的格式进行存储。
优选的,所述方法还包括:基于所述划分信息以及新点的维度数据,将新点插入树中的叶子结点,在图中更新所述叶子结点内所有点的k个最近邻点,并将新点及其k个最近邻点插入到图中。
本发明具有如下特点和有益效果:本发明采用存内计算的方式来构建KNN图,保证建图过程中大量随机数据的读取直接发生在内存中,避免了数据在处理器和片外存储间频繁的迁移,从而提升整体性能并大幅降低了功耗。本发明充分利用了三维堆叠动态随机存储器的特性并行地存取数据并对数据在存储层的布局方式进行了优化,同时采用了以叶子结点为粒度的图构建方式来减少多余的数据传输,增加数据重用,从而增大带宽的利用率。本发明是针对动态图构建进行优化的专用硬件加速器架构,针对动态图更新的性能和吞吐量进行了优化,更贴近现实应用的需求。
附图说明
图1示出了根据本发明一个实施例的硬件加速器的整体架构图。
图2示出了根据本发明一个实施例的均值划分单元示意图。
图3示出了根据本发明一个实施例的树缓存区示意图。
图4示出了根据本发明一个实施例的最小k计算器示意图。
图5示出了根据本发明一个实施例的最小k计算器处理的过程示意图。
图6示出了根据本发明一个实施例的动态图更新的过程。
具体实施方式
下面结合附图和具体实施例对本发明加以说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本发明为了克服现有技术的缺陷,首先提出一种大规模图创建和更新方法,将整个图创建以及动态更新分为三个阶段,分别为树创建阶段,图创建阶段和动态图更新阶段。
在树创建阶段,将整个数据集按照随机维度递归划分为不同的子数据集,直到划分出来的子数据集大小小于预定值,该预定值可根据实际应用的具体场景进行设置,本发明不做限定;并将得到的子数据集按照树的结构进行组织,其中树结点存储划分信息,叶子结点存储点的索引,从而保证叶子结点内的点在空间上具有局部近邻性。
在图创建阶段,对每个叶子结点内的点都进行暴力比较,得到所有点的k个最近邻,并按照图的格式进行存储。
在动态图更新阶段,对新点在树中进行搜索找到叶子结点并插入,在图中更新这个叶子结点内所有点的k个最近邻并将新点及其k最近邻点插入到现有的图中。
发明人通过分析现行方案的问题和不足,基于上述方法提出了一种通过存内计算,加速实际应用中大规模KNN图创建和动态图更新的专用硬件加速器架构,能够极大地提升图创建的性能并降低计算带来的功耗。
存内计算是为了解决内存墙问题而提出的方案。冯诺依曼架构的计算机系统把存储器和处理器分割成了两个部分,处理器频繁访问存储器的开销就形成了内存墙。存内计算的基本思路是把计算和存储合二为一,在存储器内完成计算,从而减少处理器访问存储器的频率。
三维堆叠动态随机存储器是存内计算的一种解决方案,包括存储层和逻辑层,存储层用于原始数据以及中间数据的存储,其包含多层堆叠的动态随机存储层,被分为一系列的存储列,逻辑层包含大量计算资源用于计算。根据本发明的一个实施例,发明人充分利用三维堆叠动态随机存储器(3D stacked DRAM)的高带宽特性,直接在其逻辑层上设计专用的硬件加速器,采用近数据处理的技术来减少大量随机数据在计算侧和存储侧之间迁移带来的开销。
根据本发明的一个实施例,加速器的整体架构如图1所示。
图1中的101是三维堆叠存储器的立体图,包括存储层和逻辑层,存储层用于存储数据,逻辑层包含计算资源,计算层和逻辑层之间通过TSV(Through Silicon Via,硅穿孔)技术进行直连,用于高速的数据通信。图1中的102是三维堆叠存储器的平面展开图,存储层和逻辑层之间通过列控制器来控制数据的传输。列控制器用于计算过程中控制每列存储层内的数据在存储层和逻辑层之间的迁移。另外,为了充分挖掘存储列之间的并行度,根据本发明的一个实施例,三维堆叠动态随机存储器通过多个列控制器来保证多存储列之间数据的并行传输,从而提升整体的带宽。根据本发明的一个实施例,三维堆叠存储器被分为32列,每列能够以10GB/s的带宽传输数据,因此整个存储层的带宽能够达到320GB/s。
本发明的加速器直接在逻辑层上构建处理模块。这个逻辑层可以看做一个FPGA,通过配置其上的计算资源来实现加速器的功能。图1中的103是加速器的内部实现,主要包括三大部分:树创建模块,动态构图模块和图创建模块。
树创建模块用于树创建阶段,包括随机数生成器、均值计算单元、均值划分单元。随机数生成器,用于生成一个随机维度。均值计算单元,可以是一个加法树,用于计算数据集内所有点在某个随机维度上的均值。均值划分单元,可以是一系列的比较器组合,根据指定维度上的均值将整个数据集划分为两个子集。
动态构图模块用于动态图的构建过程,包括树缓存区、树搜索模块。树缓存区,用于存放树创建阶段得到的树结构。树搜索模块用于在树中递归地搜索得到叶子结点。
图创建模块用于图创建阶段,包括距离缓存区、最小k计算器。距离缓存区用于暂存叶子结点内各个点相互之间的距离。最小k计算器用于比较距离并得到最近的k个点。
以上概括介绍了本发明的方法和加速器的结构,其中,加速器的整个处理过程与方法对应,同样分为三个阶段:树创建阶段,图创建阶段以及图更新阶段。以下基于三个阶段的具体处理过程对加速器的微观硬件设计进行详细的说明。
首先介绍树创建模块的数据流及其内部结构。
树创建阶段主要目的是将数据集划分为空间局部相近的子集并组织成树的结构。首先通过随机生成器生成一个随机维度,再取出数据集中这个维度上的数据传入均值计算单元,均值计算单元内部通过加法树将子集数据聚合并依次计算均值。图2中示出了均值划分单元的内部结构以及具体划分过程。图2中,均值划分单元取得数据集在某个维度上的数据,即图2中的点1、点2、…、点n,根据前面得到的指定维度的均值经过比较器进行比较,将整个数据集划分为两个近似相等的子集,划分完的子集通过列控制器放回三维堆叠存储器的存储层中。当给定一个均值时,需要大量的数据与其进行比较,为了加速这个比较过程,本发明采用并行比较的方式,根据本发明的一个实施例,设置多个比较器,同时比较多个点和均值的大小关系;根据本发明的一个实施例,该单元采用32路并行,极大地提升数据的吞吐量以及带宽的利用率。为了保证数据在传输过程中带宽能够被充分利用,根据本发明的一个实施例,在比较器和列控制器之间加入了一系列暂存单元,当暂存单元被放满后,再将整个暂存单元内的数据以块传输的方式全部放回存储层,能够保证带宽利用率的最大化。根据本发明的一个实施例,每个比较器后面设置一个暂存单元,暂存单元的作用是暂存比较完成后的点的索引,比均值大的点放在左边,比均值小的点放在右边,根据比较的结果向中间逼近,当暂存单元被存满后,再将整个暂存单元一次性地放回存储层;在存储层同样也采用两边向中间逼近的策略。暂存单元的优点是:一次性的返回多个连续存储的数据的效率远大于将数据一个个地随机存储的效率,可以减少功耗和性能开销。
通过递归地划分整个数据集,数据点都能被分到不同的子集内并组织成一个树结构。由于树中叶子结点内的点具有空间局部性,因此它们更有可能成为彼此的最近邻点。这个树结构被存储在如图3所示的树缓存区内,这样能方便图更新阶段树的搜索过程。叶子结点有两个参数:长度和最大容量,其中最大容量代表这个叶子结点内最多能存储多少个点,长度参数代表叶子结点内已经存放的点的数量。
具体来说,图3中的树结构包括两种类型的结点,树结点和叶子结点,树结点存储划分信息,叶子结点存放点的索引。树结点存储的划分信息包括:
1)划分的维度;
2)划分维度的数值;
3)左子树结点和右子树结点的地址信息;
4)两个子集在存储层内的起始地址;
5)两个子集的长度。
叶子结点用来存储子集内点的存储信息,包括:
1)子集在存储层内的起始地址;
2)子集的长度;
3)叶子结点最大的存储量。
树结点存储的划分信息,占用的存储开销很小,直接放在逻辑层进行暂存,利于快速查询检索;而叶子结点存储了真实的点的索引,占用的存储开销很大,极大地超过了片上存储资源能承受的范围,因此选择将叶子结点存储到三维堆叠动态随机存储器的存储层,在需要叶子结点信息的时候去存储层取数据即可。随着树的生成,树结构的每层都会生成很多个点的子集。树的同一层产生的不同的点集相互独立,因此它们可以被并行的进行处理。
在树的同一层中,必须先通过均值计算单元得到数据集在某个维度上的均值,才能通过均值划分单元将整个数据集划分为近似相等的两部分,这种依赖关系虽然对整个数据集进行流水线处理的过程产生一定的影响,但是,通过均值划分单元得到的子集,可以在生成过程中根据随机数生成器得到维度从存储层中获取相应维度上的数据,以流水线的方式进行下一层的均值计算,同时也避免了下一层计算过程中对数据点的重复读取。
以下结合实施例介绍本发明中图创建模块的数据流及其内部的结构。
生成树结构后,整个数据集被划分为多个小的子集,此时图创建阶段开始进行。根据本发明的一个实施例,本发明假设点在子集内的k个最近邻点就是其在整个数据集内的k个最近邻点,这样虽然损失一定的精度,但是能以叶子结点为粒度来查找其k个最近邻,而不是对整个数据集进行计算。另外,在同一个叶子结点内所有点对的距离计算过程中,每对点已经计算出来的距离可以被保存并重用,因此,根据本发明的一个实施例,利用一个距离缓存区来存储已经计算出来的距离值来避免重复计算。当某个点与其叶子结点内所有的距离计算完成后,使用最小k计算器来完成最近邻k个点的选取。
图创建模块的核心组成为最小k计算器,以叶子结点为粒度来计算得到最小k最近邻点,其整体结构如图4中的(1)所示,包括一个二维的处理单元(PE)阵列用来进行距离计算,每行的PE构成一个行处理单元(PER),根据本发明的一个实施例,每行处理单元设置一个优先队列,用于查找距离并得到最近的k近邻点。与脉动阵列不同之处在于,本发明的PE之间是相互独立的,数据不会在PE之间移动,每行PE后面紧跟一个优先队列,用于比较得到点的k个最近邻。优先队列的目的是对于输入的点的距离进行排序,找到距离最小的k个点,例如,对于V1、V2、V3、V4、V5五个点,要找到V1的两个最近邻点,通过计算,V1与其余4个点的距离分别为d12=10,d13=8,d14=4,d15=15,可以看出d13和d14是这四个距离中较小的两个距离,那么通过优先队列后可以得到V1的最近邻2个点为V3和V4。
另外,根据本发明的一个实施例,每行处理单元配有一个加法树,来保证两点之间距离能够以流水线的方式进行计算,图4中的(2)示出了每行PE的内部图,在每个PE内部计算出两点在某个维度上的距离(平方和),再将行内所有的距离相加,就得到两点在1,2…n(n代表每行PE内PE的数量)维度上的距离d,例如,对于V1和V2两个点,一行PE能计算出d12=(v11-v21)2+…+(v1n-v2n)2,这个平方和的加法是图中加法树的结构完成的。
图4中的(3)是单个PE的内部结构图,PE作为最基础的运算部件,输入为两个点在某一维度上的具体值,如v11,v21,分别代表点1和点2在维度1上的具体数值,经过一个加法器和一个乘法器可以得到(v11-v21)2,另外,每个PE还配有一个距离选项,除了欧氏距离,还可以计算曼哈顿距离(v11-v21)。
由于数据点的维度通常会大于一个行处理单元内处理单元的个数,因此在计算两点间距离时,每行处理单元都能达到最大的利用率。在距离计算的过程中,本发明充分探索了数据在不同的处理单元行之间的复用,以求减少数据传输和提升性能。
下面结合图5中的一个示例来揭示本发明中图创建模块的数据流动,一个叶子结点中存在4个数据点,点的距离计算被映射到3行处理单元上。在第1个周期中,V1被载入第一行计算阵列(PER1)中并暂存到行中每个PE上;在第2个周期中,V2被广播到第1行计算阵列(PER1)和第2行计算阵列(PER2),并暂存到PER2中,同时,计算得到V1和V2之间的距离d12;在第三个周期中,V3被广播到前3行计算阵列(PER1、PER2、PER3)并暂存到PER3中,同时得到V1、V3之间的距离d12,V2、V3之间的距离d23;在第4个周期中,同样将V4广播到前3行计算阵列并计算得到相应的距离d14、d24、d34。与此同时,每个周期计算得到的距离将放到相应的优先队列用于得到相应点的k个最近邻点。根据本发明的一个实施例,计算得到的距离还放在距离缓存区中用于重复利用。距离计算越多,计算单元行越能被充分利用。计算单元的行数通常来说要小于每个叶子结点内点的数目,因此,根据本发明的一个实施例,需要根据计算阵列的行数将叶子结点内的点进一步划分以适应计算阵列。
以上介绍了数据维度小于或者等于行处理单元中PE的数量的情况,实际应用中数据维度通常会大于行处理单元中PE的数量。当数据的维度大于每行PE的数量时,例如数据的维度为8,每行PE的数量为4,第一次取数,取每个点前面4个维度上的数值,可以得到1-4维度上的距离d1=(v11-v21)2+…+(v14-v24)2,存到距离缓存区,再去计算每个点后面4个维度上的数值,可以得到5-8维度上的距离d2=(v1,5-v2,5)2+…+(v1,8-v2,8)2,从距离缓存区取出前四个维度计算得到的距离值,二者相加即可得到两点的距离。
最后一个阶段是图更新阶段,其目的在于以最小的代价将新的数据点插入已构建的图中。首先在树中进行搜索,将新的数据点插入树的叶子结点中,仅有一部分叶子结点被插入了新的数据点,这也代表新的数据点会对叶子结点内的数据点产生影响,然后复用图创建模块的计算过程对这些更改过的叶子结点进行更新。另外,由于叶子结点内原有数据点对的距离已经计算并存储过,只有新的数据点需要与其余数据点计算距离,计算量大大减少。
以下在数据流层面介绍本发明对于动态图更新所做的优化。
由于动态图更新在实际生产中的地位越来越重要,如何以最小的代价将新加的点动态添加到已经构造好的图中是本发明要解决的一个比较重要的技术问题。新加入的点首先被放入树搜索模块,在树中执行深度优先搜索(DFS)递归地比较树结点内存储的维度和划分值的信息,找到该点对应的叶子结点并插入。对于深度优先搜索来说,每层树仅被比较一次并且树的信息被放在逻辑层中,因此这个过程是比较快速的。当叶子结点被更新后,在该叶子结点内执行最小k计算来更新每个结点的k个最近邻并计算出新点在该叶子结点内的最近邻点。由于原始叶子内点之间的相互距离已经在构建静态图的阶段计算过并存储到存储层中,因此这些距离值能够被直接重用,在动态图更新的过程中只用计算与新点相关的距离即可。具体来说,动态图更新时,由于新加入的点插入到了叶子结点,因此要重新计算叶子结点内所有点的最近邻,这时由于对距离进行了缓存,能减少很大一部分计算量和数据传输的开销,例如,最初一个叶子结点中有V1,V2,V3,V4四个点,相互之间的距离已经计算并存储,当一个新的点V5插入到叶子结点中,需要比较五个点之间的距离,按照常规的计算方式,需要计算(5*4)/2=10个两点之间的距离,这10个距离值包括了V1-V4的六个距离。如果重复利用缓存的距离,就只需计算4个距离值,分别是d15,d25,d35,d45。
具体来说,在动态图更新的过程中,对于一个新加入的点,与树的根结点存储的划分信息进行比较(维度和该维度上数据集的均值),如果小于这个值,就在根结点的左子树进行查询,如果大于这个值,就在根结点的右子树进行查询,就这样一层层往下直到找叶子结点,再将这个新点插入到叶子结点中。以下结合图6说明动态图更新的递归比较过程。图6中,为了方便说明,没有画出全部结点,其中,数据集的维度为5,601、602、603、604、605为树结点,606为叶子结点。树结点601存储的划分信息是以维度3划分,均值为10;树结点602的划分维度为5,均值为15;树结点603的划分维度为1,均值为30;树结点604的划分维度为2,均值为6;树节点605的维度为4,均值为7;叶子结点中存储了点7、点20、点50等。当新加入一个点时,例如,新加入的点为(10,3,7,4,20),该点具有5个维度的数据,分别对应于维度1、2、3、4、5。从树的结点601开始比较,结点601的维度为3,均值为10,新点的维度3的值为7,由于7小于10,所以划分到结点601的左子树602;结点602的维度为5,均值为15,新点维度5的数值为20,由于20大于15,所以划分到结点602的右子树604;结点604的维度为2,均值为6,新点维度2的数值为3,由于3小于6,因此划分到结点604的左子树605,结点605的维度为4,均值为7,新点维度4的数据为4,由于4小于7,因此划分到结点605的左子树,到达叶子结点606。图6的箭头表示划分的过程路线。
根据本发明的一个实施例,本发明对数据在存储层内的布局方式进行了相对应的优化。以下介绍数据在存储层内的组织形式。
数据的布局方式会改变加速器访存的模式并对整个加速器的性能和功耗有着极大的影响。从存储层中读取数据时,一次读取是需要同时读取多个数据的,即使只想读取某个特定的数据,那么多余的数据需要被丢弃,因此尽可能地需要将同时读取到的数据放在一起。根据本发明的在微观设计中的介绍,数据访问主要集中在均值计算单元和最小k计算器相对应的计算过程中。
在均值计算单元,需要从存储层中一次得到数据集内所有点的某个维度上的数值,因此原始数据分布时更趋向于将数据集所有点的同一个维度的数据放在一起,因此将同一个点的维度分配到不同的存储行中能够保证此阶段访问数据的带宽利用率最大化,这是第一种排布方式。
然而,在最小k计算器的计算过程中,是计算两个点所有维度上距离和,需要一次取出点的所有维度数据,因此原始数据分布时更趋向于将数据的每个点的所有维度放在一起。因此将同一个点的所有维度数据放到一个存储列中并将所有的点按存储列进行分配存储能保证最小k计算器访问数据的带宽利用率最高,这是第二种排布方式。
由于这两个阶段的数据传输量都很大,采用上述两个数据存放方式中的任何一个,会使得另一个模块的数据读取效率变差。为了保证加速器整体的性能达到最大化,本发明采用一种混合的数据布局策略来平衡均值计算单元和最小k计算器这两个IO密集模块的数据访存效率。将数据点和维度都按照三维堆叠动态随机存储器的存储列划分进行存储,具体的划分策略可以通过测试不同的划分方法对内存访问带来的影响得出。根据本发明的一个实施例,本发明采用混合的数据存放方式,将数据集分布到不同的存储列中,每个存储列把点的部分维度数据组织在一起,保证一次读取能从多个存储列中得到点的所有维度数据。最小k计算器的数据读取效率与第二种排布方式相同。与此同时,对于均值计算单元,所有点在某个维度上数据的局部性也优于第二种排布方式,稍逊于第一种数据排布方式。
应该注意到并理解,在不脱离后附的权利要求所要求的本发明的精神和范围的情况下,能够对上述详细描述的本发明做出各种修改和改进。因此,要求保护的技术方案的范围不受所给出的任何特定示范教导的限制。
Claims (9)
1.一种图计算装置,包括存储层、逻辑层、列控制器,
所述存储层用于原始数据以及中间数据的存储;
所述逻辑层包括树创建模块、动态构图模块以及图创建模块;以及
所述列控制器用于控制数据在存储层和逻辑层之间迁移;
其中,所述树创建模块用于基于数据集在随机维度上的均值将数据集递归划分为树,所述树的树结点存储划分信息,所述树的叶子结点存储数据集点的索引;
所述图创建模块用于基于所述树的每个叶子结点内的点之间的距离,得到所有点的k个最近邻点,并按照图的格式进行存储;
所述动态构图模块用于根据所述树的划分信息将新点插入树中并更新所述图;
其中所述存储层由三维动态堆叠随机存储器的存储层构成,所述逻辑层由所述三维动态堆叠随机存储器的逻辑层构成。
2.根据权利要求1所述的图计算装置,所述树创建模块包括随机数生成器、均值计算单元以及均值划分单元;其中,所述随机数生成器用于生成一个随机维度;所述均值计算单元用于计算数据集内所有点在所述随机维度上的均值;所述均值划分单元根据随机维度上的均值将输入的数据集划分为两个子集。
3.根据权利要求1-2之一所述的图计算装置,所述图创建模块包括距离缓存区以及最小k计算器;所述距离缓存区用于暂存叶子结点内各个点相互之间的距离;所述最小k计算器,用于比较距离并得到最近的k个点。
4.根据权利要求3所述的图计算装置,所述最小k计算器包括二维处理单元阵列,所述处理单元阵列的每行处理单元包括优先队列,所述优先队列用于查找距离并得到最近的k近邻点。
5.根据权利要求1-2之一所述的图计算装置,所述动态构图模块包括树缓存区和树搜索模块,所述树缓存区用于存放树创建阶段得到的树结构,所述树搜索模块用于在树中递归地搜索得到叶子结点。
6.根据权利要求1-2之一所述的图计算装置,所述树创建模块基于数据集在随机维度上的均值将数据集划分为两个子数据集,构成左子树和右子树,分别对左子树和右子树的数据集再次按照随机维度上的均值划分为新的两个子数据集,如此递归划分直到子数据集的大小达到预定值。
7.根据权利要求6所述的图计算装置,所述划分信息包括划分的维度及其数值、左子树结点和右子树结点的地址信息、左子树结点和右子树结点的地址信息、两个子数据集在存储层内的起始地址、两个子数据集的长度;所述叶子结点存储子集在存储层内的起始地址、子集的长度、叶子结点最大的存储量。
8.一种利用权利要求1-7之一所述图计算装置的方法,包括:
基于数据集在随机维度上的均值将数据集划分为两个子数据集,构成左子树和右子树,分别对左子树和右子树的数据集再次按照随机维度上的均值划分为新的左子树和右子树,如此按照预定的划分次数递归划分,其中,树结点存储划分信息,叶子结点存储数据集点的索引;
基于每个叶子结点内的点之间的距离,得到所有点的k个最近邻点,并按照图的格式进行存储。
9.根据权利要求8所述的方法,还包括:基于所述划分信息以及新点的维度数据,将新点插入树中的叶子结点,在图中更新所述叶子结点内所有点的k个最近邻点,并将新点及其k个最近邻点插入到图中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110759760.0A CN113505825B (zh) | 2021-07-06 | 2021-07-06 | 一种图计算装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110759760.0A CN113505825B (zh) | 2021-07-06 | 2021-07-06 | 一种图计算装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113505825A CN113505825A (zh) | 2021-10-15 |
CN113505825B true CN113505825B (zh) | 2023-07-21 |
Family
ID=78011638
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110759760.0A Active CN113505825B (zh) | 2021-07-06 | 2021-07-06 | 一种图计算装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113505825B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104063507A (zh) * | 2014-07-09 | 2014-09-24 | 时趣互动(北京)科技有限公司 | 一种图计算方法及引擎 |
CN111124675A (zh) * | 2019-12-11 | 2020-05-08 | 华中科技大学 | 一种面向图计算的异构存内计算设备及其运行方法 |
CN111415003A (zh) * | 2020-02-20 | 2020-07-14 | 清华大学 | 面向神经网络加速芯片的三维堆叠存储优化方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10049134B2 (en) * | 2014-06-12 | 2018-08-14 | International Business Machines Corporation | Method and system for processing queries over datasets stored using hierarchical data structures |
-
2021
- 2021-07-06 CN CN202110759760.0A patent/CN113505825B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104063507A (zh) * | 2014-07-09 | 2014-09-24 | 时趣互动(北京)科技有限公司 | 一种图计算方法及引擎 |
CN111124675A (zh) * | 2019-12-11 | 2020-05-08 | 华中科技大学 | 一种面向图计算的异构存内计算设备及其运行方法 |
CN111415003A (zh) * | 2020-02-20 | 2020-07-14 | 清华大学 | 面向神经网络加速芯片的三维堆叠存储优化方法及装置 |
Non-Patent Citations (2)
Title |
---|
Cong Fu."EFANNA:An Extremely Fast Approximate Nearest Neighbor Search Algorithm Based on kNN Graph".《Computer Vision and pattern Recognition》.2016,全文. * |
jeff johnson."Billion-Scale Similarity Search with GPUs".《IEEE Transactions on Big Data》.2019,全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN113505825A (zh) | 2021-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110413611B (zh) | 数据存储、查询方法及装置 | |
US20140229473A1 (en) | Determining documents that match a query | |
CN103455531B (zh) | 一种支持高维数据实时有偏查询的并行索引方法 | |
US10191998B1 (en) | Methods of data reduction for parallel breadth-first search over graphs of connected data elements | |
CN112668708B (zh) | 一种提高数据利用率的卷积运算装置 | |
KR20220034236A (ko) | 가속화된 임베딩 계층 컴퓨테이션들 | |
Su et al. | Indexing and parallel query processing support for visualizing climate datasets | |
CN115168281B (zh) | 一种基于禁忌搜索算法的神经网络片上映射方法和装置 | |
US11567661B2 (en) | Virtual memory management method and processor | |
EP3743821A1 (en) | Wide key hash table for a graphics processing unit | |
Ma et al. | In-memory distributed indexing for large-scale media data retrieval | |
CN113505825B (zh) | 一种图计算装置 | |
KR102006283B1 (ko) | 패스트맵을 이용한 데이터셋의 m-트리 적재방법 | |
Zhan et al. | Field programmable gate array‐based all‐layer accelerator with quantization neural networks for sustainable cyber‐physical systems | |
Slimani et al. | K-MLIO: enabling k-means for large data-sets and memory constrained embedded systems | |
CN113986816B (zh) | 可重构计算芯片 | |
US20220138281A1 (en) | Assigning processing threads for matrix-matrix multiplication | |
US20040107312A1 (en) | System and method for determining a cache optimized ordering of cells in an unstructured graph | |
CN111737347A (zh) | 在Spark平台顺序切分数据的方法及装置 | |
Otoo et al. | Using chunked extendible array for physical storage of scientific datasets | |
CN117112145B (zh) | 训练模型分配方法、装置、计算机设备和存储介质 | |
CN109388638B (zh) | 用于分布式大规模并行处理数据库的方法及系统 | |
CN113312312B (zh) | 一种基于lsm高效查询流数据的分布式索引方法及系统 | |
US20230401034A1 (en) | Methods, Systems, and Circuits for Coordinated Optimization in In-Memory Sorting | |
US20240160906A1 (en) | Collective communication phases at mixture-of-experts layer |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |