CN116128701A - 一种用于执行图计算任务的装置、图计算方法 - Google Patents
一种用于执行图计算任务的装置、图计算方法 Download PDFInfo
- Publication number
- CN116128701A CN116128701A CN202211500779.4A CN202211500779A CN116128701A CN 116128701 A CN116128701 A CN 116128701A CN 202211500779 A CN202211500779 A CN 202211500779A CN 116128701 A CN116128701 A CN 116128701A
- Authority
- CN
- China
- Prior art keywords
- graph
- vertex
- sub
- computing
- calculation
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- 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
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Multi Processors (AREA)
Abstract
本发明提供一种用于执行图计算任务的装置,所述装置包括:中央处理器,用于对待进行图计算的图数据集进行预处理以按照图加速器的计算节点数量将其划分为与计算节点数量一致的多个子图;图加速器,其包括多个计算节点,用于接收并处理中央处理器传输的所有子图,每个计算节点处理一个子图的计算并从其他计算节点获取其他计算节点的子图数据以更新自身处理的子图,其中:所述计算节点由一个或多个存内计算器件组成,所有计算节点采用环状拓扑结构依次相联,且计算节点间的数据传输模式为单向传输,下游计算节点从上游计算节点预取数据。本发明提出的装置可以在不带来冗余计算的同时消除对图计算任务性能的影响更大的跨节点间同步操作。
Description
技术领域
本发明涉及图数据处理领域,具体来说,涉及图数据处理领域中的图计算任务处理领域,更具体地说,涉及一种用于执行图计算任务的装置、图计算方法。
背景技术
宇宙中的万物,大到恒星,小到原子分子,都时时刻刻与其他个体存在相互关系,这种个体与个体之间的相互关系可以用图进行表示。图是一种比树结构更复杂的非线性结构,图中包含了一系列的顶点与边,其中,顶点可以表示为个体,边可以表示为个体与个体之间的关系,同时顶点或边都可以附带一些描述自身的信息(特征)。考虑到图的这种特性,现实生活中的很多数据都可以建模成图这一抽象的结构,比如:人与人之间的关系图,每个顶点表示一个人,人与人之间的关系形成一条边;地铁图,每个顶点表示一个站点,站点与站点之间的线路形成一条边。进一步地,还可以从图中挖掘出有价值的知识或规律,例如频繁模式、因果关系等。
随着信息时代的到来,图数据规模成爆炸式增长,产生了对大规模的图数据集进行高效处理的需求。目前,一般采用图加速器处理大规模的图数据集,图加速器包括单节点图加速器和多节点图加速器,其中,单节点加速器指的是由单个计算节点构建的图加速器,多节点加速器指的是由多个计算节点构建的图加速器,计算节点采用传统计算芯片,比如FPGA芯片。但是现有的图加速器在执行图计算任务时,存在着并行效率低、访存随机性强、数据冲突频度高以及计算传输比低等问题,这些问题会严重影响图计算任务的执行效率。
针对上述缺陷,现有技术中提出两种改进方式以提高图计算任务的执行效率:一种是针对单节点图加速器提出的改进,例如,中国专利申请CN109636709A提出一种适用于异构平台的图计算方法,通过计算密度等先验信息来决定主机和加速器间的任务划分以此提高图计算任务的执行效率;或者,中国专利申请CN109919826A提出一种用于图计算加速器的数据压缩方法及图计算加速器,通过将待处理的图数据转化为独立稀疏列压缩CSCI格式的图数据以提高图加速器执行图计算任务的效率;或者,中国专利申请CN109003222A提出一种异步高能效图计算加速器,通过设计异步计算的图计算加速器以提高图加速器执行图计算任务的效率。另一种是针对多节点图加速器提出的改进,如美国申请专利US202016896464A提出的基于多FPGA(计算节点)加速器互连的图形处理优化方法,通过对图计算任务定制化设计以提供更多的吞吐量或更低的延时,同时多个FPGA(计算节点)互连以协同处理更大规模的图数据集。
虽然现有技术所提出的方案能够在一定程度上提高对图计算任务的处理效率,但是仍存在以下不足:针对第一种方式,由于实际生活中的图数据集的规模十分巨大,原始数据和中间数据的内存使用量往往能达到上千GB,单节点加速器中计算节点的内存容量往往难以满足其需求,此种情况下计算节点需要从磁盘中读取或写入数据,而磁盘的访存带宽极低,这会极大的影响图计算任务的执行效率。针对第二种方式,基于FPGA平台的计算节点(多节点图加速器),需要使用者利用硬件编程语言设计精细且高效的硬件架构,这要求使用者有着较高的专业知识,同时由于FPGA的片上资源有限,难以充分利用图计算任务蕴含的并行度,提高了使用者的门槛,并且在该方案中为了降低通信量,需要复杂的预处理以利用图数据的局部性,这会抵消图计算任务执行所带来的性能收益。又由于上述两种方法均是基于存储-计算分离的硬件架构进行设计的,执行图计算任务时会在存储单元和计算节点之间频繁的搬运数据,这会产生较长的数据访问时间,虽然图计算任务的计算量很小且产生的计算时间短,也不能消除数据访存时间对图计算任务执行效率带来的影响。
综合上述内容可知,由于图数据集比较大,单节点图加速器难以满足其内存需求,而如果采用多节点图加速器,其计算节点间的通信带宽低,在执行图计算任务时会产生大量的计算节点间通信,并且由于不存在节点通信规则,计算节点采用随机访存的方式获取数据进行计算,在执行图计算任务时会产生大量的随机访存数据,进而严重影响图计算任务的处理效率,因此如何优化多计算节点间的通信成为提高图计算任务处理效率的关键。
发明内容
因此,本发明的目的在于克服上述现有技术的缺陷,提供一种用于执行图计算任务的装置,一种图数据集预处理方法和一种图计算方法。
根据本发明的第一方面,提供一种用于执行图计算任务的装置,所述装置包括:中央处理器,用于对待进行图计算的图数据集进行预处理以按照图加速器的计算节点数量将其划分为与计算节点数量一致的多个子图;图加速器,其包括多个计算节点,用于接收并处理中央处理器传输的所有子图,每个计算节点处理一个子图的计算并从其他计算节点获取其他计算节点的子图数据以更新自身处理的子图,其中:所述计算节点由一个或多个存内计算器件组成,所有计算节点采用环状拓扑结构依次相联,且计算节点间的数据传输模式为单向传输,下游计算节点从上游计算节点预取数据。
在本发明的一些实施例中,所述图加速器被配置为按照如下步骤对中央处理器传输的所有子图进行图计算:T1、将接收到的所述中央处理器传输的所有子图分配给计算节点,其中,一个计算节点接收并处理一个子图;T2、根据图计算任务确定每个计算节点的图算法以及图算法对应的计算任务;T3、每个计算节点基于其所接收的子图按照步骤T2确定的图算法执行计算任务,以获取子图的目标数据。
在本发明的一些实施例中,在所述步骤T3中,每个计算节点执行计算任务时进行多次大迭代计算直至每个计算节点中的子图数据不再变化,其中,在每次大迭代计算中,每个计算节点同时执行多次小迭代,且每次小迭代中,每个计算节点同时执行下步骤:每个计算节点从其上游计算节点预取执行下一次小迭代所需的子图数据,并基于预取到的子图数据更新每个计算节点自身的子图数据,其中,上游计算节点中包括该上游计算节点上一次小迭代计算后自身的子图数据以及该上游计算节点在上一次大迭代计算中从其上游计算节点中预取得到的子图数据。
在本发明的一些实施例中,在每次大迭代计算中,每个计算节点执行的小迭代次数等于子图数量。
根据本发明的第二方面,提供一种图数据集预处理方法,所述图数据集中包括多个顶点以及多条连接任意两顶点的边,所述方法包括如下步骤:S1、对所述图数据集中的顶点进行编号并按照预设的分区规则将顶点划分顶点集;S2、按照步骤S1得到的每一顶点集将所述图数据集中的边划分为与每一顶点集对应的边集,并根据每一顶点集及其对应的边集构建所述图数据集的子图;S3、将步骤S2中得到的所有子图转化为稀疏压缩行存储格式。
在本发明的一些实施例中,所述步骤S1包括:S11、对所述图数据集中的顶点进行连续编号,并将编号后的顶点按照预设的分区规则划分为互不相交的顶点集,其中,属于同一分区的所有顶点组成一个顶点集,每一顶点集中包括多个编号离散的顶点;S12、采用哈希映射将步骤S11得到的每一顶点集中编号离散的顶点映射为编号连续的顶点。
在本发明的一些实施例中,所述预设的分区规则为:
SubSetID[i]=i%N,i=0,1,…
其中,i表示顶点编号,N表示计算节点数量,SubSetID[i]表示顶点i所属的分区。
在本发明的一些实施例中,在步骤S2中,将所述图数据集中的边划分为与每一顶点集对应的边集,其中,每个顶点集对应的边集是图数据集中指向该顶点集中每一顶点的所有边。
在本发明的一些实施例中,所述步骤S3包括针对每个子图执行如下步骤:S31、根据当前子图统计图数据集中每一顶点的出度,并基于其构建当前子图的偏置数组,所述偏置数组包括多个顺序编号的元素且元素的数量比图数据集中总的顶点数量多1,且偏置数组中的元素按编号顺序与图数据集的顶点编号顺序一一对应,最后一个元素对空,其中,每个元素用以记录其对应顶点之前的所有顶点在当前子图中的出度之和,最后一个元素用于记录图数据集中所有顶点在当前子图中的出度之和;S32、记录当前子图中每一条边指向的目标顶点编号,并将目标顶点按照每一条边的源顶点编号排序,以获取当前子图的目标顶点数组;S33、记录当前子图中每一条边的权重,并将权重按照目标顶点数组的排序进行排序获得当前子图的权重数组;S34、以当前子图的权重数组、偏置数组、目标顶点数组组成当前子图的稀疏压缩行存储格式;S35、按照预设的编码规则对步骤S34得到的所有稀疏压缩行存储格式的子图进行游程编码。
优选的,所述预设的编码规则为:计算所有子图中边的数量与顶点数量的比值,将比值小于或等于计算节点数量的稀疏压缩行存储格式的子图进行游程编码。
根据本发明的第三方面,提供一种图计算方法,所述方法包括:P1、获取待处理图数据集;P2、中央处理采用如本发明第二方面所述的方法对步骤P1获取的待处理图数据集进行预处理以将其划分为多个子图;P3、图加速器对步骤P2预处理后得到的子图进行图计算。
与现有技术相比,本发明的优点在于:相较于之前的图加速器设计,本发明提出的装置可以在不带来冗余计算的同时消除对图计算任务性能的影响更大的跨节点间同步操作;同时根据特定的执行流,使不同的计算节点间的通信规则化,使得利用计算时间来掩盖通信时间成为可能,以此降低甚至消除多计算节点间的通信影响;同时基于稀疏压缩行存储和游程编码的压缩方式使得在处理相同规模的图数据集时,图加速器的内存占用更低;基于环状的计算节点连接架构也使得该架构的扩展性可以得到保障。
附图说明
以下参照附图对本发明实施例作进一步说明,其中:
图1为本发明实施例的用于执行图计算任务的装置结构示意图;
图2为本发明实施例的对图数据集进行预处理的流程示意图;
图3为本发明实施例的图数据集示例示意图;
图4为根据本发明实施例映射处理后的图数据集示例示意图;
图5为根据本发明实施例构建的子图示例示意图;
图6为本发明实施例的图加速器执行图计算的流程图;
图7为本发明实施例的计算节点在大迭代计算中的小迭代计算过程示例示意图;
图8为本发明实施例的计算节点在小迭代计算中子图顶点更新关系示例示意图;
图9为本发明实施例的大迭代计算过程中的计算节点间数据轮转传输示例示意图;
图10为本发明实施例的计算节点间的联接关系及节点间数据传输示例示意图。
具体实施方式
为了使本发明的目的,技术方案及优点更加清楚明白,以下通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
如背景技术提到的,现有技术中针对大规模图数据执行图计算任务时存在两方面的问题,一方面是:单节点图加速器难以满足计算过程中的内存需求;另一方面是:采用多节点图加速器执行图计算任务时,其计算节点间的通信带宽很低,并且在执行图计算任务时会产生大量的计算节点间通信,进而严重影响图计算任务的性能。
针对以上缺陷,本发明提出一种能够大幅降低计算节点间通信影响的装置。在本发明的方案中,采用多节点图加速器缓解单节点图加速器中内存不足的问题,并采用访存带宽高的存内计算芯片以降低访存时延,提高访存带宽,为整个加速器提供更高的吞吐量;此外,本发明还将多个计算节点间的通信规则化,使下游计算节点能够从其上游计算节点中预取该下游计算节点所需的数据,经过有限次的循环预取,每个计算节点都可以获得所有的数据,以减少不必要的随机数据访存,进而降低现有技术中计算节点随机访存数据对图计算任务处理效率的影响。概括来说,为了达到上述目的,本发明首先提出一种执行图计算任务的装置,该装置中包括能够对图数据集进行预处理的中央处理器,以及对经中央处理器预处理后的大规模图数据集进行图计算的图加速器,其中,该图加速器中包括多个计算节点,并设计了通信规则,基于通信规则,计算节点采用环状拓扑结构相联,使得下游计算节点可以从其上游计算节点中获取数据,这样所有的数据可以在每一个计算节点中轮转。其次,为了降低内存开销,本发明还提出一种图数据集的预处理方法,对图数据集进行预处理以将其拆分成多个子图,并对每一子图进行压缩处理减少子图的内存占用量以节约存储空间。
为了更好的理解本发明,下面结合附图和实施例对本发明进行详细说明。
正如前面所说的,采用单节点图加速器对大规模图数据集执行图计算任务时,由于图数据集的数据规模较大,在计算过程中可能会产生上千GB的中间数据,而单节点图加速器的内存容量不足以存储这些庞大的中间数据,因此单节点图加速器无法满足对大规模图数据集执行图计算任务的需求。为了解决这一问题,考虑使用多节点图加速器对大规模图数据集执行图计算任务,但是对现有的多节点图加速器进行研究时发现,由于计算节点的通信带宽低,不仅会在执行图计算任务时产生大量的计算节点间通信,还容易发生通信阻塞,导致计算节点的利用率低。又由于现有的图加速器采用存储和计算分离的硬件架构,在执行图计算任务时计算节点会从存储单元中取用数据,并且图计算任务的访存是随机的(无规则的),此时缓存空间中会储存大量的随机访存数据,会造成缓存空间的浪费。针对以上的问题,本发明提出将计算节点间的通信规则化,让所有计算节点环形通信,使得每一计算节点能够对固定的计算节点中存储的数据进行预取以降低甚至消除多计算节点间的通信影响,进一步地,通过有限次的迭代预取,可以完成所有数据的更新;同时为了提升通信速度,本发明采用缓存小但访存带宽高的存内计算芯片。
根据本发明的一个实施例,如图1所示,本发明提出一种用于执行图计算任务的装置,所述装置包括:中央处理器,用于对待进行图计算的图数据集进行预处理以按照图加速器的计算节点数量将其划分为与计算节点数量一致的多个子图;图加速器,其包括多个计算节点,用于接收并处理中央处理器传输的所有子图,每个计算节点处理一个子图的计算并从其他计算节点获取其他计算节点的子图数据以更新自身处理的子图,其中:所述计算节点由一个或多个存内计算器件组成,所有计算节点采用环状拓扑结构依次相联,且计算节点间的数据传输模式为单向传输,下游计算节点从上游计算节点预取数据。根据本发明的一个实施例,存内计算器件可采用混合内存立方体(HMC)或者高带宽存储器(HBM),存内计算器件中包括四个外部链接,一个外部链接用于和中央处理器相联,其余外部链接用于和相邻的存内计算器件相联。需要说明的是,为了配合本发明方案中的预取通信规则,本发明在计算节点中配置两个硬件缓存区,其中一个缓存区用于存储该计算节点当前计算的数据,另一个缓存区用于接收从该计算节点的上游计算节点中预取的数据。
根据本发明的一个实施例,如图2所示,本发明提出的一种在中央处理器中通过对图数据集进行预处理来降低存储开销的方法,该方法包括步骤S1-S3,下面分别对每个步骤进行详细的说明。
在步骤S1中,对待进行图计算的图数据集中的顶点进行编号并按照预设的分区规则将顶点划分顶点集。
根据本发明的一个实施例,所述步骤S1包括:
S11、对所述图数据集中的顶点进行连续编号,并将编号后的顶点按照预设的分区规则划分为互不相交的顶点集,其中,属于同一分区的所有顶点组成一个顶点集,每一顶点集中包括多个编号离散的顶点。
根据本发明的一个实施例,所述预设的分区规则为:
SubSetID[i]=i%N,i=0,1,…
其中,i表示顶点编号,N表示计算节点数量,SubSetID[i]表示顶点i所属的分区。
根据本发明的一个示例,如图3所示,展示了具有10个顶点、13条边的图数据集放到具有两个计算节点的图加速器中进行图计算时,将其划分为两个子图的过程。其中,图3(a)展示了该图数据集的原始结构,如图3(b)所示,按照顺序对图数据包含的10个顶点进行编号,再按照预设的分区规则对图3(b)所示的图数据集划分顶点集,当图加速器中的计算节点数量为2时,SubSetID[0,2,4,6,8]=0,SubSetID[1,3,5,7,9]=1,此时,分区0对应的顶点集为{0,2,4,6,8},分区1对应的顶点集为{1,3,5,7,9}。
S12、采用哈希映射将步骤S11得到的每一顶点集中编号离散的顶点映射为编号连续的顶点。根据本发明的一个示例,可采用如下哈希映射关系将前述分区0和分区1对应顶点集中编号离散的顶点映射为编号连续的顶点:
{(0->0),(N->1),(2N->2),(3N->3),…,}
{(1->|V|/N),(N+1->(|V|/N)+1),(2N+1->(|V|/N)+2),(3N+1->(|V|/N)+2),…}
其中,V表示顶点数量,N表示计算节点数量或子图数量,仍旧以图3中的示例为例,按照上述映射方式进行顶点映射时:顶点0映射后为顶点0,顶点2映射后为顶点1,顶点4映射后为顶点2,顶点6映射后为顶点3,顶点8映射后为顶点4,顶点1映射后为顶点5,顶点3映射后为顶点6,顶点5映射后为顶点7,顶点7映射后为顶点8,顶点9映射后为顶点9,所有顶点经映射处理后的图数据集如图4所示,此时,映射处理后的分区0对应的顶点集为{0,1,2,3,4},分区1对应的顶点集为{5,6,7,8,9}。需要说明的是,在实际的应用中可能出现|V|/N不为整数的情况,此时可以增加若干个孤立的顶点直至可以整除,扩充的顶点为孤立顶点,对结果不会产生影响。
在步骤S2中,按照步骤S1得到的每一顶点集将所述图数据集中的边划分为与每一顶点集对应的边集,并根据每一顶点集及其对应的边集构建所述图数据集的子图。
根据本发明的一个实施例,在步骤S2中,将所述图数据集中的边划分为与每一顶点集对应的边集,其中,每个顶点集对应的边集是图数据集中指向该顶点集中每一顶点的所有边。
仍旧以图4中的示例为例,将映射处理后得到的如图4所示的图数据集中的边划分为与映射处理后的分区0、分区1对应的顶点集的边集。针对分区0对应的顶点集{0,1,2,3,4},其对应的边集为:顶点0指向顶点1的边(0,1),顶点3指向顶点0的边(3,0),顶点3指向顶点1的边(3,1),顶点5指向顶点2的边(5,2),顶点6指向顶点4的边(6,4),顶点9指向顶点4的边(9,4);针对分区1对应的顶点集{5,6,7,8,9},其对应的边集为:顶点0指向顶点8的边(0,8),顶点1指向顶点7的边(1,7),顶点2指向顶点7的边(2,7),顶点2指向顶点9的边(2,9),顶点3指向顶点5的边(3,5),顶点5指向顶点6的边(5,6)。按照分区0对应的顶点集及其对应的边集得到分区0对应的子图0,如图5(a)所示;按照分区1对应的顶点集及其对应的边集得到分区1对应的子图1,如图5(b)所示。
在步骤S3中,将步骤S2中得到的所有子图转化为稀疏压缩行存储格式。
根据本发明的一个实施例,所述步骤S3包括针对每个子图执行步骤S31-S35,下面详细说明每个步骤。
在步骤S31中,根据当前子图统计图数据集中每一顶点的出度,并基于其构建当前子图的偏置数组,所述偏置数组包括多个顺序编号的元素且元素的数量比图数据集中总的顶点数量多1,且偏置数组中的元素按编号顺序与图数据集的顶点编号顺序一一对应,最后一个元素对空,其中,每个元素用以记录其对应顶点之前的所有顶点在当前子图中的出度之和,最后一个元素用于记录图数据集中所有顶点在当前子图中的出度之和。以图5中的示例为例,在子图0中,顶点0的出度为1,顶点1的出度为0,顶点2的出度为0,顶点3的出度为2,顶点4的出度为0,顶点5的出度为1,顶点6的出度为2,顶点7的出度为0,顶点8的出度为0,顶点9的出度为1,由此可得到子图0对应的偏置数组为0,1,1,1,3,3,4,6,6,6,7;在子图1中,顶点0的出度为1,顶点1的出度为1,顶点2的出度为2,顶点3的出度为1,顶点4的出度为0,顶点5的出度为1,顶点6的出度为0,顶点7的出度为0,顶点8的出度为0,顶点9的出度为0,由此可得到子图1对应的偏置数组为0,1,2,4,4,5,5,6,6,6,6,6。结合子图0和子图1的偏置数组还能够得到映射处理后的图数据集对应的偏置数组为0,2,3,5,8,8,10,12,12,12,13。
在步骤S32中,记录当前子图中每一条边指向的目标顶点编号,并将目标顶点按照每一条边的源顶点编号排序,以获取当前子图的目标顶点数组。仍然以图5中的示例为例,在子图0中,边(0,1)的源顶点为0,目标顶点为1;边(3,0)的源顶点为3,目标顶点为0;边(3,1)的源顶点为3,目标顶点为1;边(5,2)的源顶点为5,目标顶点为2;边(6,3)的源顶点为6,目标顶点为3;边(6,4)的源顶点为6,目标顶点为4;边(9,4)的源顶点为9,目标顶点为4,由此可得到子图0对应的目标顶点数组为:1,0,1,2,3,4,4;在子图1中,边(0,8)的源顶点为0,目标顶点为8;边(1,7)的源顶点为7,目标顶点为7;边(2,7)的源顶点为2,目标顶点为7;边(2,9)的源顶点为2,目标顶点为9;边(3,5)的源顶点为3,目标顶点为5;边(5,6)的源顶点为5,目标顶点为6;由此可得到子图1对应的目标顶点数组为:8,7,7,9,5,6。需要说明的是,当一个源顶点发出多条边时,以目标顶点的编号进行排序,例如,边(3,0)的源顶点为3,目标顶点为0,边(3,1)的源顶点为3,目标顶点为1,即两条边的源顶点一样,源顶点3发出了多条边,在进行目标顶点数组中的目标顶点排序时,则按照目标顶点0、1的顺序将目标顶点进行排序,其他同理,此处不再赘述。结合子图0和子图1的偏置数组还能够得到映射处理后的图数据集对应的目标顶点数组为1,8,7,7,9,0,1,5,2,6,3,4,4。
在步骤S33中,记录当前子图中每一条边的权重,并将权重按照目标顶点数组的排序进行排序获得当前子图的权重数组,如果边上无权重,则忽略权重数组。以图5中的示例为例,子图0和子图1的边上无权重,此时忽略子图0和子图1的权重数组。反之,如果子图0和子图1的边上有权重,则将权重按照目标顶点数组的排序进行排序。
在步骤S34中,以当前子图的权重数组、偏置数组、目标顶点数组组成当前子图的稀疏压缩行存储格式。获得子图的稀疏压缩行表示之后可以计算子图在计算节点的空间占用量,由此可以配置计算节点中的缓存区大小。其中,子图的空间占用量包括子图拓扑所需的缓存区(Topo_buffer),图算法元数据(按照图算法对子图执行图计算任务得到的数据)所需的缓存区(metadata_buffer),计算节点间通信所需的缓存区(communication_buffer),计算所需的缓存区(compute_buffer):
Topo_buffer=|Vsub|*node_size+|Esub|*node_size+|Esub|*weight_size
compute/communication_buffer=metadata_buffer=|Vsub|*value_size
node_size表示每个顶点编号所占的大小,weight_size表示每条边的权重所占的大小(无权图中忽略),value_size表示每个元数据(按照图算法对子图执行图计算任务后得到的每个顶点的数据)所占的大小,|Vsub|表示对子图的顶点集取模,即子图顶点的数量,|Esub|表示对子图的边集取模,即子图边的数量。上述数值的大小在设定图算法时指定,比如pagerank算法中的pr值一般为double数据类型,则value_size为8字节;顶点编号一般采用unsigned long int数据类型,则node_size为4字节;权重一般为double或者int数据类型,则weight_size为8或者4字节。
在步骤S35中,按照预设的编码规则对步骤S34得到的所有稀疏压缩行存储格式的子图进行游程编码。根据本发明的一个实施例,所述预设的编码规则为:计算所有子图中边的数量与顶点数量的比值,将比值小于或等于计算节点数量的稀疏压缩行存储格式的子图进行游程编码。以图5中的示例为例,子图0中边与顶点数量的比值为7/5=1.4,此比值小于计算节点数量2,按照本发明的规则需要对子图0进行游程编码:将子图0的偏置数组按照分区拆分成2(计算节点数量或子图数量)份,那么此时子图的0的偏置数组为:0,1,1,1,3,3(子图0中顶点[0-4]对应的偏置数组)和4,6,6,6,7(子图0中顶点[5-9]对应的偏置数组);再按照划分后的偏置数组划分目标顶点数组和权重数组,此时子图0的目标顶点数组为:1,0,1和2,3,4,4;权重数组忽略,对拆分后的子图0的偏置数组以及目标顶点数组进行游程编码。子图1中边与顶点数量的比值为6/5=1.2,此比值小于计算节点数量2,按照本发明的规则需要对子图1进行游程编码:将子图1的偏置数组按照分区拆分成2(计算节点数量或子图数量)份,那么此时子图1的偏置数组为:0,1,2,4,5,5(子图1中顶点[0-4]对应的偏置数组)和6,6,6,6,6(子图1中顶点[5-9]对应的偏置数组);再按照划分后的偏置数组划分目标顶点数组和权重数组,此时子图1的目标顶点数组为:8,7,7,9,5和6;权重数组忽略,对拆分后的子图1的偏置数组以及目标顶点数组进行游程编码。需要说明的是,游程编码属于本领域公知的知识,此处不再赘述。
通过上述实施例可以看出,图数据集经过预处理之后变成了多个子图,根据本发明的一个实施例,采用本发明改进后的执行图计算任务的装置中的图加速器对这些子图进行图计算时,如图6所示,包括步骤T1-T3,下面对各个步骤进行详细的说明。
在步骤T1中,图加速器将接收到的所述中央处理器传输的所有子图分配给计算节点,其中,一个计算节点接收并处理一个子图。例如,以图3-图5所展示的示例为例,针对一个包括两个计算节点的图加速器(表示为计算节点0和计算节点1)将图数据集划分为子图0和子图1,在进行加速计算时,将子图0分配给计算节点0,子图1分配给计算节点1。
在步骤T2中,根据图计算任务确定每个计算节点的图算法以及图算法对应的计算任务。其中,每个计算节点执行计算任务时进行多次大迭代计算直至每个计算节点中的子图数据不再变化,其中,在每次大迭代计算中,每个计算节点同时执行多次小迭代,且每次小迭代中,每个计算节点同时执行下步骤:每个计算节点从其上游计算节点预取执行下一次小迭代所需的子图数据,并基于预取到的子图数据更新每个计算节点自身的子图数据,其中,上游计算节点中包括该上游计算节点上一次小迭代计算后自身的子图数据以及该上游计算节点在上一次大迭代计算中从其上游计算节点中预取得到的子图数据。其中,图计算任务为判断图数据集中每一顶点(个体)的重要程度,基于此可配置每个计算节点的图算法,根据本发明的一个实施例,将每个计算节点的图算法配置为PageRank算法,进一步地可将PageRank算法所对应的计算函数设为{v.next_pr+=u.pr/u.outdegree;},其中,pr表示上一次大迭代计算得到的数据,next_pr表示当前次大迭代正在计算的数据,u表示一条边的源顶点,v表示一条边的目标顶点,outdegree表示顶点的出度。仍旧以步骤T1中的示例为例,基于PageRank算法可确定计算节点0对应的计算任务是采用上一次大迭代计算得到的子图0和子图1的顶点数据([0-9])更新当前次大迭代计算中子图0的顶点数据([0-4]);计算节点1对应的计算任务是采用上一次大迭代计算得到的子图0和子图1的顶点数据([0-9])更新当前次大迭代计算中子图1中的顶点数据([5-9])。需要说明的是,在每一个计算节点中还配置有初始化函数,初始化函数在整个图计算任务中仅执行一次,用于在开始执行图计算任务时对子图的顶点赋初值。根据本发明的一个实施例,初始化函数为{pr[:]=1.0/|V|;next_pr[:]=0;},|V|表示对边取模,即边的数量,此时子图中每一顶点的初始值为1.0/|V|。
在步骤T3中,每个计算节点基于其所接收的子图按照步骤T2确定的图算法执行计算任务,以获取子图的目标数据。
根据本发明的一个实施例,在每次大迭代计算中,每个计算节点执行的小迭代次数等于子图数量。为了更好的理解图计算过程中的大迭代和小迭代,下面结合图7和8详细说明前述步骤T1的示例中具有两个计算节点的图加速器执行图计算任务的迭代过程,由于图计算节点只有两个,因此每次大迭代中的小迭代只有2次,分别称之为第0次小迭代和第1次小迭代。
如图7所示,其展示了计算节点0和计算节点1在每次大迭代计算中小迭代的计算过程,图中k表示当前次大迭代计算,k-1表示上一次大迭代计算;图8展示了每次小迭代的计算过程中计算节点0和计算节点1的子图顶点更新关系。
其中,在第k次大迭代计算中,计算节点0在执行第0次小迭代时,采用第k-1次大迭代计算得到的子图0的顶点数据([0-4])更新子图0的顶点数据([0-4]),由于图计算是基于顶点间的连接关系的,并且在子图0中顶点[0-4]指向顶点[0-4]的边有:顶点3指向顶点0的边(3,0)、顶点3指向顶点1的边(3,1)和顶点0指向顶点1的边(0,1),故只需用顶点3更新顶点0、1,用顶点0更新顶点1即可,同时计算节点0从上游计算节点1中预取第k-1次大迭代计算得到的子图1的顶点数据([5-9]);计算节点1在执行第0次小迭代时,采用第k-1次大迭代计算得到的子图1的顶点数据([5-9])更新子图1的顶点数据([5-9]),由于在子图1中顶点[5-9]指向顶点[5-9]的边只有顶点5指向顶点6的边(5,6),不存在其他的边,故只需用顶点5更新顶点6即可,同时计算节点1从上游计算节点0中预取第k-1次大迭代计算得到的子图0的顶点数据([0-4])。
同理,在第k次大迭代计算中,计算节点0在执行第1次小迭代时,采用第k-1次大迭代计算得到的子图1的顶点数据([5-9])更新子图0的顶点数据([0-4]),由于在子图0中顶点[5-9]指向顶点[0-4]的边有:顶点6指向顶点3的边(6,3)、顶点6指向顶点4的边(6,4)、顶点5指向顶点2的边(5,2)和顶点9指向顶点4的边(9,4),故只需用顶点6更新顶点3、4,用顶点9更新顶点4,用顶点5更新顶点2即可;计算节点1在执行第1次小迭代时,采用第k-1次大迭代计算得到的子图0的顶点数据([0-4])更新子图1的顶点数据([5-9]),由于在子图1中顶点[0-4]指向顶点[5-9]的边有:顶点0指向顶点8的边(0,8)、顶点1指向顶点7的边(1,7)、顶点2指向顶点7的边(2,7)、顶点2指向顶点9的边(2,9)和顶点3指向顶点5的边(3,5),故只需用顶点0更新顶点8,用顶点1更新顶点7,用顶点2更新顶点7,用顶点2更新顶点9和用顶点3更新顶点5即可。需要说明的是,在第k次大迭代的第1次小迭代中,计算节点0和1仅负责计算,无需预取数据,即在N-1(N表示计算节点数量或子图数量)次小迭代中,每一计算节点仅负责计算,无需从其他计算节点中预取数据。
上述内容以计算节点数量为2时的一次大迭代计算过程为例进行了详细的说明,当存在两个以上计算节点时执行一次大迭代计算过程与前面示例中的两个计算节点的过程类似。如图9所示,假设图加速器有4个计算节点时(分别表示为计算节点1、2、3、4,那么对应的子图也为子图1、2、3、4)执行图计算的迭代过程,其中,图9(a)展示了4个计算节点执行大迭代计算过程时子图数据在计算节点中的轮换传输的过程,每个计算节点获取其对应子图在上一次大迭代计算后的数据,并通过多次预取以及小迭代获得其他子图在上一次大迭代之后的数据;图9(b)展示了存在4个计算节点时,每个计算节点更新其自身子图数据需要的子图数据,此图中,在执行当前次大迭代计算过程中,每一计算节点中的子图均需要用上一次大迭代计算得到的所有子图对其自身进行更新,但是每一计算节点中的存储空间是有限的,所以在执行当前次大迭代计算时,上一次大迭代计算得到的子图数据会如按照图9(a)所展示的那样在各个计算节点中不断轮转,直至所有计算节点完成当前次大迭代计算。
结合前述实施例内容可知,当存在两个以上的计算节点(假设为N个)时,每个计算节点进行多次大迭代计算,且一次大迭代计算中包括N次小迭代(N表示子图数量或计算节点数量),如图10所示,每次大迭代中,在第0到N-2次小迭代中,每个计算节点利用上一次大迭代计算得到的子图数据更新本次大迭代计算的子图数据,且每个计算节点从其上游计算节点接收该上游计算节点传输的上一次大迭代计算的子图数据,在所有计算节点完成计算和传输任务后,进入到下一次小迭代;在第N-1次小迭代时,每个计算节点仅执行计算任务,无须传输数据;完成N次小迭代后,进入下一次大迭代计算。具体地,每次大迭代中,在前N-2次小迭代中,计算节点i在第j次小迭代时使用“计算节点(i+j)%N在上一次大迭代计算得到的子图数据”更新子图i的数据,其中,“计算节点(i+j)%N在上一次大迭代计算得到的子图数据”表示在之前的多次小迭代中,计算节点i的上游计算节点从其对应的上游节点中获取的上一次大迭代中的其他子图数据以及计算节点i的上游计算节点自身在上一次大迭代计算后得到的子图数据,或者该计算节点i自身在上一次大迭代计算后得到的子图数据,由于计算节点是环形的,通过多次的预取,下游节点可以从其上游节点的上游节点以及更往前的上游节点获取在上一次大迭代中的子图数据,同时将该计算节点i存储的“计算节点(i+j)%N在上一次大迭代计算得到的子图数据”传递给计算节点(i+1)%N,同时计算节点i接收“计算节点(i-1)%N传输的在上一次大迭代计算得到的子图数据”;在第N-1次小迭代中,每一个计算节点仅负责计算,无需通信。需要说明的是,当每一计算节点中子图的数据不再发生变化时结束图计算任务,并将每一计算节点中的子图数据发送给中央处理器。
本发明的有益效果在于:相较于之前的图加速器设计,本发明提出的装置可以在不带来冗余计算的同时消除对图计算任务性能的影响更大的跨节点间同步操作;同时根据特定的执行流,使不同的计算节点间的通信规则化,使得利用计算时间来掩盖通信时间成为可能,以此降低甚至消除多计算节点间的通信影响;同时基于稀疏压缩行存储和游程编码的压缩方式使得在处理相同规模的图数据集时,图加速器的内存占用更低;基于环状的计算节点连接架构也使得该架构的扩展性可以得到保障。
需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以并发执行,甚至改变顺序,只要能够实现所需要的功能即可。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (13)
1.一种用于执行图计算任务的装置,其特征在于,所述装置包括:
中央处理器,用于对待进行图计算的图数据集进行预处理以按照图加速器的计算节点数量将其划分为与计算节点数量一致的多个子图;
图加速器,其包括多个计算节点,用于接收并处理中央处理器传输的所有子图,每个计算节点处理一个子图的计算并从其他计算节点获取其他计算节点的子图数据以更新自身处理的子图,其中:所述计算节点由一个或多个存内计算器件组成,所有计算节点采用环状拓扑结构依次相联,且计算节点间的数据传输模式为单向传输,下游计算节点从上游计算节点预取数据。
2.根据权利要求1所述的装置,其特征在于,所述图加速器被配置为按照如下步骤对中央处理器传输的所有子图进行图计算:
T1、将接收到的所述中央处理器传输的所有子图分配给计算节点,其中,一个计算节点接收并处理一个子图;
T2、根据图计算任务确定每个计算节点的图算法以及图算法对应的计算任务;
T3、每个计算节点基于其所接收的子图按照步骤T2确定的图算法执行计算任务,以获取子图的目标数据。
3.根据权利要求2所述的装置,其特征在于,在所述步骤T3中,每个计算节点执行计算任务时进行多次大迭代计算直至每个计算节点中的子图数据不再变化,其中,在每次大迭代计算中,每个计算节点同时执行多次小迭代,且每次小迭代中,每个计算节点同时执行下步骤:
每个计算节点从其上游计算节点预取执行下一次小迭代所需的子图数据,并基于预取到的子图数据更新每个计算节点自身的子图数据,其中,上游计算节点中包括该上游计算节点上一次小迭代计算后自身的子图数据以及该上游计算节点在上一次大迭代计算中从其上游计算节点中预取得到的子图数据。
4.根据权利要求3所述的装置,其特征在于,在每次大迭代计算中,每个计算节点执行的小迭代次数等于子图数量。
5.一种应用于权利要求1-4所述装置的图数据集预处理方法,所述图数据集中包括多个顶点以及多条连接任意两顶点的边,其特征在于,所述方法包括如下步骤:
S1、对所述图数据集中的顶点进行编号并按照预设的分区规则将顶点划分顶点集;
S2、按照步骤S1得到的每一顶点集将所述图数据集中的边划分为与每一顶点集对应的边集,并根据每一顶点集及其对应的边集构建所述图数据集的子图;
S3、将步骤S2中得到的所有子图转化为稀疏压缩行存储格式。
6.根据权利要求5所述的方法,其特征在于,所述步骤S1包括:
S11、对所述图数据集中的顶点进行连续编号,并将编号后的顶点按照预设的分区规则划分为互不相交的顶点集,其中,属于同一分区的所有顶点组成一个顶点集,每一顶点集中包括多个编号离散的顶点;
S12、采用哈希映射将步骤S11得到的每一顶点集中编号离散的顶点映射为编号连续的顶点。
7.根据权利要求6所述的方法,其特征在于,所述预设的分区规则为:
SubSetID[i]=i%N,i=0,1,…
其中,i表示顶点编号,N表示计算节点数量,SubSettID[i]表示顶点i所属的分区。
8.根据权利要求7所述的方法,其特征在于,在步骤S2中,将所述图数据集中的边划分为与每一顶点集对应的边集,其中,每个顶点集对应的边集是图数据集中指向该顶点集中每一顶点的所有边。
9.根据权利要求8所述的方法,其特征在于,所述步骤S3包括针对每个子图执行如下步骤:
S31、根据当前子图统计图数据集中每一顶点的出度,并基于其构建当前子图的偏置数组,所述偏置数组包括多个顺序编号的元素且元素的数量比图数据集中总的顶点数量多1,且偏置数组中的元素按编号顺序与图数据集的顶点编号顺序一一对应,最后一个元素对空,其中,每个元素用以记录其对应顶点之前的所有顶点在当前子图中的出度之和,最后一个元素用于记录图数据集中所有顶点在当前子图中的出度之和;
S32、记录当前子图中每一条边指向的目标顶点编号,并将目标顶点按照每一条边的源顶点编号排序,以获取当前子图的目标顶点数组;
S33、记录当前子图中每一条边的权重,并将权重按照目标顶点数组的排序进行排序获得当前子图的权重数组;
S34、以当前子图的权重数组、偏置数组、目标顶点数组组成当前子图的稀疏压缩行存储格式;
S35、按照预设的编码规则对步骤S34得到的所有稀疏压缩行存储格式的子图进行游程编码。
10.根据权利要求9所述的方法,其特征在于,所述预设的编码规则为:
计算所有子图中边的数量与顶点数量的比值,将比值小于或等于计算节点数量的稀疏压缩行存储格式的子图进行游程编码。
11.一种采用权利要求1-4所述装置的图计算方法,其特征在于,所述方法包括:
P1、获取待处理图数据集;
P2、中央处理采用如权利要求5-10所述的方法对步骤P1获取的待处理图数据集进行预处理以将其划分为多个子图;
P3、图加速器对步骤P2预处理后得到的子图进行图计算。
12.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序可被处理器执行以实现权利要求5-10、11任一所述方法的步骤。
13.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述电子设备实现如权利要求5-10、11中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211500779.4A CN116128701A (zh) | 2022-11-28 | 2022-11-28 | 一种用于执行图计算任务的装置、图计算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211500779.4A CN116128701A (zh) | 2022-11-28 | 2022-11-28 | 一种用于执行图计算任务的装置、图计算方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116128701A true CN116128701A (zh) | 2023-05-16 |
Family
ID=86306996
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211500779.4A Pending CN116128701A (zh) | 2022-11-28 | 2022-11-28 | 一种用于执行图计算任务的装置、图计算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116128701A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116795519A (zh) * | 2023-08-25 | 2023-09-22 | 江苏盖睿健康科技有限公司 | 一种基于互联网的远程智能调测方法和系统 |
-
2022
- 2022-11-28 CN CN202211500779.4A patent/CN116128701A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116795519A (zh) * | 2023-08-25 | 2023-09-22 | 江苏盖睿健康科技有限公司 | 一种基于互联网的远程智能调测方法和系统 |
CN116795519B (zh) * | 2023-08-25 | 2023-12-05 | 江苏盖睿健康科技有限公司 | 一种基于互联网的远程智能调测方法和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Plimpton et al. | Mapreduce in MPI for large-scale graph algorithms | |
Mittal et al. | A survey of deep learning on cpus: opportunities and co-optimizations | |
Ediger et al. | Massive streaming data analytics: A case study with clustering coefficients | |
Checconi et al. | Breaking the speed and scalability barriers for graph exploration on distributed-memory machines | |
Khoram et al. | Accelerating graph analytics by co-optimizing storage and access on an FPGA-HMC platform | |
CN108874952B (zh) | 一种基于分布式日志的最大频繁序列模式挖掘方法 | |
CN103914528B (zh) | 一种关联分析算法的并行化方法 | |
US11816574B2 (en) | Structured pruning for machine learning model | |
Bender et al. | Cache-adaptive algorithms | |
CN103995827B (zh) | MapReduce计算框架中的高性能排序方法 | |
CN113095022A (zh) | 门级电路的并行仿真处理方法、计算机可读存储介质 | |
CN116128701A (zh) | 一种用于执行图计算任务的装置、图计算方法 | |
Xu | Research and implementation of improved random forest algorithm based on Spark | |
He et al. | Efficient parallel A* search on multi-GPU system | |
US20200104425A1 (en) | Techniques for lossless and lossy large-scale graph summarization | |
Zhang et al. | Optimizing execution for pipelined‐based distributed deep learning in a heterogeneously networked GPU cluster | |
Sun et al. | GraphMP: I/O-efficient big graph analytics on a single commodity machine | |
WO2022223052A1 (zh) | 加速器、计算机系统和方法 | |
CN116303219A (zh) | 一种网格文件的获取方法、装置及电子设备 | |
CN104793955A (zh) | 分布式向量计算框架 | |
WO2015143708A1 (zh) | 后缀数组的构造方法及装置 | |
CN114730295A (zh) | 基于模式的高速缓存块压缩 | |
Yu et al. | Accelerated Synchronous Model Parallelism Using Cooperative Process for Training Compute-Intensive Models | |
WO2010013320A1 (ja) | 表形式データを操作する方法、分散メモリ型マルチプロセッサ、及び、プログラム | |
CN117435855B (zh) | 用于进行卷积运算的方法、电子设备和存储介质 |
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 |