CN113449152A - 图数据预取器及预取方法 - Google Patents
图数据预取器及预取方法 Download PDFInfo
- Publication number
- CN113449152A CN113449152A CN202110707805.XA CN202110707805A CN113449152A CN 113449152 A CN113449152 A CN 113449152A CN 202110707805 A CN202110707805 A CN 202110707805A CN 113449152 A CN113449152 A CN 113449152A
- Authority
- CN
- China
- Prior art keywords
- vertex
- neighbor
- run
- buffer
- information
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明提供一种图数据预取器及预取方法,将顶点信息存储结构进行优化存储,将图的顶点编号重新排序,将相连接的顶点尽量编号为相邻的值,从而提高数据访问的局部性,大大降低了顶点信息访问的随机性;同时利用图神经网络算法访问数据的时间局部性,记录顶点信息访问的次数进行预取设计,极大的提高了预取的命中率。在更新同一条边上的两个顶点特征值时,边特征值按照顺序依次存储,基于边上两个顶点更新的先后顺序以及访问时间上的局部性设计预取器,有效的提高了预取器的命中率。利用拓扑关系的存储结构和访问顺序是一致连续的特点,通过记录拓扑关系的历史地址来设计预取器,达到了极高的命中率。
Description
技术领域
本发明涉及图数据处理技术,具体涉及图数据预取器及预取方法。
背景技术
图作为最经典、最常用的数据结构之一,随着机器学习和数据挖掘应用的日益广泛,图的规模也变的越来越大。另一方面,由于大规模的图数据表现出极度的不规则性,导致在传统的系统上进行计算的过程中产生大量数据通信,进而造成计算效率低下的问题。如何有效的进行大规模图数据的处理与分析是目前学术界与工业界的一大研究热点,为了有效的应对上述挑战,很多图计算系统被提出来进行高效的图数据处理。
在不同的图加速器中,计算阵列需要的带宽往往是存储器带宽的几倍甚至十几倍,带宽不匹配的瓶颈严重制约加速器的计算效率。为了有效地解决这个问题,许多不同机制的预取器被提出。
其中,基于LSTM的神经网络方法通过记录历史地址信息来预测下一次将要访问的地址。LSTM神经网络预取器基于观察到的历史,在无监督的上下文地址对样本上进行训练。在训练中不知道这些联想是否会在语义上相关。因此,该方法依靠递归和神经网络的收敛性来加强真正的关系。如果采用在线训练的方法,神经网络的参数将会随着观察到的历史信息而动态调整,但是这样将会造成预取的严重滞后;如果采用离线参数的方法,由于图数据结构的极度不规则性,将会严重降低预取的命中率。
SandBox预取器是利用访问地址的历史信息和数据局部性原理来预测下一次访问的地址,该预取器只有在满足上述两种特定的条件下才能达到较好的效果。SandboxPrefetching背后的关键思想是跟踪由候选预取模式生成的预取请求,而不实际向内存系统发出这些预取请求。该方法采用Bloom过滤器实现沙盒,基于模拟的预取命中数,候选预取器可以全局激活,以便在每次访问缓存后立即执行预取操作,而无需进一步确认。Sandbox预取器通过多个候选预取器来记录多个不同的访问模式,而图的结构是非常不规则的,一般情况下地址访问顺序没有规则的模式,这就导致这种预取图数据结构的方法不会有太高的命中率。
上述不同的预取器在大多数情况下适用于某些特定的场景,由于图的不规则结构,上述的预取器并不能很好的适用于图数据的预取,最重要的原因就是没有结合图数据独特的结构以及算法特点。
发明内容
针对现有技术中存在的问题,本发明提供一种图数据预取器及预取方法,提高了预取命中率。
本发明是通过以下技术方案来实现:
图数据预取器,包括:存储器、游程编码缓存器、游程编码预取器、解码模块、顶点信息缓存器、顶点信息预取器、边特征值缓存器和边特征值预取器;
存储器,对图中所有顶点排序,找到邻居顶点最多的顶点,对其邻居顶点依次进行排序编号;接下来再找下一个邻居顶点次多的顶点,对其邻居顶点依次排序编号,重复迭代直到所有顶点都被编号,将顶点信息按照顶点编号从小到大依次存储;将顶点的游程编码按照顶点编号从小到大依次存储;将每个顶点和邻居顶点连接边的边特征值按照邻居顶点升序排列方式依次存储;
游程编码缓存器缓存中心顶点的游程编码,游程编码送到解码模块中解码出顶点信息预取器需要预取的邻居顶点;游程编码预取器累加中心顶点的游程编码个数,根据累加结果从存储器中预取当前中心顶点所对应的游程编码并存储在游程编码缓存器中;
顶点信息缓存器缓存顶点信息,顶点信息预取器检测到顶点信息缓存器中某顶点被访问完成后,删除该被访问完成的顶点,根据解码模块解码出的邻居顶点,从存储器中预取邻居顶点信息并存储在顶点信息缓存器;
边特征值缓存器缓存顶点对之间的边特征值,边特征值预取器比较当前中心顶点和解码模块解码出的邻居顶点的编号大小,如果邻居顶点编号大于中心顶点编号,则将该两顶点所连接的边的特征值存到边特征值缓存器中;如果邻居顶点编号小于中心顶点编号,则在更新完当前中心顶点后,将两顶点所连接的边的特征值从边特征值缓存器中剔除,从存储器中预取下一个中心顶点所连接边的特征值。
优选的,游程编码预取器包括累加器,顶点信息缓存器中顶点的游程编码个数传送给累加器,图更新的过程中,每更新一个中心顶点,累加器累加该中心顶点的游程编码个数,以得到待更新中心顶点的游程编码的预取地址。
进一步的,游程编码缓存器的容量为图中所有顶点邻接向量所对应的游程编码个数中的最大值。
优选的,顶点信息预取器包括计数器、寄存器、判断模块和地址生成模块;边特征值缓存器中的每个顶点对应设置一计数器,当顶点初次被访问时,计数器初始化为该顶点的度,每当该顶点被访问一次,相应的计数器值减1,当计数器的值减至为零时,将该计数器对应的顶点从顶点信息缓存器中剔除;地址生成模块根据解码模块解码出的中心顶点的邻居顶点生成预取地址;每更新一个中心顶点,寄存器累加该中心顶点的度,当更新当前中心顶点时,根据寄存器的值及当前中心顶点的度得到当前中心顶点的地址,判断模块将当前中心顶点的地址和解码模块解码出的邻居顶点的地址进行比较,如果当前中心顶点地址小于邻居顶点地址,且顶点信息缓存器中更新过的顶点地址大于邻居顶点地址时,则根据预取地址执行预取操作;否则,不执行预取操作。
进一步的,如果在图更新的过程中,如果需要的顶点信息不在顶点信息缓存器中,且顶点信息缓存器中没有空闲的缓存行,则将顶点信息缓存器中计数器值最小的顶点信息替换为未命中的需要的顶点信息,对应计数器的值初始化为未命中顶点的度。
进一步的,顶点信息缓存器的容量为图中所有顶点度中的最大值加一。
优选的,边特征值预取器包括比较模块、寄存器和边特征值预取模块,比较模块比较中心顶点和解码模块解码出的邻居顶点的编号大小,寄存器将中心顶点信息中的度进行累加;边特征值预取模块根据比较模块比较结果进行预取,比较模块结果为邻居顶点编号大于中心顶点编号时,则将两顶点所连接的边的特征值存到边特征值缓存器中;比较模块结果为邻居顶点编号小于中心顶点编号时,则在更新完中心顶点后,将两顶点所连接的边的特征值从边特征值缓存器中剔除,边特征值预取模块以寄存器上一次累加的结果作为基址,逐次加一直到下一个中心顶点的度,从存储器中顺序预取下一个中心顶点所连接边的特征值存储在边特征值缓存器。
进一步的,边特征值缓存器容量为图中所有顶点度中的最大值。
图数据预取方法,基于所述的图数据预取器,按照顶点编码顺序,对顶点进行更新,当前待更新的顶点作为中心顶点,中心顶点及其邻居顶点的信息暂存到顶点信息缓存器中,中心顶点的游程编码送到解码模块中解码出邻居顶点,当某一顶点信息被访问完成后,顶点信息缓存器中删除该顶点,根据解码模块解码出的当前中心顶点的邻居顶点,从存储器中预取邻居顶点信息并存储在顶点信息缓存器;
同时,比较当前中心顶点和解码模块解码出的邻居顶点的编号大小,如果邻居顶点编号大于中心顶点编号,则将该两顶点所连接的边的特征值存到边特征值缓存器中;如果邻居顶点编号小于中心顶点编号,则在更新完当前中心顶点后,将两顶点所连接的边的特征值从边特征值缓存器中剔除,从存储器中顺序预取下一个中心顶点所连接边的特征值并存储在边特征值缓存器;
当前中心顶点访问结束后,游程编码缓存器清空,从存储器中顺序预取下一个中心顶点所对应的游程编码并存储在游程编码缓存器中。
与现有技术相比,本发明具有以下有益的技术效果:
本发明结合图数据独特的存储结构以及访问特点,分别设计了针对图中三种不同数据的预取器,从而实现了较高的命中率。本发明将顶点信息存储结构进行优化存储,将图的顶点编号重新排序,将相连接的顶点尽量编号为相邻的值,从而提高数据访问的局部性,大大降低了顶点信息访问的随机性;同时利用图神经网络算法访问数据的时间局部性,记录顶点信息访问的次数进行预取设计,极大的提高了预取的命中率。在更新同一条边上的两个顶点特征值时,边特征值按照顺序依次存储,基于边上两个顶点更新的先后顺序以及访问时间上的局部性设计预取器,有效的提高了预取器的命中率。利用拓扑关系的存储结构和访问顺序是一致连续的特点,通过记录拓扑关系的历史地址来设计预取器,达到了极高的命中率。
进一步的,累加器上一次累加的结果作为基址,该当前中心顶点游程编码个数作为偏移地址,顺序访问游程编码存储器就可以读取当前中心顶点的游程编码,将当前中心顶点的游程编码解码就可以得到中心顶点所连接的邻居顶点,所以基于累加器累加的结果作为基址顺序预取可以实现很高的命中率。
进一步的,本发明将游程编码缓存器的大小设计为顶点邻接向量所对应的游程编码个数的最大值,这样既可以保证所有的游程编码值都可以存储到游程编码缓存器中,又节省了硬件资源。
进一步的,本发明将顶点信息缓存器的缓存行数设计为图中顶点度的最大值加一,这将保证邻居顶点最多的顶点在更新过程中,其邻居顶点都在顶点信息缓存器中,减少了因顶点信息缓存器较小而导致的频繁替换,提高了命中率;同时保证硬件资源的开销不会太大。
进一步的,边特征值预取器中的寄存器,图更新的过程中,每更新一个中心顶点,寄存器累加该中心顶点的度,当比较模块比较完成后判定需要预取边特征值时,寄存器上一次累加的结果作为基址,当前中心顶点度作为偏移地址,顺序访问边特征值存储器,所以寄存器上一次累加的结果作为初始地址顺序预取就可以实现很高的命中率。
进一步的,本发明将边特征值缓存器大小设计为图中所有顶点度的最大值,保证更新某个顶点特征值时,其所连接边的特征值都在边特征值缓存器中,又节省了硬件资源。
附图说明
图1为有权重的图G;
图2为整体架构;
图3为图神经网络算法;
图4为顶点信息预取器;
图5为图的示例;
图6为游程编码预取结构;
图7为边特征值预取结构;
图8为图G其边特征值的存储格式;
图9为本发明与其他预取机制对顶点信息数据的预取命中率对比;
图10为本发明与其他预取机制对边特征值数据的预取命中率对比;
图11为本发明与其他不同预取机制对游程编码预取命中率对比;
图12为本发明与其他不同预取机制整体命中率对比。
具体实施方式
下面结合具体的实施例对本发明做进一步的详细说明,所述是对本发明的解释而不是限定。
本发明整个存储结构和预取器结构的设计:
图神经网络计算的本质是在相连接的顶点之间传递与收集信息,在这一过程中唯一需要保证的是图的拓扑结构不变,而与顶点的编号是无关的。即图中的所有顶点的地位都是平等的,不会因为改变某一顶点的编号而改变图的性质或顶点的性质。因此,本发明采用顶点编号重新排序的算法将相连接的顶点编码为相邻的值,算法描述如下:首先,将图中的所有顶点重新排序,找到邻居顶点最多的顶点,对其邻居顶点依次进行排序编号;接下来再找下一个邻居顶点次多的顶点,对其邻居顶点依次排序编号,重复迭代直到所有的顶点都被编号。由于图中顶点分布极不规则,在对图进行更新时,这将导致很严重的随机访问开销。为了减少访问的随机性,本发明通过将图的顶点编号重新排序,将相连接的顶点尽量编号为相邻的值,从而提高数据访问的局部性。对于无向图的顶点信息的逻辑存储格式如表1所示,将顶点的特征值、度及其邻接矩阵的游程编码个数作为一个单元进行存储,按照顶点编号从小到大依次存储。以图1所示的图为例,按照表1所示的形式将顶点特征值、度及其邻接矩阵游程编码个数作为一个单元,按照顶点编号从小到大依次存储。第一列表示顶点的编号,第二列中每一行从左到右依次表示顶点的特征值、度、邻接矩阵游程编码个数,它们作为一个单元进行存储。
表1顶点信息的逻辑存储格式
图1中边特征值逻辑存储格式,将所有顶点升序排列,将每个中心顶点和其邻居顶点连接边的特征值按照邻居顶点升序排列方式依次存储。图1中拓扑关系是通过邻接矩阵来表示的,“0”表示该行的顶点与该列的顶点之间无边;“1”表示该行的顶点与该列的顶点之间有边。将图的顶点编号重新排序之后,得到的邻接矩阵中0和1的分布比较规律有序。对于大型的图,邻接矩阵是一个稀疏矩阵,对于这种稀疏矩阵,本发明采用游程编码来存储。以行为单位先统计“1”连续出现的次数,再统计“0”连续出现的次数,这样依次交替进行直到该行编码完成,如果该行最后的值都是0,则不进行编码。游程编码逻辑存储格式,按照顶点编号升序的方式将每个顶点所对应的游程编码依次顺序存储的。
图数据结构存储和预取的整个架构如图2所示,包括:游程编码缓存器、游程编码预取器、解码模块、顶点信息缓存器、顶点信息预取器、边特征值缓存器和边特征值预取器。
游程编码缓存器缓存中心顶点的游程编码,游程编码送到解码模块由解码模块解码出顶点信息预取器需要预取的中心顶点的邻居顶点地址;上一个中心顶点访问结束后,游程编码缓存器清空,游程编码预取器从游程编码存储器中顺序预取下一个中心顶点所对应的游程编码并存储在游程编码缓存器中。
顶点信息缓存器缓存顶点的信息,顶点信息预取器检测到顶点信息缓存器中某顶点被访问完成后,删除该被访问完成的顶点,根据解码模块解码出的中心顶点的邻居顶点地址,从顶点信息存储器中预取邻居顶点信息并存储在顶点信息缓存器。
边特征值缓存器缓存边特征值,边特征值预取器比较中心顶点和解码模块解码出的邻居顶点的编号大小,如果邻居顶点编号大于中心顶点编号,则将两顶点所连接的边的特征值存到边特征值缓存器中;如果邻居顶点编号小于中心顶点编号,则在更新完中心顶点特征值后,将两顶点所连接的边的特征值从边特征值缓存器中剔除,边特征值预取器从边特征值存储器中顺序预取下一个中心顶点所连接边的特征值。
游程编码预取器包括累加器,顶点信息缓存器中顶点的游程编码个数传送给累加器,图更新的过程中,每更新一个中心顶点,累加器累加该中心顶点的游程编码个数,以得到待更新中心顶点的游程编码的预取地址。
顶点信息预取器包括寄存器、判断模块和地址生成模块;边特征值缓存器中的每个顶点对应设置一计数器,当顶点初次被访问时,计数器初始化为该顶点的度,每当该顶点被访问一次,相应的计数器值减1,当计数器的值减至为零时,将该计数器对应的顶点从顶点信息缓存器中剔除;地址生成模块根据解码模块解码出的中心顶点的邻居顶点生成预取地址;每更新一个中心顶点,寄存器累加该中心顶点的度,当更新当前中心顶点时,根据寄存器的值及当前中心顶点的度得到当前中心顶点的地址,判断模块将当前中心顶点的地址和解码模块解码出的邻居顶点的地址进行比较,如果当前中心顶点地址小于邻居顶点地址,且顶点信息缓存器中更新过的顶点地址大于邻居顶点地址时,则根据预取地址执行预取操作;否则,不执行预取操作。
边特征值预取器包括比较模块、寄存器和边特征值预取模块,比较模块比较中心顶点和解码模块解码出的邻居顶点的编号大小,寄存器将中心顶点信息中的度进行累加;边特征值预取模块根据比较模块比较结果进行预取,比较模块结果为邻居顶点编号大于中心顶点编号时,则将两顶点所连接的边的特征值存到边特征值缓存器中;比较模块结果为邻居顶点编号小于中心顶点编号时,则在更新完中心顶点后,将两顶点所连接的边的特征值从边特征值缓存器中剔除,边特征值预取模块以累加模块上一次累加的结果作为基址,下一个中心顶点度作为偏移地址,从边特征值存储器中顺序预取下一个中心顶点所连接边的特征值存储在边特征值缓存器。
图更新方法;在从第一个顶点开始更新时,根据顶点编号与该顶点信息地址一一对应的关系,从顶点信息存储器中读出某一个顶点的信息,该顶点作为待更新的中心顶点,由于该顶点信息在不久的将来更新其他顶点时也将会被访问,故该顶点信息将暂存到顶点信息缓存器中,用一个计数器记录将会被访问的次数,初始值为该顶点的度,每当该顶点被访问一次,相应的计数器值减1,当计数器的值减至为零时,将该计数器对应的顶点从顶点信息缓存器中剔除,根据解码模块解码出的中心顶点的邻居顶点地址(预取地址)执行预取操作,根据预取地址从顶点信息存储器中预取邻居顶点信息并存储在顶点信息缓存器中相应的缓存行。同时将中心顶点信息中的度送到寄存器中,图更新的过程中,每更新一个中心顶点,寄存器累加该中心顶点的度。当更新到第i+1个顶点时,以第i个顶点更新完成时寄存器的值作为基址,逐次加一生成地址,直到加上第i+1个顶点的度,得到第i+1个中心顶点的地址。第i+1个中心顶点的地址和解码模块解码出的邻居顶点的地址进行比较,如果中心顶点地址小于邻居顶点地址,且缓存中更新过的顶点地址大于邻居顶点地址时,执行预取操作;否则不执行预取操作。同时将中心顶点信息中的游程编码个数送到游程编码预取器中,图更新的过程中,每更新一个中心顶点,累加器累加该中心顶点的游程编码个数,在更新当前中心顶点时,累加器上一次累加的结果作为基址,逐次加一,直到加上当前中心顶点游程编码个数,这些地址作为预取地址,顺序访问游程编码存储器就可以读取当前中心顶点的游程编码,将当前中心顶点的游程编码解码就可以得到中心顶点所连接的邻居顶点的地址,所以基于累加器累加的结果作为基址顺序预取可以实现很高的命中率。
顶点信息预取器的设计:
图神经网络算法如图3所示,本质过程是将邻居顶点的特征值分别和中心顶点所相连的边的特征值进行点乘运算更新中心顶点的特征值,在这一算法的过程中,每个顶点特征值被访问的次数就是该顶点的度,同时基于上述的图顶点编号重新排序算法,相连的顶点特征值的访问具有时间上和空间上的局部性,根据顶点特征值访问的这一特性,本发明针对顶点信息的缓存大小设计和预取机制如图4所示。
一方面,如果顶点信息缓存器空间较小,在对顶点度较大的中心顶点更新过程中,由于邻居顶点较多,不能满足所有的邻居顶点都能存储到顶点信息缓存器中,这将导致缓存频繁且无效的替换,降低了预取器的命中率;另一方面,如果顶点信息缓存器空间过大,预取器命中率会有较小的提升,但是计数器所消耗的资源将会增加。综合以上考虑,本发明将顶点信息缓存器的缓存行数设计为图中顶点度的最大值加一,这将保证邻居顶点最多的顶点在更新过程中,其邻居顶点都在顶点信息缓存器中,减少了因顶点信息缓存器较小而导致的频繁替换,提高了命中率;同时保证硬件资源的开销不会太大。
每个缓存行的长度是固定的,存储每一个顶点所对应的顶点特征值、度和游程编码个数,每个缓存行都对应一个计数器,当该顶点初次被访问时,初始化为该顶点的度。在图神经网络算法开始进行的过程中,每当该顶点特征值被访问一次,相应的计数器值会减1。如果某缓存行所对应的计数器的值减至为零,表示该缓存行中的顶点信息将不会再被访问,该缓存行变为空闲可用的空间。判断模块通过比较中心顶点地址和由解码模块根据中心顶点游程编码解码得到的邻居顶点地址大小,如果中心顶点地址大于邻居顶点地址,顶点信息预取器不执行预取操作;如果中心顶点地址小于邻居顶点地址,顶点信息预取器执行预取操作。如果在图更新的过程中,需要的顶点信息不在缓存行中,且没有空闲可用的缓存行,顶点信息预取器将缓存行中计数器值最小的顶点信息替换为未命中的需要的顶点信息,对应计数器的值初始化为未命中顶点的度。
如图5所示的图,图中顶点1的度最大为5,故顶点信息缓存器的缓存大小设为6,缓存初始化时,顺序预取前面的6个顶点信息,并初始化它们的计数器为相应顶点的度,在图更新的过程中,每当一个顶点的特征值被访问过后,其缓存行所对应的计数器值会减1,如果某计数器的值变为零,顶点信息预取器则预取下一个顶点的信息,预取是通过比较中心顶点的地址和邻居顶点地址大小来执行的,如果中心顶点地址大于邻居顶点地址,则不执行预取;如果中心顶点地址小于邻居顶点地址,则执行预取。顶点信息预取器的执行过程如表2所示,该过程描述如下:
(1)当从第一个顶点开始更新时,每个缓存行的计数器初始化为该顶点的度;
(2)当顶点1被更新过后,顶点1所有邻居顶点的计数器减一;顶点5的计数器变为0;
(3)根据顶点2的游程编码解码出邻居顶点的地址为1、3,而顶点1、3的信息已在缓存中,故不预取;
(4)当顶点2被更新过后,与顶点2相连的所有顶点的计数器减一,顶点3的计数器减为零,根据顶点3的游程编码解码邻居顶点的地址为1、2,都在缓存中,故不预取;
(5)顶点3的计数器变为0,将顶点3的信息从缓存中剔除;顶点5的计数器变为0,将顶点5的信息从缓存中剔除;根据顶点4的游程编码解码出邻居顶点的地址为10和11,则预取顶点10、11的信息。
表2顶点信息预取过程
游程编码预取器设计:
游程编码值预取结构如图6所示,图的拓扑关系是通过将邻接矩阵进行游程编码,然后按照顶点编号升序的方式将每个顶点所对应的游程编码值依次顺序存储的,图更新的过程中,每更新一个中心顶点,累加器code_cnt都要加上该中心顶点的游程编码个数,当累加上第i-1个顶点的游程编码个数后,此时累加器的值是第i个顶点所对应的第一个游程编码值的起始地址,累加器逐次加一直到第i个顶点的游程编码个数,这些地址都将作为预取地址顺序访问外部存储中顶点i所对应的游程编码值。这些游程编码值送到解码模块,解码模块解码出需要预取的邻居顶点的地址。根据上述访问特点,本发明采用顺序预取的步长为每个中心顶点的游程编码个数,顺序预取的度也为每个中心顶点游程编码的个数。
由于每个顶点邻接向量游程编码个数不同,所以游程编码缓存器的大小也是影响预取器命中率的关键因素。如果游程编码缓存器容量较小,不能保证每个顶点的邻接向量所对应的游程编码值都能存储到游程编码缓存器中,这将造成一些无效的预取,浪费了带宽且降低了预取的命中率;如果游程编码缓存器容量较大,对于预取的命中率会有小幅度的提升,但是硬件资源的开销会增加。为了两方面的折中考虑,本发明将游程编码缓存器的大小设计为顶点邻接向量所对应的游程编码个数的最大值,这样既可以保证所有的游程编码值都可以存储到游程编码缓存器中,又节省了硬件资源。
以图1所示的图为例,其游程编码预取过程如表3所示,累加器code_cnt初始化为0,当图更新算法开始进行时,通过顶点1的信息得知其邻接向量所对应的游程编码个数为3,则游程编码预取器从外部游程编码存储器中顺序预取3个值,然后累加器code_cnt加上3;此时累加器code_cnt的值为3,为顶点2邻接向量所对应的游程编码起始地址,通过顶点2的信息得知其游程编码个数是3,游程编码预取器将缓存中的数据清除,顺序预取接下来的3个游程编码值,累加器code_cnt加上3;依次规律进行。该过程描述如表3所示。
(1)游程编码缓存器缓存大小为5,初始化为0,累加器code_cnt为0;
(2)当访问顶点1时,根据累加器code_cnt的值和顶点1的信息从外部游程编码存储器中顺序预取3个游程编码值缓存在游程编码缓存器,累加器code_cnt的值加上3变为3;
(3)当访问顶点2时,根据累加器code_cnt的值和顶点2的游程编码个数;从外部游程编码存储器中顺序预取3个游程编码值缓存在游程编码缓存器,累加器code_cnt的值加上3变为6;
(4)依次顺序进行。
表3拓扑关系预取流程
边特征值预取器设计:
在图更新过程中,当更新同一条边两端的顶点时,该边的特征值将会先后被访问两次。图神经网络的算法按照顶点编号从小到大依次更新,当更新同一条边上编号较小的顶点特征值时,需要访问该边的特征值,此时应将其放在边特征值缓存器中,因为之后在更新同一条边上编号较大的顶点特征值时,也要访问该边的特征值。当同一条边的两个顶点都被更新过后,表示这两个顶点所连接的边的特征值将不会再被访问。根据上述图神经网络算法的特点,本发明设计的边特征值预取器机制如图7所示。
因为每个顶点所连接的边数目不同,为了保证更新某个顶点特征值时,其所连接边的特征值都在边特征值缓存器中,本发明将边特征值缓存器大小设计为图中所有顶点度的最大值。
当更新中心顶点特征值时,比较中心顶点编号和邻居顶点编号的大小,如果邻居顶点编号大于中心顶点编号,则将两顶点所连接的边的特征值存到边特征值缓存器中,因为之后还会再次访问该值;如果邻居顶点编号小于中心顶点编号,则在更新完中心顶点特征值后,两顶点所连接的边的特征值将从缓存中剔除,因为在之后的图更新过程中,将不再访问该边的特征值。此时边特征值预取器检测边特征值缓存器中有空缺的缓存行,边特征值预取器将顺序预取下一个中心顶点所连接边的特征值。以图1所示的图为例,其边特征值的存储格式如图8所示,其边特征值预取流程如表4所示:
(1)当更新顶点0后,中心顶点编号是0,邻居顶点编号是1,2,3,4都比1大,故将其边特征值放到边特征值缓存器中;
(2)当更新顶点1后,中心顶点是1,邻居顶点是0和5,0小于1,故将边(0,1)的特征值剔除,5大于1,预取边(1,5)的特征值放到边特征值缓存器中;
(3)当更新顶点2后,中心顶点是2,邻居顶点是0和3,0小于2,将边(0,2)的特征值剔除,3大于2,预取边(2,3)的特征值放到边特征值缓存器中;
(4)当更新顶点3后,中心顶点是3,邻居顶点是0和2,0和2都小于3,故将边(0,3)、边(2,3)的特征值都剔除,顺序预取边(4,5)、(4,6)的特征值。
表4边特征值预取流程图
实施例
选取图Zachary’s karate club(https://editor.csdn.net/md/?articleId=110086896)作为测试基准,Zachary’s karate club有30个顶点,125条边,对本发明的预取方法进行测试和分析,并与现有的其他预取方法进行对比,顺序预取的整体命中率选择不同数据预取命中率最高的进行计算。本发明所提出的关于图不同数据结构的预取器命中率相比于其他方法,具体性能对比结果如表5-8和图9-12所示,可以看出,无论顶点特征值命中率、边特征值命中率、游程编码命中率还是整体命中率,本发明都远远高于现有技术。
表5不同预取机制对顶点特征值预取命中率对比
表6不同预取机制对边特征值预取命中率对比
表7本发明与其他不同预取机制对游程编码预取命中率对比
表8本发明与其他不同预取机制整体命中率对比
本发明主要特点总结如下:
1、顶点特征值、边特征值和连接拓扑关系按照自身数据结构特点、算法特点以及存储空间的要求分为三个存储单元分别进行优化存储。
2、根据访问顶点特征值的时间局部性特点,通过计数器来访问顶点特征值被访问的次数。
3、根据图的结构特征以及边特征值的访问特点,设计了基于两个顶点之间距离的预取器。
4、根据拓扑关系顺序存储结构以及顺序访问特点,设计拓扑关系的顺序预取器。
本发明主要优点:
1、顶点特征值、度及其游程编码个数组织为一个固定长度的单元按线性地址依次存储,地址与顶点编号一一线性映射,直接通过地址就可以访问到相应顶点特征值等信息。简化了图更新过程中访问源顶点和目标顶点的复杂地址转换过程。边特征值按照源顶点升序的顺序,将每个源顶点所对应的<源顶点,目标顶点>构成的边的特征值按照目标顶点升序的顺序依次存储。连接拓扑关系的存储方式,首先将节点编号按照特定的算法重新排序,将重排序后的图的邻接矩阵通过游程编码的方式压缩存储,大大节省了存储空间。
2、将顶点信息存储结构进行优化存储,大大降低了顶点信息访问的随机性;同时利用图神经网络算法访问数据的时间局部性,记录顶点信息访问的次数进行预取设计,极大的提高了预取的命中率。
3、在更新同一条边上的两个顶点特征值时,基于该边上两个顶点更新的先后顺序以及访问时间上的局部性设计的预取器,有效的提高了预取器的命中率。
4、利用拓扑关系的存储结构和访问顺序是一致连续的特点,通过计数器记录拓扑关系的历史地址来设计预取器,达到了极高的命中率。
Claims (9)
1.图数据预取器,其特征在于,包括:存储器、游程编码缓存器、游程编码预取器、解码模块、顶点信息缓存器、顶点信息预取器、边特征值缓存器和边特征值预取器;
存储器,对图中所有顶点排序,找到邻居顶点最多的顶点,对其邻居顶点依次进行排序编号;接下来再找下一个邻居顶点次多的顶点,对其邻居顶点依次排序编号,重复迭代直到所有顶点都被编号,将顶点信息按照顶点编号从小到大依次存储;将顶点的游程编码按照顶点编号从小到大依次存储;将每个顶点和邻居顶点连接边的边特征值按照邻居顶点升序排列方式依次存储;
游程编码缓存器缓存中心顶点的游程编码,游程编码送到解码模块中解码出顶点信息预取器需要预取的邻居顶点;游程编码预取器累加中心顶点的游程编码个数,根据累加结果从存储器中预取当前中心顶点所对应的游程编码并存储在游程编码缓存器中;
顶点信息缓存器缓存顶点信息,顶点信息预取器检测到顶点信息缓存器中某顶点被访问完成后,删除该被访问完成的顶点,根据解码模块解码出的邻居顶点,从存储器中预取邻居顶点信息并存储在顶点信息缓存器;
边特征值缓存器缓存顶点对之间的边特征值,边特征值预取器比较当前中心顶点和解码模块解码出的邻居顶点的编号大小,如果邻居顶点编号大于中心顶点编号,则将该两顶点所连接的边的特征值存到边特征值缓存器中;如果邻居顶点编号小于中心顶点编号,则在更新完当前中心顶点后,将两顶点所连接的边的特征值从边特征值缓存器中剔除,从存储器中预取下一个中心顶点所连接边的特征值。
2.根据权利要求1所述的图数据预取器,其特征在于,游程编码预取器包括累加器,顶点信息缓存器中顶点的游程编码个数传送给累加器,图更新的过程中,每更新一个中心顶点,累加器累加该中心顶点的游程编码个数,以得到待更新中心顶点的游程编码的预取地址。
3.根据权利要求2所述的图数据预取器,其特征在于,游程编码缓存器的容量为图中所有顶点邻接向量所对应的游程编码个数中的最大值。
4.根据权利要求1所述的图数据预取器,其特征在于,顶点信息预取器包括计数器、寄存器、判断模块和地址生成模块;边特征值缓存器中的每个顶点对应设置一计数器,当顶点初次被访问时,计数器初始化为该顶点的度,每当该顶点被访问一次,相应的计数器值减1,当计数器的值减至为零时,将该计数器对应的顶点从顶点信息缓存器中剔除;地址生成模块根据解码模块解码出的中心顶点的邻居顶点生成预取地址;每更新一个中心顶点,寄存器累加该中心顶点的度,当更新当前中心顶点时,根据寄存器的值及当前中心顶点的度得到当前中心顶点的地址,判断模块将当前中心顶点的地址和解码模块解码出的邻居顶点的地址进行比较,如果当前中心顶点地址小于邻居顶点地址,且顶点信息缓存器中更新过的顶点地址大于邻居顶点地址时,则根据预取地址执行预取操作;否则,不执行预取操作。
5.根据权利要求4所述的图数据预取器,其特征在于,如果在图更新的过程中,如果需要的顶点信息不在顶点信息缓存器中,且顶点信息缓存器中没有空闲的缓存行,则将顶点信息缓存器中计数器值最小的顶点信息替换为未命中的需要的顶点信息,对应计数器的值初始化为未命中顶点的度。
6.根据权利要求4所述的图数据预取器,其特征在于,顶点信息缓存器的容量为图中所有顶点度中的最大值加一。
7.根据权利要求1所述的图数据预取器,其特征在于,边特征值预取器包括比较模块、寄存器和边特征值预取模块,比较模块比较中心顶点和解码模块解码出的邻居顶点的编号大小,寄存器将中心顶点信息中的度进行累加;边特征值预取模块根据比较模块比较结果进行预取,比较模块结果为邻居顶点编号大于中心顶点编号时,则将两顶点所连接的边的特征值存到边特征值缓存器中;比较模块结果为邻居顶点编号小于中心顶点编号时,则在更新完中心顶点后,将两顶点所连接的边的特征值从边特征值缓存器中剔除,边特征值预取模块以寄存器上一次累加的结果作为基址,逐次加一直到下一个中心顶点的度,从存储器中顺序预取下一个中心顶点所连接边的特征值存储在边特征值缓存器。
8.根据权利要求7所述的图数据预取器,其特征在于,边特征值缓存器容量为图中所有顶点度中的最大值。
9.图数据预取方法,其特征在于,基于权利要求1-8任一项所述的图数据预取器,按照顶点编码顺序,对顶点进行更新,当前待更新的顶点作为中心顶点,中心顶点及其邻居顶点的信息暂存到顶点信息缓存器中,中心顶点的游程编码送到解码模块中解码出邻居顶点,当某一顶点信息被访问完成后,顶点信息缓存器中删除该顶点,根据解码模块解码出的当前中心顶点的邻居顶点,从存储器中预取邻居顶点信息并存储在顶点信息缓存器;
同时,比较当前中心顶点和解码模块解码出的邻居顶点的编号大小,如果邻居顶点编号大于中心顶点编号,则将该两顶点所连接的边的特征值存到边特征值缓存器中;如果邻居顶点编号小于中心顶点编号,则在更新完当前中心顶点后,将两顶点所连接的边的特征值从边特征值缓存器中剔除,从存储器中顺序预取下一个中心顶点所连接边的特征值并存储在边特征值缓存器;
当前中心顶点访问结束后,游程编码缓存器清空,从存储器中顺序预取下一个中心顶点所对应的游程编码并存储在游程编码缓存器中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110707805.XA CN113449152B (zh) | 2021-06-24 | 2021-06-24 | 图数据预取器及预取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110707805.XA CN113449152B (zh) | 2021-06-24 | 2021-06-24 | 图数据预取器及预取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113449152A true CN113449152A (zh) | 2021-09-28 |
CN113449152B CN113449152B (zh) | 2023-01-10 |
Family
ID=77812669
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110707805.XA Active CN113449152B (zh) | 2021-06-24 | 2021-06-24 | 图数据预取器及预取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113449152B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114048847A (zh) * | 2021-11-16 | 2022-02-15 | 中国人民解放军国防科技大学 | 一种图神经网络数据缓存方法、装置、设备及存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103179389A (zh) * | 2011-12-21 | 2013-06-26 | 索尼公司 | 图像处理设备和图像处理方法 |
CN104063330A (zh) * | 2014-06-25 | 2014-09-24 | 华为技术有限公司 | 数据预取方法及装置 |
US20140330840A1 (en) * | 2010-12-30 | 2014-11-06 | Facebook, Inc. | Distributed Cache for Graph Data |
CN104899156A (zh) * | 2015-05-07 | 2015-09-09 | 中国科学院信息工程研究所 | 一种面向大规模社交网络的图数据存储及查询方法 |
CN110737804A (zh) * | 2019-09-20 | 2020-01-31 | 华中科技大学 | 一种基于活跃度布局的图处理访存优化方法及系统 |
CN110879797A (zh) * | 2019-10-31 | 2020-03-13 | 西安交通大学 | 高速可重构处理器配置信息缓存替换方法及存储体系结构 |
CN111367913A (zh) * | 2020-03-03 | 2020-07-03 | 青岛大学 | 一种面向全空间的数据模型的建模方法 |
CN112115307A (zh) * | 2020-07-31 | 2020-12-22 | 西安交通大学 | 面向图的顶点数据规则存储结构和连接拓扑压缩方法 |
CN112270704A (zh) * | 2020-10-26 | 2021-01-26 | 吉林大学 | 一种基于数据链表结构的星点质心提取方法 |
CN112352234A (zh) * | 2018-06-15 | 2021-02-09 | 华为技术有限公司 | 用于处理并发属性图查询的系统 |
-
2021
- 2021-06-24 CN CN202110707805.XA patent/CN113449152B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140330840A1 (en) * | 2010-12-30 | 2014-11-06 | Facebook, Inc. | Distributed Cache for Graph Data |
CN103179389A (zh) * | 2011-12-21 | 2013-06-26 | 索尼公司 | 图像处理设备和图像处理方法 |
CN104063330A (zh) * | 2014-06-25 | 2014-09-24 | 华为技术有限公司 | 数据预取方法及装置 |
CN104899156A (zh) * | 2015-05-07 | 2015-09-09 | 中国科学院信息工程研究所 | 一种面向大规模社交网络的图数据存储及查询方法 |
CN112352234A (zh) * | 2018-06-15 | 2021-02-09 | 华为技术有限公司 | 用于处理并发属性图查询的系统 |
CN110737804A (zh) * | 2019-09-20 | 2020-01-31 | 华中科技大学 | 一种基于活跃度布局的图处理访存优化方法及系统 |
CN110879797A (zh) * | 2019-10-31 | 2020-03-13 | 西安交通大学 | 高速可重构处理器配置信息缓存替换方法及存储体系结构 |
CN111367913A (zh) * | 2020-03-03 | 2020-07-03 | 青岛大学 | 一种面向全空间的数据模型的建模方法 |
CN112115307A (zh) * | 2020-07-31 | 2020-12-22 | 西安交通大学 | 面向图的顶点数据规则存储结构和连接拓扑压缩方法 |
CN112270704A (zh) * | 2020-10-26 | 2021-01-26 | 吉林大学 | 一种基于数据链表结构的星点质心提取方法 |
Non-Patent Citations (2)
Title |
---|
HIDAYET AKSU ET AL.: ""Graph Aware Caching Policy for Distributed Graph Stores"", 《INTERNATIONAL CONFERENCE ON CLOUD ENGINEERING》 * |
许贵泉: ""面向隐私保护的内容中心网络缓存技术研究"", 《万方数据知识服务平台》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114048847A (zh) * | 2021-11-16 | 2022-02-15 | 中国人民解放军国防科技大学 | 一种图神经网络数据缓存方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113449152B (zh) | 2023-01-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110390383B (zh) | 一种基于幂指数量化的深度神经网络硬件加速器 | |
Eisenman et al. | Bandana: Using non-volatile memory for storing deep learning models | |
TWI238935B (en) | Reconfigurable cache controller for nonuniform memory access computer systems | |
CN109840585B (zh) | 一种面向稀疏二维卷积的运算方法和系统 | |
US20060248489A1 (en) | Memory efficient array transposition via multi pass tiling | |
CN104081378B (zh) | 充分利用并行处理器用于数据处理的方法和系统 | |
CN110795363B (zh) | 一种存储介质的热页预测方法和页面调度方法 | |
CN111985456B (zh) | 视频实时识别分割及检测架构 | |
CN112667528A (zh) | 一种数据预取的方法及相关设备 | |
CN102176750B (zh) | 高性能自适应二进制算术编码器 | |
CN110032538A (zh) | 一种数据读取系统和方法 | |
CN113449152B (zh) | 图数据预取器及预取方法 | |
CN109461113A (zh) | 一种面向数据结构的图形处理器数据预取方法及装置 | |
CN111429974A (zh) | 超级计算机平台上的分子动力学模拟短程力并行优化方法 | |
CN106780415B (zh) | 一种直方图统计电路及多媒体处理系统 | |
CN107291630B (zh) | 一种高速缓冲存储器处理方法及装置 | |
CN112115307A (zh) | 面向图的顶点数据规则存储结构和连接拓扑压缩方法 | |
CN105487911B (zh) | 一种基于编译指导的众核数据分片方法 | |
CN1446406A (zh) | 在高速acs维特比译码器实现的存储器中有效读取和存储状态量度的方法和设备 | |
CN111653318A (zh) | 一种用于基因比对的加速方法、装置、存储介质与服务器 | |
KR101681423B1 (ko) | 변위 히스토리 버퍼를 이용한 명령어 및 데이터 프리페치 방법 및 시스템 | |
US10749545B1 (en) | Compressing tags in software and hardware semi-sorted caches | |
CN108038158B (zh) | 减少数据库存储容量的数据存储方法 | |
US11977488B2 (en) | Cache prefetching method and system based on K-Truss graph for storage system, and medium | |
Weinberger et al. | On-line decision making for a class of loss functions via Lempel-Ziv parsing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
CB03 | Change of inventor or designer information |
Inventor after: Yang Chen Inventor after: Geng Longfei Inventor after: Huo Kaibo Inventor after: Mei Kuizhi Inventor before: Yang Chen Inventor before: Geng Longfei Inventor before: Huo Kaibo Inventor before: Mei Kuizhi |
|
CB03 | Change of inventor or designer information | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |