CN111742307A - 用于高速图遍历的计算机架构 - Google Patents
用于高速图遍历的计算机架构 Download PDFInfo
- Publication number
- CN111742307A CN111742307A CN201980014239.5A CN201980014239A CN111742307A CN 111742307 A CN111742307 A CN 111742307A CN 201980014239 A CN201980014239 A CN 201980014239A CN 111742307 A CN111742307 A CN 111742307A
- Authority
- CN
- China
- Prior art keywords
- vertex
- memory
- vertices
- processor
- computer architecture
- 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.)
- Pending
Links
- 230000015654 memory Effects 0.000 claims abstract description 114
- 238000012545 processing Methods 0.000 claims description 33
- 238000004891 communication Methods 0.000 claims description 10
- 238000013507 mapping Methods 0.000 claims description 6
- 230000006837 decompression Effects 0.000 claims description 3
- 230000002250 progressing effect Effects 0.000 claims description 2
- 238000007906 compression Methods 0.000 abstract description 10
- 230000006835 compression Effects 0.000 abstract description 9
- 238000000034 method Methods 0.000 description 32
- 230000008569 process Effects 0.000 description 27
- 230000008901 benefit Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 238000002474 experimental method Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 239000000523 sample Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/42—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7839—Architectures of general purpose stored program computers comprising a single central processing unit with memory
-
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/068—Hybrid storage device
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/4031—Fixed length to variable length coding
- H03M7/4037—Prefix coding
- H03M7/4043—Adaptive prefix coding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/70—Type of the data to be coded, other than image and sound
- H03M7/707—Structured documents, e.g. XML
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/4031—Fixed length to variable length coding
- H03M7/4037—Prefix coding
- H03M7/4043—Adaptive prefix coding
- H03M7/4068—Parameterized codes
- H03M7/4075—Golomb codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6005—Decoder aspects
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6017—Methods or arrangements to increase the throughput
- H03M7/6023—Parallelization
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Image Generation (AREA)
Abstract
一种用于图遍历的计算机架构提供用于根据顶点度自底向上排序遍历图数据的处理器。这种有序排序减少了冗余边检查。在一个实施方式中,描述图的顶点邻接数据可以分配在存储器层次结构中的不同存储器结构之中,以提供对与具有较高度的顶点相关联的顶点数据的较快访问,从而减少数据访问时间。还可以对邻接数据进行编码,以在具有高顶点度的顶点数据的存储器中提供较高的压缩。
Description
相关申请的交叉引用
本申请要求于2018年2月21日提交的美国非临时15/901,376的权益,所述美国非临时申请通过引用并入本文。
背景技术
本发明总体上涉及计算机架构,并且特别地涉及在遍历图数据时提供提高的速度的架构。
图是描述通过边互连以形成网络的一组顶点(节点)的数据结构。图提供了许多现实世界结构的有用模型,例如网页之间的关系的模型(其中,顶点描述网页并且边描述网页之间的链接)或社交网络中的个体之间的关系的模型(其中,顶点描述个体并且边描述他们的朋友或兴趣)。图还被用在神经网络和生物信息学领域中。
计算机通常被要求通过“图遍历”操作来对图数据进行处理,在该“图遍历”操作中,访问图的每个顶点并收集数据以例如产生最小生成树,或者以其他方式表征图或各顶点的关系。
图的顶点可以根据指示多少个边连接至该顶点的“度”来表征。“无标度图”是这样一类图:在该图中,顶点度的分布遵循幂律分布(power law distribution)。通常,这样的无标度图具有:具有大量连接的少量顶点;以及具有非常少的连接的更多顶点(长顶点)。在图遍历期间,这样的无标度图产生大量的冗余边检查(调查已访问的顶点)。这些边检查需要低效率地、不规律地访问保存图数据的存储器。
通过使用混合遍历策略,可以实现图遍历效率的提高,该混合遍历策略采用在“自顶向下”遍历之后进行“自底向上”遍历。在示例自顶向下遍历(在这种情况下为广度优先搜索)中,常规的基于CPU或GPU的系统执行程序以从起始顶点向外检查图数据以找到建立边界(frontier)的其邻居(通向其他顶点的边)。将该边界中的顶点标记为已访问,并且然后依次调查从这些顶点开始的边以建立新的边界。当在多次迭代之后边界达到了临界大小时,搜索策略转换成“自底向上”遍历。在该模式下,计算机查看其余未访问顶点以检查它们是否具有至现有边界的连接。如果具有至现有边界的连接,则将该顶点标记为已访问并将其添加至边界,并且该策略立即停止搜索该顶点的其他边,从而极大地节省了处理时间。
可以使用多个并行处理器来执行自顶向下搜索策略和自底向上搜索策略两者;然而,“自顶向下”遍历需要对边界进行原子更新。分别对每个顶点进行调查的自底向上策略不需要该原子更新。
例如,在通过引用并入本文的由Scott Beamer、Aydin Buluc、Krste Asanovic和David Patterson在2013年的distributed memory breadth-first search revisited:Enabling Bottom-Up Search,in Parallel and Distributed Processing SymposiumWorkshops&PhD Forum(IPDPSW),2013IEEE27th International.IEEE,第1618-1627页(参考Beamer)中得到了对该混合搜索策略的描述。
即使采用这样的混合搜索策略,图数据结构也可以迅速变大,从而使得图遍历变慢。目前,Facebook的社交网站是由具有超过10亿个顶点和超过1万亿条边的图描述的。
发明内容
本发明提供了一种改进的计算机架构,其在实现图遍历时利用了对顶点度的认知。首先,在自底向上遍历部分中,架构根据顶点度对顶点数据进行排序。如将在本申请中讨论的,发明人已经确定该排序可以极大减少无收益的边检查。其次,在访问顶点数据期间,通过将具有最大访问频率的数据加载到存储器层次结构中的最快存储器中来减少访问时间。在这方面,发明人已经确定高索引顶点数据被更频繁地访问。第三,在对数据进行压缩以实现在快速存储器中的更大数据存储时,可以通过将高度顶点的顶点数据与较短码字相关联来减少存储占用空间,以改善该数据在较小的较快存储结构中的表示。
具体地,在一个实施方式中,本发明提供了一种用于图遍历的计算机架构,该计算机架构具有存储器和处理器,存储器保存描述图的顶点以及所述顶点通过边至其他顶点的连接的邻接表,处理器与存储器系统进行通信,并且通过使用邻接表检查未访问顶点以找到至已访问顶点的边界的顶点的连接并且在找到至所述边界的顶点的连接时移动至下一顶点,来在从未访问顶点朝向所述边界的自底向上模式下操作。该架构操作以按照顶点度的次序沿自底向上方向探查未检查顶点,顶点度是连接至该顶点的边的数量。
因此,本发明的至少一个实施方式的特征是通过在自底向上搜索中按照顶点度对遍历进行排序来增加图遍历的速率。基于实验的预测表明,使用该架构可以获得每秒458亿条边的图遍历速度。
邻接表可以按照顶点度被布置在存储器中。
因此,本发明的至少一个实施方式的特征是通过在图遍历之前对邻接表进行预排序来简化按照顶点度的遍历。该预排序可以以流的方式高速完成。
存储器可以提供以较小的高访问速度存储器电路开始并且向较大的低访问速度存储器电路进展的存储器层次结构,并且邻接表可以被组织成将邻接表的顶点放置成使得较高顶点度相对于邻接表中的具有较低顶点度的顶点而朝向存储器层次结构的开始。
因此,本发明的至少一个实施方式的特征是通过将那些高度顶点的信息分配在具有较低访问延迟的存储器结构中来利用较高度的顶点具有更频繁的存储器访问的发明人的经验确定。
存储器层次结构可以包括片外混合存储立方体存储器以及在与处理器相同的集成电路上的片上存储器。
因此,本发明的至少一个实施方式的特征是极大地增加了在图遍历时将被频繁访问的图数据存储在片上存储器中的能力。
该计算机架构还可以包括位于处理器与存储器之间的解压缩器电路,该解压缩器电路根据码本对邻接表进行解压缩,码本将表示存储器中的邻接表的码字转换成邻接数据,并且其中,较小的码字与关联至具有较高顶点度的顶点的邻接数据相关联。
因此,本发明的至少一个实施方式的特征是向被频繁访问的顶点信息提供更大的压缩,从而实现在最快的存储器结构中的信息更大表示。
存储器解压缩器可以采用称为Exp-Golomb编码的解压缩方法。
因此,本发明的至少一个实施方式的特征是采用使对解码器的附加存储要求最小化的编码系统。
该计算机架构还可以通过使用邻接表检查边界顶点和边界顶点的边以找到至未访问顶点的连接,来在从边界至未访问顶点的自顶向下模式下操作,并且可以包括模式开关,该模式开关根据基于遍历图的进展的参数,在第一模式与第二模式之间切换处理器系统。
因此,本发明的至少一个实施方式的特征是提供用于提高性能的混合图遍历(自顶向下图遍历和自底向上图遍历两者)的优点。
计算机架构可以包括在图的遍历期间由处理器更新的计数器,并且其中,模式开关读取该计数器以基于计数器值在第一模式与第二模式之间切换处理器系统。
因此,本发明的至少一个实施方式的特征是根据动态获取的数据提供对自顶向下处理或自底向上处理的运行时间优化。
计数器可以指示边界的大小。
因此,本发明的至少一个实施方式的特征是测量遍历的质量,遍历的质量指示在自顶向下模式或自底向上模式下的可能效率。
处理器针对第一模式和第二模式提供不同的处理电路。
因此,本发明的至少一个实施方式的特征是针对自顶向下操作和自底向上操作提供优化的的处理器。
不同的处理电路可以采用多个并行处理器,以针对第一处理器提供向存储器的原子写入,而针对第二处理器不提供向存储器的原子写入。
因此,本发明的至少一个实施方式的特征是允许并行处理图遍历问题。
不同的处理电路可以具有独立的流水线(pipeline)。
因此,本发明的至少一个实施方式的特征是允许针对自顶向下处理和自底向上处理对流水线进行优化。
处理器可以是FPGA。
因此,本发明的至少一个实施方式的特征是允许高效地实现专用处理器。
邻接表可以按顶点度被布置在存储器中。
因此,本发明的至少一个实施方式的特征是对邻接表进行预排序以进行较高速度处理。
该计算机架构可以包括排序处理器,该排序处理器执行存储的程序并且接收未排序的邻接表并且根据顶点度对该表进行排序,未排序的邻接表描述图的顶点以及所述顶点通过边至其他顶点的连接。
因此,本发明的至少一个实施方式的特征是提供离线排序以简化架构。
排序处理器可以生成映射表,该映射表指示从标识未排序的邻接表中的顶点的顶点索引至顶点表中的顶点索引的映射。
因此,本发明的至少一个实施方式的特征是将遍历信息容易地转换成原始图。
这些特定的目的和优点可以适用于落入权利要求内的仅一些实施方式,因此不限定本发明的范围。
附图说明
图1是示出与图遍历处理器通信的通用CPU或GPU的本发明的架构的框图,图遍历处理器具有与存储器层次结构进行通信的专用的自顶向下处理器和自底向上处理器,存储器层次结构包括片上存储器、混合存储立方体存储器和其他大容量储存存储器等,图1还示出了用于在自顶向下处理器与自底向上处理器之间进行切换的切换机制的展开图;
图2是具有多个并行处理元件的自顶向下处理器和自底向上处理器的展开图,多个并行处理元件与用于自顶向下处理器的流水线原子地通信,并且与用于自底向上处理器的流水线非原子地通信;
图3是图1的处理器系统的操作框图,包括对图顶点信息进行排序的离线部分和执行遍历的在线部分,图3还包括示出自顶向下图遍历和自底向上图遍历的图表示的图;
图4是示出通过码本对经排序的顶点数据进行转换并且在存储器层次结构的各种存储器系统之间对其进行分配的数据流图;
图5是无标度网络的简化图;
图6是示出本发明所适用的图5的网络的标度的幂律分布的图;以及
图7是在顶点至边界的自底向上连接期间的高度顶点和低度顶点的图,提供了本发明的速度增益的直观框架。
具体实施方式
硬件概述
现在参照图1,计算机系统10可以提供通用处理器12,例如,可能使用无序和推测执行来执行通用指令集的冯·诺伊曼型架构或提供多个并行操作核的所谓的图形处理器单元(GPU)。通用处理器12可以与包括例如片上缓冲存储器16、诸如SRAM和DRAM和/或所谓的闪速存储器的外部存储器18、以及磁盘存储装置20的分层存储器14通信。通用处理器12可以执行存储在存储器14中的程序22,其操作将在下面描述。
通用处理器12可以例如经由共享数据总线与专用图遍历处理器24通信。如将在下面更详细地讨论的,图遍历处理器24可以包括专用的自顶向下处理器26a和专用的自底向上处理器26b。图遍历处理器24可以针对下面所描述的自顶向下图遍历和自底向上图遍历的类型提供优化的流水线架构。预期专用图遍历处理器24将是专用集成电路,并且在一个实施方式中,可以使用执行固件程序的现场可编程门阵列(FPGA)来实现。
图遍历处理器24还可以直接或通过通用处理器12与存储器层次结构28通信,存储器层次结构28包括片上存储器30、高带宽片外存储器31以及磁盘存储器20,片上存储器30构造在与处理器26相同的集成电路基板上。
在一个实施方式中,高带宽片外存储器31可以是根据混合存储立方体联盟的规范构造的混合存储立方体(HMC)存储器,该混合存储立方体联盟是Micron和Samsung以及多家其他制造商之间的联合协作,其中,部件可以根据商品名称HMC Gen2(HMC-15G-SR)从Micron商购获得。该设备通常提供极高的带宽(每秒的数据传输量):提供两条全双工通信链路(存储器通道),每条链路包括每秒八吉比特的线路、每秒十五吉比特的线路,并且提供每秒三十吉比特的总带宽。其他HMC部件可以支持多达四条链路,每条链路具有每秒十六吉比特的线路、每秒三十吉比特的线路,以及每秒240吉比特的聚合带宽。如将在下面描述的,通用处理器12可以与片上存储器30和片外存储器31通信,以将数据加载到与要遍历的图的描述有关的这些存储器中,并从与图遍历结果有关的存储器中读取数据。
片上存储器30可以保存用于图遍历的包括“已访问”位图32的数据结构。已访问位图32(其中的仅一部分可以被保存在片上存储器30中)提供数量与正在遍历的图的顶点的数量相等的位的数组,该位的数组可以被设置或重置以指示是否已经访问了这些顶点。
片上存储器30还可以包括描述图的已访问顶点的子集的边界位图33(再次,其中的仅一部分可以被保存在片上存储器30中),所述子集描述可以连接至其他未访问顶点的顶点的边界。通常,在自顶向下遍历期间,其边已被探查到的顶点被从边界位图33中移除。
片上存储器30还可以保存针对每个顶点描述连接至其他顶点的边的邻接表34的一部分。邻接表34将在下面更详细地讨论。
因为片上存储器30不能保存整个已访问位图32、边界位图33或邻接表34,所以结构的片上部分由片外存储器31中相应的已访问位图32'、边界位图33'和邻接表34'补充。
仍然参照图1,图遍历处理器24可以包括处理器控制器36,处理器控制器36可以在图遍历期间交替地激活自顶向下处理器26a和自底向上处理器26b中的一个或另一个。通常,图遍历从使用自顶向下处理器26a的特定图顶点开始,随后切换到自底向上处理器26b,并且然后通常切换回自顶向下处理器26a,从而完成图遍历处理的最后步骤。
处理器控制器36由阈值比较器38控制,该阈值比较器38对分别与自顶向下处理器26a和自底向上处理器26b通信的计数器40和计数器42的值进行分析,以收集关于图遍历的统计信息,如将在下面讨论的。
通常,自顶向下处理器26a和自底向上处理器26b中的每一个可以如箭头44所指示的直接与片上存储器30和片外存储器31通信或通过解压缩器46与片上存储器30和片外存储器31通信,解压缩器46的操作将在下面更详细地讨论。这些解压缩器46被分别示出,但是实际上可以共享部件。
现在参照图2,自顶向下处理器26a和自底向上处理器26b中的每一个可以包括多个独立操作的处理单元47a和47b,处理单元47a和47b可以在各自的流水线48a和48中针对共享数据来并行工作以同时处理图的不同顶点以进行高速操作。通常,处理单元47a将向流水线48a原子地写入以防止关于将顶点标识为已访问的竞争状况。该原子写入可以由本领域已知类型的锁定系统50来实现。相比之下,如将在下面讨论的,实现自底向上处理器26b的处理单元47b不需要被原子锁定。
硬件操作
现在暂时参照图5和图6,可以通过本发明遍历的简化图52可以提供通过边56互连的一组顶点54。通常,图52可以由邻接表34描述,邻接表34通过唯一的顶点索引列出每个顶点54并描述该顶点与其他顶点的直接连接。每个顶点还可以包括可以在图遍历期间通过本文未讨论的单独的索引操作来访问的附加信息。
在图遍历期间,选择起始顶点54,并且之后为图边56,直至访问了图中的每个顶点。在遍历期间,可以收集与顶点54或其连接有关的数据。图遍历是图52的处理的基本操作,并且可以用于例如开发对例如社交网络中的连接进行排序或标识的图的简化描绘(例如,最小生成树)。
在许多重要的图应用中,图52将近似于所谓的无标度图,其中少量的顶点54(此处以交叉影线示出)具有大量的边56,远大于大多数的其余顶点54。边56的数量将被称为顶点“度”,并且在无标度图中,图52的一组顶点54中的边的数量通常是幂律分布58。如下面将要讨论的,本发明使用顶点度来控制自底向上遍历中顶点遍历的次序以提高遍历的效率,并且进一步使用顶点度来定位存储器层次结构中的顶点数据(主要是邻接表34)并压缩该数据。
现在参照图1和图3,图遍历执行可以如处理块60所指示的那样开始,其中根据顶点度对邻接表34进行排序,使得与最高度相关联的顶点54位于例如邻接表34的开始处。典型的邻接表34可以例如提供顶点索引表62,顶点索引表62针对每个顶点索引(此处示出顶点0至7)在数组中具有一个数组元素,其中顶点索引是通常编码在数组元素的地址中的与每个顶点54相关联的唯一数字。数组元素中的针对每个顶点54的值提供从顶点索引表62的父顶点54到相应的邻接数组68中范围66的开始的指针64。邻接数组68中的在该父顶点54的范围66内的值根据通过从父顶点54引出的那些边连接至该父顶点54的顶点54的索引编号描述从父顶点54引出的每个边。范围66的末尾由顶点索引表62中下一父顶点54的下一范围的开始来描述。
给定顶点54的度根据邻接表34通过范围66的长度来容易地确定。因此,参照图3,顶点(0)的度为(3),指示父顶点(0)连接至三个其他顶点54。通常,顶点54相对于他们的度以任意次序布置在顶点索引表62和邻接表34中,但是例如使用通用处理器12将顶点54排序成根据度的次序,使得最高度的顶点54在这些数据结构的首位。优选地,可以严格根据顶点度排序;然而,从下面的描述中将会认识到,如果通常例如通过高顶点度、中顶点度和低顶点度的有序类别或顶点度的统计趋势布置来观测这种排序,则本发明产生较小的益处。
在所描绘的示例中,将按度对所示出的未排序的邻接表34进行排序,使得首先是顶点(0)(度为3),之后是度均为2的顶点(2)和(3)两者,最后是度为1的顶点(1)。在该排序过程中,顶点索引表62中顶点的次序将相应地改变,并且可以通过通用处理器12开发出映射表23(图1所示)以将该新次序映射至原始的顶点编号,使得可以重新建立原始顶点的次序。可以对邻接数组68的每个数组元素中保存的值进行更新以引用经排序的顶点索引表62的新索引值。通常,可以类似地对已访问位图32和边界位图33进行排序以促进对该数据的定位以进行高效访问。
现在参照图4,本发明人已经确定:如描绘的渐近下降曲线69所指示的,在图遍历时,较高度的顶点在统计上经历比较小度的顶点54大的存储器访问次数。因此,可以将经排序的邻接表34中的顶点数据划分为与存储器层次结构28(图1所示)的不同存储结构相关联的仓70a至70c。通常,仓70a至70c的大小将等于存储器层次结构28中的不同存储器结构的大小,其中例如,第一仓70a保存与具有最高顶点度的顶点54相关联的邻接表34的数据,第一仓70a将与片上存储器30的大小匹配并与片上存储器30相关联。类似地,保存与具有较低顶点度的顶点54相关联的邻接表34的数据的仓70b的大小将与片外存储器的大小匹配,并且最后仓70c将保存与具有最低顶点度的顶点54的长尾相关联的邻接表34的数据,并且将具有足以被存储的大小并且将被存储在磁盘存储装置20中。以这种方式,最频繁存储器访问的具有较高顶点度的顶点54的数据将被保存在提供提高的访问速度的较快存储器结构中。
可以例如从邻接表34到存储器层次结构28直接完成顶点54的数据的分配,或者替选地,可以先使用码表72对该数据进行压缩以产生经编码的码字76,然后沿箭头77将该码字76分配给存储器层次结构28。在该过程中,仓70a至70c的顶点数据可以经受不同的压缩机制,以对仓70a中的数据提供更大压缩以允许在片上存储器30的小存储区域中的更大存储。类似地,仓70b中的数据可以经受比仓70c中的数据大的压缩以允许节约地使用片外存储器31。净压缩的这种变化可以通过将邻接表34映射至码字76的码本72的适当构造,将(码字范围内)较短的码字76分配给更频繁访问的数据来执行。通常,对于较高度的顶点的顶点数据,码字76的长度被设置为较短。该编码过程可以利用包括霍夫曼编码的各种不同的已知压缩技术。在一个实施方式中,该编码过程可以是例如在Solomon Golomb,Run-lengthencodings(Corresp.),IEEE Transactions on Information Theory 12,3(1966),399-401中描述的Exp-Golomb编码。
再次参考图3,该压缩处理由处理块74示出,并且将码字加载到存储器中由处理块78指示。这些步骤可以相对于处理器24“离线”执行,或者可以如下面提及的由并入处理器24的专用硬件来执行。
一旦顶点数据被适当地排序、压缩并加载到处理器24中,则如处理块80所指示的,可以特别地利用处理器控制器36。通过启用自顶向下处理器26a(如图1所示)来激活处理器24。在该过程中,在由用户在处理器24的配置数据中指定的种子顶点54'处开始,处理器24将询问邻接表34并标识连接至种子顶点54'的每个边的那些顶点54以定义边界82。然后,处理器24将按顺序移动通过边界的顶点54(例如,由编号1、2和3所示)以标识连接至边界82的顶点54的其他顶点54,从而如箭头85所示在边界82的向外扩展中建立新的边界(未示出)。在该过程中,已访问位图32(如图1所示)的位数组跟踪这些已访问的顶点,并且边界位图33跟踪边界82内的那些顶点并且相应地更新。通常,所有边已经被调查的顶点54可以从边界位图33中被移除但仍然保持为已访问并且因此保留在已访问位图32中。
用于自顶向下遍历的简化算法遵循以下步骤:
对于顶点的每个边界;
对于边界中的每个顶点;
如果边连接的顶点未被访问;
则将该顶点标记为已访问;
将所标记的顶点移至边界并收集其他数据;
下一条边;
下一个顶点;
下一个边界。
应当理解,自顶向下处理器26a的多个处理单元47可以并行操作以调查边界82的不同顶点54,但是当它们找到未访问顶点54时,他们必须将其原子地标记为已读,因此,不存在多个处理单元47向给定“子”顶点的写入。可以使用与存储器层次结构28(图1所示)通信的流水线技术获得对该遍历必要数据的访问。
随着边界82扩展,由于边界82中的多个给定顶点54将连接至共同顶点例如顶点54"的可能性增加,因此搜索过程的效率降低。在这些情况下,对共同顶点54"的其他边56的后续“检查”将浪费处理器资源,导致针对该边的对存储器层次结构28中的邻接表34的不必要访问以及对处理器电力的不必要消耗。
为了解决由边检查的冗余所导致的效率降低,在每个边界82完成(所包括的顶点54全部被扫描)之后,如决策块88所指示,可以做出关于使用自底向上处理器26b开始自底向上处理是否更高效的决策。
决策块81所指示的关于是否开始自底向上处理的决策考虑可以同时更新的计数器40和42。计数器40跟踪当前边界中需要检查的边的数量(mf)和未探查的边的数量(mu),而计数器42跟踪顶点中边界的大小(nf)。这些计数器40和42可以在遍历过程期间在硬件中被更新,从而消除了扫描边界位图33或邻接表34的需要。
具体地,(mf)和(nf)是通过随着顶点54被添加至边界82对每个顶点54的度和数量进行累计而计算的。剩余值mu是通过从边的总数中减去所有已访问顶点的所有度之和而计算的。
决策块81所指示的关于何时在自顶向下处理或自底向上处理之间进行切换的阈值确定可以采用以上参考的通过引用并入的Beamer论文中描述的技术。初步实验表明可以使用阈值α=15和β=20。在该过程中,阈值比较器38查看计数器40和42,并控制自顶向下处理器26a(在这种情况下将其去激活)和自底向上处理器26b(在这种情况下将其激活)。相同的决策块81还可以在每个边界82的结尾处进行检查,以查看是否已经访问了所有顶点54,并且如果已经访问了所有顶点54,则程序终止。
假设遍历未完成,如果决策块81处的决策是不再使用自顶向下处理,则如处理块84所指示的,开始使用自底向上处理器26b(如图1所示)进行自底向上处理。在自底向上处理中,不再对边界82的顶点54执行排序,作为替代,处理按照根据顶点度的次序对未访问的顶点54进行排序遍历,这通过对邻接表34的排序来促进。即,自底向上处理器26b从最高度的未访问顶点开始。
在每个未访问的顶点54处,对边进行检查以查看它们是否连接至边界82(即,它们是否连接至边界82中已有的顶点54)。如果存在这样的连接,则将该未访问的顶点54标记为已访问,并且不需要再查看该顶点54的其他边。这种快捷地查看边的能力是自底向上方法的显著益处。
用于底部遍历的简化算法遵循以下步骤:
对于每个未访问顶点;
对于每个边;
如果边连接至边界中的顶点;
则将该未访问顶点标记为已访问;
将该顶点添加至边界
跳出;
下一个边;
下一个顶点;
在这种情况下,边界82继续增长而不将顶点54移除,因为所添加的顶点54并非所有其他边均已被探查,而所有其他边均已被探查例如将允许顶点54从边界82被移除。应当理解,查看未访问顶点54可以由处理单元47b并行执行,并且因为没有其他处理单元47b将对该未访问顶点54进行处理,因此处理单元47b不需要对与未访问数组相关联的位图进行原子写入。一旦访问了每个未访问顶点,则将保留仍未连接至边界82(并因此标记为已访问)的一些顶点54。然后该过程将再次循环遍历未访问顶点54,以期望随着边界82扩展,这些未访问顶点中的一些现在将连接至边界82。
暂时参照图7,可以通过考虑各自有一半的边连接至边界82的高度顶点54a和低度顶点54b来获得对使用度排序的顶点54的自底向上遍历的益处的直观理解。对顶点54a或54b中任一个的访问呈现出任何给定边56连接至边界82并终止查看这些边的相等机会。在这方面,就避免快速得到终止查看该顶点的“跳出”状态的概率而言,这两个顶点54a和54b同样具有吸引力。然而,在被添加至边界82时,高度顶点54a极大地增加了其他顶点54将连接至边界82的速率,因为与低度顶点54b相比,高度顶点54a呈现出了较大数量的未连接边界的边,呈现出针对剩余顶点54b的更多机会。作为结果,通过从高度顶点54a开始,边界82的未连接边增加得更快,从而与相反顺序相比,增加了未来顶点迅速终止的机会。这转而减少了重复循环通过未访问顶点的需要。
再次参照图3,如上所述,在查看了每个未访问顶点54之后,将存在一些尚未连接至当前边界的未访问顶点,并且在通过决策块86之后将重复该自底向上排序,决策块86再次测试遍历是否完成以及是否期望恢复按照过程块80的自顶向下处理。此外,决策块86依赖于阈值比较器38对40和42的评估以及处理器控制器36对处理器26的激活。
假设图遍历未完成,则图52的处理根据阈值比较器38对计数器40的值与计数器42的值的比较在处理块80的处理与处理块84的处理之间继续移动。
尽管以上讨论将处理块60、74和78的执行视为由单独的通用处理器12离线完成,但应理解,也可以通过提供专用的排序和压缩电路将这些步骤并入处理器24,所述专用的排序和压缩电路执行对必要邻接表34的初始扫描以提供上述排序和压缩。
某些术语在本文中仅用于参考目的,并且因此不旨在进行限制。例如,术语例如“上”、“下”、“上方”和“下方”指代附图中所参照的方向。术语例如“前”、“后”、“背部”、“底部”和“侧部”描述部件的各部分在一致但任意的参考系中的取向,该取向通过参考描述所讨论的部件的文本和相关附图而变得清楚。这样的术语可以包括以上具体提到的词、其派生词以及类似含义的词。类似地,除非上下文明确指出,否则引用结构的术语“第一”、“第二”和其他这样的数值术语并不暗指顺序或次序。
当介绍本公开内容和示例性实施方式的元件或特征时,冠词“一”、“一个”、“该”和“所述”旨在意指存在一个或更多个这样的元件或特征。术语“包含”、“包括”和“具有”旨在是包括性的,并且意指除特别指出的那些之外,可能还存在附加元件或特征。还应理解,除非特别标识为执行次序,否则本文中描述的方法步骤、处理和操作不应被解释为必须以所讨论或图示的特定次序执行。还应理解,可以采用附加或替选步骤。
对“微处理器”和“处理器”或者“该微处理器”和“该处理器”的引用可以理解为包括可以在一个或多个独立和/或分布式环境中通信的一个或更多个微处理器,并且因此可以被配置成经由有线通信或无线通信与其他处理器通信,其中这样一个或更多个处理器可以被配置成在一个或更多个处理器控制的设备上运行,这些设备可以是相似或不同的设备。此外,除非另有指定,否则对存储器的引用可以包括一个或更多个处理器可读且可访问的存储器元件和/或部件,这些存储器元件和/或部件可以位于处理器控制的设备内部、处理器控制的设备外部并且可以经由有线网络或无线网络被访问。
特别地,本发明并非旨在限于本文中包括的实施方式和附图,并且权利要求应当被理解为包括在所附权利要求的范围内的这些实施方式的修改形式,所述修改形式包括实施方式的一部分和不同实施方式的要素的组合。本文所描述的包括专利出版物和非专利出版物的所有出版物的全部内容通过引用并入本文。
Claims (20)
1.一种用于图遍历的计算机架构,包括:
存储器,其保存描述所述图的顶点以及所述顶点通过边至其他顶点的连接的邻接表;以及
处理器,其与所述存储器系统进行通信,并且通过使用所述邻接表检查未访问顶点以找到至已访问顶点的边界的任何顶点的连接并且在找到至所述边界的顶点的连接时移动至下一顶点,以自底向上模式从未访问顶点朝向所述边界操作;
其中,按照顶点度的次序沿所述自底向上方向检查所述未访问顶点,所述顶点度是连接至所述顶点的边的数量。
2.根据权利要求1所述的计算机架构,其中,所述邻接表按照顶点度被布置在所述存储器中。
3.根据权利要求2所述的计算机架构,其中,所述存储器提供以较小的高访问速度存储器电路开始并且向较大的低访问速度存储器电路进展的存储器层次结构,并且其中,所述邻接表被组织成将所述邻接表中的具有较高顶点度的顶点的描述相对于所述邻接表中的具有较低顶点度的顶点的描述而朝向所述存储器层次结构的开始放置。
4.根据权利要求3所述的计算机架构,其中,所述存储器层次结构包括片外混合存储立方体存储器以及在与所述处理器相同的集成电路上的片上存储器。
5.根据权利要求1所述的计算机架构,还包括位于所述处理器与所述存储器之间的解压缩器电路,所述解压缩器电路根据码本对所述邻接表进行解压缩,所述码本将表示所述存储器中的邻接表的码字转换成所述邻接表,并且其中,较小的码字与邻接表中的针对较高顶点度的顶点的数据相关联。
6.根据权利要求5所述的计算机架构,其中,所述存储器解压缩器采用Exp-Golumb编码的解压缩。
7.根据权利要求1所述的计算机架构,其中,所述处理器还通过使用所述邻接表检查所述边界顶点的边以找到至未访问顶点的连接,以自顶向下模式从所述边界至未访问顶点操作;并且检查此
模式开关,其根据描述遍历所述图的进展的参数,在所述自顶向下模式与所述自底向上模式之间切换所述处理器系统。
8.根据权利要求7所述的计算机架构,还包括在对所述图的遍历期间由所述处理器更新的计数器,并且其中,所述模式开关读取所述计数器以基于计数器值在所述自顶向下模式与所述自底向上模式之间切换所述处理器系统。
9.根据权利要求8所述的计算机架构,其中,所述计数器指示所述边界的大小。
10.根据权利要求7所述的计算机架构,其中,所述处理器针对所述自顶向下模式和所述自底向上模式提供不同的处理电路。
11.根据权利要求10所述的计算机架构,其中,所述不同的处理电路采用多个并行处理器。
12.根据权利要求10所述的计算机架构,其中,所述不同的处理器具有独立的流水线。
13.根据权利要求7所述的计算机架构,其中,所述处理器是FPGA。
14.根据权利要求7所述的计算机架构,其中,所述邻接表按顶点度被布置在存储器中。
15.根据权利要求7所述的计算机架构,其中,所述存储器提供以较小的高访问速度存储器电路开始并且向较大的低访问速度存储器电路进展的存储器层次结构,并且其中,所述邻接表被组织成将所述邻接表中的具有较高顶点度的顶点的描述相对于所述邻接表中的具有较低顶点度的顶点的描述而朝向所述存储器层次结构的开始放置。
16.根据权利要求11所述的计算机架构,其中,所述存储器层次结构包括片外混合存储立方体存储器以及在与所述处理器相同的集成电路上的片上存储器。
17.根据权利要求7所述的计算机架构,其中,还包括位于所述处理器与所述存储器之间的解压缩器电路,所述解压缩器电路根据码本对所述邻接表进行解压缩,所述码本将表示所述存储器中的邻接表的码字转换成所述邻接表,并且其中,较小的码字与邻接表中的针对较高顶点度的顶点的数据相关联。
18.根据权利要求1所述的计算机架构,其中,所述存储器解压缩器采用Exp-Golumb编码的解压缩。
19.根据权利要求1所述的计算机架构,包括排序处理器,所述排序处理器执行存储的程序并且接收未排序的邻接表并且根据顶点度对所述未排序的邻接表进行排序,所述未排序的邻接表描述所述图的顶点以及所述顶点通过边至其他顶点的连接。
20.根据权利要求19所述的计算机架构,其中,所述排序处理器生成映射表,所述映射表指示从所述未排序的邻接表中的顶点至所述邻接表中的顶点的映射。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/901,376 US10747433B2 (en) | 2018-02-21 | 2018-02-21 | Computer architecture for high-speed, graph-traversal |
US15/901,376 | 2018-02-21 | ||
PCT/US2019/017227 WO2019164682A1 (en) | 2018-02-21 | 2019-02-08 | Computer architecture for high-speed, graph-traversal |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111742307A true CN111742307A (zh) | 2020-10-02 |
Family
ID=67617877
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980014239.5A Pending CN111742307A (zh) | 2018-02-21 | 2019-02-08 | 用于高速图遍历的计算机架构 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10747433B2 (zh) |
KR (1) | KR20200112875A (zh) |
CN (1) | CN111742307A (zh) |
WO (1) | WO2019164682A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115357554A (zh) * | 2022-10-24 | 2022-11-18 | 浪潮电子信息产业股份有限公司 | 一种图神经网络压缩方法、装置、电子设备及存储介质 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10990595B2 (en) * | 2018-05-18 | 2021-04-27 | Oracle International Corporation | Fast distributed graph query engine |
US10795672B2 (en) * | 2018-10-31 | 2020-10-06 | Oracle International Corporation | Automatic generation of multi-source breadth-first search from high-level graph language for distributed graph processing systems |
EP3899824A1 (en) * | 2018-12-21 | 2021-10-27 | ABB Schweiz AG | System and method for effort estimation |
GB2582782A (en) * | 2019-04-02 | 2020-10-07 | Graphcore Ltd | Graph conversion method |
US11399037B2 (en) * | 2019-09-06 | 2022-07-26 | Paypal, Inc. | Anomaly behavior detection in interactive networks |
US11636154B2 (en) | 2019-09-26 | 2023-04-25 | Fungible, Inc. | Data flow graph-driven analytics platform using data processing units having hardware accelerators |
US11636115B2 (en) | 2019-09-26 | 2023-04-25 | Fungible, Inc. | Query processing using data processing units having DFA/NFA hardware accelerators |
US11675785B2 (en) | 2020-01-31 | 2023-06-13 | Oracle International Corporation | Dynamic asynchronous traversals for distributed graph queries |
US11934964B2 (en) | 2020-03-20 | 2024-03-19 | Microsoft Technology Licensing, Llc | Finite automata global counter in a data flow graph-driven analytics platform having analytics hardware accelerators |
US11868283B2 (en) * | 2020-07-17 | 2024-01-09 | The Regents Of The University Of Michigan | Hybrid on/off-chip memory architecture for graph analytics |
CN113689520B (zh) * | 2021-05-31 | 2023-10-10 | 龙芯中科技术股份有限公司 | 图数据的处理方法、装置、电子设备及存储介质 |
CN113419861B (zh) * | 2021-07-02 | 2023-10-24 | 北京睿芯高通量科技有限公司 | 一种面向gpu卡群的图遍历混合负载均衡方法 |
CN113961753B (zh) * | 2021-09-08 | 2023-04-21 | 南湖实验室 | 一种基于集合的图数据存储模型及其图数据库 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030167265A1 (en) * | 2001-06-07 | 2003-09-04 | Corynen Guy Charles | Computer method and user interface for decision analysis and for global system optimization |
CN102768670A (zh) * | 2012-05-31 | 2012-11-07 | 哈尔滨工程大学 | 基于节点属性标签传播的网页聚类方法 |
CN103140829A (zh) * | 2011-09-29 | 2013-06-05 | 英特尔公司 | 对高速缓存和/或插槽敏感的多处理器内核广度优先遍历 |
US8484607B1 (en) * | 2012-03-06 | 2013-07-09 | International Business Machines Corporation | Decomposing layout for triple patterning lithography |
CN103383772A (zh) * | 2012-05-01 | 2013-11-06 | 辉达公司 | 用于实施图形着色的系统、方法以及计算机程序产品 |
CN103399902A (zh) * | 2013-07-23 | 2013-11-20 | 东北大学 | 一种并行环境下的有向图可达性链表生成及查询方法 |
CN104915427A (zh) * | 2015-06-15 | 2015-09-16 | 华中科技大学 | 一种基于广度优先遍历的图处理优化方法 |
US20160071233A1 (en) * | 2014-09-10 | 2016-03-10 | Oracle International Corporation | Graph Processing Using a Mutable Multilevel Graph Representation |
CN105451026A (zh) * | 2014-09-19 | 2016-03-30 | 想象技术有限公司 | 数据压缩 |
CN105893486A (zh) * | 2016-03-29 | 2016-08-24 | 华中科技大学 | 一种基于团的大规模图最短距离索引方法 |
US20160342709A1 (en) * | 2015-05-21 | 2016-11-24 | International Business Machines Corporation | Storing graph data in a relational database |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7742906B2 (en) * | 2007-03-06 | 2010-06-22 | Hewlett-Packard Development Company, L.P. | Balancing collections of vertices in a network |
US9613164B2 (en) | 2009-09-11 | 2017-04-04 | University Of Maryland, College Park | System and method for data management in large data networks |
US8705623B2 (en) * | 2009-10-02 | 2014-04-22 | Texas Instruments Incorporated | Line-based compression for digital image data |
US9922376B1 (en) * | 2014-10-31 | 2018-03-20 | Intuit Inc. | Systems and methods for determining impact chains from a tax calculation graph of a tax preparation system |
US10747740B2 (en) * | 2015-03-24 | 2020-08-18 | Kyndi, Inc. | Cognitive memory graph indexing, storage and retrieval |
US10031947B2 (en) * | 2015-06-24 | 2018-07-24 | Advanced Micro Devices, Inc. | Method and apparatus for performing a search operation on heterogeneous computing systems |
US10432639B1 (en) * | 2017-05-04 | 2019-10-01 | Amazon Technologies, Inc. | Security management for graph analytics |
-
2018
- 2018-02-21 US US15/901,376 patent/US10747433B2/en active Active
-
2019
- 2019-02-08 CN CN201980014239.5A patent/CN111742307A/zh active Pending
- 2019-02-08 WO PCT/US2019/017227 patent/WO2019164682A1/en active Application Filing
- 2019-02-08 KR KR1020207022944A patent/KR20200112875A/ko not_active Application Discontinuation
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030167265A1 (en) * | 2001-06-07 | 2003-09-04 | Corynen Guy Charles | Computer method and user interface for decision analysis and for global system optimization |
CN103140829A (zh) * | 2011-09-29 | 2013-06-05 | 英特尔公司 | 对高速缓存和/或插槽敏感的多处理器内核广度优先遍历 |
US8484607B1 (en) * | 2012-03-06 | 2013-07-09 | International Business Machines Corporation | Decomposing layout for triple patterning lithography |
CN103383772A (zh) * | 2012-05-01 | 2013-11-06 | 辉达公司 | 用于实施图形着色的系统、方法以及计算机程序产品 |
CN102768670A (zh) * | 2012-05-31 | 2012-11-07 | 哈尔滨工程大学 | 基于节点属性标签传播的网页聚类方法 |
CN103399902A (zh) * | 2013-07-23 | 2013-11-20 | 东北大学 | 一种并行环境下的有向图可达性链表生成及查询方法 |
US20160071233A1 (en) * | 2014-09-10 | 2016-03-10 | Oracle International Corporation | Graph Processing Using a Mutable Multilevel Graph Representation |
CN105451026A (zh) * | 2014-09-19 | 2016-03-30 | 想象技术有限公司 | 数据压缩 |
US20160342709A1 (en) * | 2015-05-21 | 2016-11-24 | International Business Machines Corporation | Storing graph data in a relational database |
CN104915427A (zh) * | 2015-06-15 | 2015-09-16 | 华中科技大学 | 一种基于广度优先遍历的图处理优化方法 |
CN105893486A (zh) * | 2016-03-29 | 2016-08-24 | 华中科技大学 | 一种基于团的大规模图最短距离索引方法 |
Non-Patent Citations (2)
Title |
---|
(美)埃里克•D•克拉泽克(ERIC D.KOLACZYK),(匈)加博尔•乔尔迪(GABOR CSARDI): "《网络数据的统计分析 R语言实践》", 30 June 2016, 西安交通大学出版社 * |
MAXIM NAUMOV, ALYSSON VRIELINK, AND MICHAEL GARLAND.: ""Parallel Depth-First Search for Directed Acyclic Graphs"", 《 IN IA3’17: SEVENTHWORKSHOP ON IRREGULAR APPLICATIONS: ARCHITECTURES AND ALGORITHMS》, 17 November 2017 (2017-11-17), pages 1 - 8 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115357554A (zh) * | 2022-10-24 | 2022-11-18 | 浪潮电子信息产业股份有限公司 | 一种图神经网络压缩方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US10747433B2 (en) | 2020-08-18 |
WO2019164682A1 (en) | 2019-08-29 |
US20190258401A1 (en) | 2019-08-22 |
KR20200112875A (ko) | 2020-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111742307A (zh) | 用于高速图遍历的计算机架构 | |
US10915450B2 (en) | Methods and systems for padding data received by a state machine engine | |
US9665083B2 (en) | Counter operation in a state machine lattice | |
CN104011723B (zh) | 状态机晶格中的布尔逻辑 | |
CN107609644B (zh) | 用于状态机中的数据分析的方法及系统 | |
CN107305586B (zh) | 索引生成方法、索引生成装置及搜索方法 | |
US10698697B2 (en) | Adaptive routing to avoid non-repairable memory and logic defects on automata processor | |
CN101655821B (zh) | 一种解决地址空间映射哈希地址冲突的方法及装置 | |
US11791838B2 (en) | Near-storage acceleration of dictionary decoding | |
US20170099064A1 (en) | Non-transitory computer-readable recording medium, encoding method, encoding device, decoding method, and decoding device | |
US20180113951A1 (en) | Graph traversal using automata processor | |
JP2021118006A (ja) | レイテンシ及びスループット中心の再構成可能なストレージ装置及びその動作方法 | |
US9137336B1 (en) | Data compression techniques | |
CN112070652A (zh) | 数据压缩、解压方法、可读存储介质和电子设备 | |
CN105830160B (zh) | 用于将经屏蔽数据写入到缓冲器的设备及方法 | |
US9570125B1 (en) | Apparatuses and methods for shifting data during a masked write to a buffer | |
JP7513868B2 (ja) | 情報処理システム、情報処理方法およびプログラム | |
Ediger et al. | Computational graph analytics for massive streaming data | |
CN115495504A (zh) | 数据查询方法和装置、电子设备、计算机可读存储介质 | |
Edwards et al. | Empirical speedup study of truly parallel data compression | |
CN114153380A (zh) | 用于数据访问和获取的集成电路、系统和方法 | |
CN114118443A (zh) | 基于Optane DIMM的大规模图嵌入训练方法及系统 | |
JP2023503034A (ja) | パターンベースのキャッシュブロック圧縮 | |
Lehmann et al. | Bipartite ShockHash: Pruning ShockHash search for efficient perfect hashing | |
Rainey et al. | Massive graph processing on nanocomputers |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40032630 Country of ref document: HK |