CN112000611A - 图数据划分方法、处理方法及电子设备 - Google Patents
图数据划分方法、处理方法及电子设备 Download PDFInfo
- Publication number
- CN112000611A CN112000611A CN202010859145.2A CN202010859145A CN112000611A CN 112000611 A CN112000611 A CN 112000611A CN 202010859145 A CN202010859145 A CN 202010859145A CN 112000611 A CN112000611 A CN 112000611A
- Authority
- CN
- China
- Prior art keywords
- graph data
- target
- subgraph
- size
- subgraphs
- 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
- 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/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/781—On-chip cache; Off-chip 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
- G06F15/7842—Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
- G06F15/7846—On-chip cache and off-chip main memory
-
- 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
-
- 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
技术领域
本发明涉及图数据技术领域,具体涉及图数据处理方法、装置及电子设备。
背景技术
在数据科学、机器学习、社交网络、路线规划和基因组学等广泛的应用中对数据分析的需求不断增长,反映不同实体之间内在关系的大规模图数据处理在众多领域受到越来越多的关注。因此,从大规模图数据中挖掘有用信息,是实现这些应用的目的和基础。
由于问题规模的不断扩展,图数据的体量也急剧增长,对图处理在性能和能源效率方面都构成了巨大的挑战。因此,大规模图数据处理的关键问题是提供高带宽的数据访问,加快图处理速度。现有技术中一般采用的是图数据处理系统进行图数据的处理的,该系统包括主机以及多个图数据处理器。其中,主机依据图数据处理器的数量对图数据进行划分,再将划分得到的子图分发给各个图数据处理器进行并行处理,以提高图数据处理的速度。然而,由于图数据中存在少部分顶点连接大部分边,若按照上述方式进行图数据处理就会使得不同顶点的计算工作量会有较大的差距,即各个图数据处理器的计算工作量差异较大,导致严重的工作负载不平衡问题和通信开销,进而导致图数据的处理效率较低。
发明内容
有鉴于此,本发明实施例提供了一种图数据处理方法、装置及电子设备,以解决图数据的处理效率较低的问题。
根据第一方面,本发明实施例提供了一种图数据划分方法,包括:
获取目标图数据、所述目标图数据的大小以及图数据处理器的内存大小;
利用所述目标图数据的大小以及所述图数据处理器的内存大小,确定所述目标图数据对应的目标子图的数量;
基于所述目标子图的数量,对所述目标图数据进行划分;
根据各个所述目标子图的大小以及所述图数据处理器的内存大小,调整所述目标子图的数量;
基于调整后的所述目标子图的数量,对所述目标图数据进行划分。
本发明实施例提供的图数据划分方法,利用划分后得到的目标子图的大小与图数据处理器的内存大小,调整实际划分的目标子图的数量;即,通过平衡每个目标子图的大小,确定目标子图的数量,使得划分得到的目标子图均能够被图数据处理器处理,可以实现负载均衡,提高了后续图数据处理的效率。
结合第一方面,在第一方面第一实施方式中,采用如下公式计算得到所述目标子图的数量:
P=sizeof(G)/mem_size*C1
其中,P为所述目标子图的数量,G为所述目标图数据,sizeof(G)为所述目标图数据的大小,mem_size为所述图数据处理器的内存大小,为常数且C1>1。
本发明实施例提供的图数据划分方法,通过在目标图数据的大小与图数据处理器的内存大小的比值的基础上乘以一个常数,目的在于减少后续划分得到的目标子图的大小,使得每个目标子图均能够分发至图数据处理器中,以提高后续图数据处理器的处理效率。
结合第一方面或第一方面第一实施方式,在第一方面第二实施方式中,所述根据各个所述目标子图的大小以及各个所述图数据处理器的内存大小,调整所述目标子图的数量,包括:
遍历所有所述目标子图,判断所述目标子图中是否存在大小大于所述图数据处理器的内存大小的目标子图;
当所述目标子图中存在大小大于所述图数据处理器的内存大小的目标子图时,将所述目标子图的数量调整至所述目标子图的数量的预设倍数;其中,所述预设倍数大于1。
本发明实施例提供的图数据划分方法,在目标子图中存在大小大于所述图数据处理器的内存大小的目标子图时,表示此时划分得到的目标子图过大,需要缩小目标子图的大小,那么相应地就需要增大目标子图的数量;即,通过增大目标子图的数量以减小目标子图的大小,以保证每个目标子图均能够分发至图数据处理器中进行处理,提高了后续图数据处理器的处理效率。
结合第一方面,在第一方面第三实施方式中,所述基于所述目标子图的数量,对所述目标图数据进行划分,包括:
获取所述目标图数据中的所有顶点;
利用所述目标子图的数量对所有所述顶点进行划分,得到与所述目标子图对应的顶点子集;
确定所述顶点子集中各个所述顶点对应的边,得到所述目标子图。
根据第二方面,本发明实施例还提供了一种图数据处理方法,包括:
根据本发明第一方面,或第一方面任一项实施方式中所述的图数据划分方法对目标图数据进行划分,得到目标子图;
将划分得到的所述目标子图分发给至少一个所述图数据处理器进行处理。
本发明实施例提供的图数据处理方法,利用划分后得到的目标子图的大小与图数据处理器的内存大小,调整实际划分的目标子图的数量;即,通过平衡每个目标子图的大小,确定目标子图的数量,使得划分得到的目标子图均能够被图数据处理器处理,可以实现负载均衡,提高了图数据处理的效率。
结合第二方面,在第二方面第一实施方式中,所述将划分得到的所述目标子图分发给至少一个所述图数据处理器进行处理,包括:
将划分得到的所述目标子图从磁盘存入内存的缓存队列中;
提取所述缓存队列中的目标子图作为当前子图分发至所述图数据处理器;
遍历所述当前子图的所有顶点,确定所述当前子图中出度和入度最多的顶点;
将所述当前子图中出度和入度最多的顶点存入所述内存的图数据预取区域中,以使得所述图数据处理器提取所述图数据预取区域中的数据。
本发明实施例提供的图数据处理方法,在图数据处理过程中通过图数据预取,将当前子图出度和入度最多的顶点存入内存的图数据预取区域中,减少了图数据处理器在执行图数据处理算法时从磁盘读取次数,从而加快了图数据处理速度。
结合第二方面第一实施方式,在第二方面第二实施方式中,所述将划分得到的所述目标子图分发给至少一个所述图数据处理器进行处理,还包括:
获取所述当前子图正在被执行的当前顶点;
将所述当前顶点相连的边存入所述内存的图数据预取区域中。
本发明实施例提供的图数据处理方法,在图数据处理过程中通过感知当前正在被执行的顶点,将当前顶点相连的边存入内存的图数据预取区域中;即,将可能要用到的图数据预先上传至内存中,从而减少图数据执行时对磁盘数据的访问,减少I/O数据访问等待开销,进而提高了图数据的处理速度。
结合第二方面或第二方面任一项实施方式,在第二方面第三实施方式中,所述将划分得到的所述目标子图分发给至少一个所述图数据处理器进行处理,还包括:
接收所述图数据处理器的子图请求;
从所述缓存队列中提取新的目标子图;
基于所述新的目标子图与已分发的目标子图的关系,确定所述新的目标子图对应的图数据处理器;
将所述新的目标子图分发给确定出的图数据处理器。
本发明实施例提供的图数据处理方法,通过感知新的目标子图与已分发的目标子图的关系,将新的目标子图分发至数据最相关的图数据处理器中,从而减少了图数据处理器与主内存以及图数据处理器之间额外数据访问带来的通信开销,提高了图数据的处理速度。
根据第三方面,本发明实施例提供了一种电子设备,包括:存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行第一方面或者第一方面的任意一种实施方式中所述的图数据划分方法,或执行第二方面或者第二方面的任意一种实施方式中所述的图数据处理方法。
根据第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行第一方面或者第一方面的任意一种实施方式中所述的图数据划分方法,或执行第二方面或者第二方面的任意一种实施方式中所述的图数据处理方法。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本发明实施例中图数据处理系统的结构框图;
图2示出了本发明实施例中图数据处理系统的存储结构示意图;
图3是根据本发明实施例的图数据划分方法的流程图;
图4是根据本发明实施例的图数据划分方法的流程图;
图5是根据本发明实施例的目标子图的分割示意图;
图6是根据本发明实施例的图数据处理方法的流程图;
图7是根据本发明实施例的图数据处理方法的流程图;
图8是根据本发明实施例的图数据划分装置的结构框图;
图9是根据本发明实施例的图数据处理装置的结构框图;
图10是本发明实施例提供的电子设备的硬件结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1示出了本发明实施例中图数据处理系统的一种可选的结构示意图,如图1所示,该系统包括主机以及至少一个图数据处理器。其中,该系统中图数据处理器的数量可以根据实际情况进行相应的设置,在此并不做任何限制。
主机用于对目标图数据进行划分得到若干目标子图,并将目标子图分发给图数据处理器进行图数据的处理。其中,为了平衡每个目标子图的大小,需要选择合适的目标子图的数量,使得任何一个目标子图都可以完整地上载至图数据处理器中。基于此,本发明实施例提供了一种可自适应子图分割的方法,具体将在下文中进行详细描述。
主机在划分得到目标子图之后,可以利用缓存队列对目标子图进行存储,并依次将缓存队列中的目标子图分发给图数据处理器。在图数据处理器中可以划分出两个区域,一个用于存储将要被处理的目标子图,另一个用于存储正在被处理的目标子图。
在本实施例的一些可选实施方式中,图数据处理器可以采用如图1所述的FPGA开发板。主机作为主控制节点,用于分发子图任务和接收处理结果,FPGA是实际处理图算法的计算节点。完整的图数据首先在主机中进行预处理,将分割后的多个子图通过总线(如PCI-e)、定向光纤连接或其他可用结构发送至FPGA片外存储上,然后再上载至片上内存由处理单元完成图处理算法。多块FPGA开发板可以实现同时处理多个子图问题,多块开发板之间可以实现通信。
在本实施例的另一些可选实施方式中,该系统的存储结构可以采用如图2所示的存储结构,即磁盘-主内存-片外存储-片上内存的多级存储结构,该存储结构能够减少数据访问时的通信开销,加快访问速度。
进一步地,主机在磁盘内进行目标图数据的划分得到若干目标子图,再将目标子图存储在主内存的缓存队列中;FPGA的片外存储用于存储要被处理的目标子图,片上内存用于存储正在被处理的目标子图。
根据本发明实施例,提供了一种图数据划分方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在本实施例中提供了一种图数据划分方法,可用于上述的主机,如电脑、平板电脑等,图3是根据本发明实施例的图数据划分方法的流程图,如图3所示,该流程包括如下步骤:
S11,获取目标图数据、目标图数据的大小以及图数据处理器的内存大小。
目标图数据可以是主机从外界获取到的,也可以是存储在主机中的。主机在获取到目标图数据之后,可以对目标图数据进行分析,确定出目标图数据的大小;当然,目标图数据的大小也可以是直接从外界获取到,或存储在主机中的。
对于图1所示的图数据处理系统而言,各个图数据处理器的内存大小可以相同,也可以不同。此处获取到的图数据处理器的内存大小可以是所有图数据处理器中的最小内存,也可以是所有图数据处理器的平均内存等等。
S12,利用目标图数据的大小以及图数据处理器的内存大小,确定目标图数据对应的目标子图的数量。
图数据处理器是用于对接收到的目标子图进行分析处理的,那么对于目标子图而言,要保证其能够存入图数据处理器中;即,目标子图的大小要小于或等于图数据处理器的内存大小。一旦目标子图的大小大于图数据处理器的大小,将会导致目标子图无法存入图数据处理器中。
因此,主机在S11中获取到目标图数据的大小以及图数据处理器的内存大小之后,可以直接计算目标图数据的大小与图数据处理器的内存的比值,确定目标子图的数量;也可以是在比值的基础上乘以相应的数值,得到目标子图的数量。关于该步骤具体将在下文中进行详细描述。
S13,基于目标子图的数量,对目标图数据进行划分。
主机在获取到目标子图的数量之后,就可以对目标图数据进行划分。具体的划分方式可以是针对目标图数据的顶点进行划分,也可以是随机划分等等。在此对目标图数据的划分方法并不做任何限制。
S14,根据各个目标子图的大小以及图数据处理器的内存大小,调整目标子图的数量。
主机在划分得到各个目标子图之后,将目标子图的大小与图数据处理器的内存大小进行比较,以确定是否需要调整目标子图的数量。当需要对目标子图的数量进行调整时,可以在S12中得到的目标子图的数量的基础上乘以一定的倍数,得到调整后的目标子图的数量。
S15,基于调整后的目标子图的数量,对目标图数据进行划分。
主机在得到调整后的目标子图的数量之后,可以再次对目标图数据进行划分,得到目标子图。同样地,主机在得到目标子图之后,可以再次执行S14以确定是否需要再次调整目标子图的数量,并基于调整后的目标子图的数量对目标图数据进行划分。
本实施例提供的图数据划分方法,利用划分后得到的目标子图的大小与图数据处理器的内存大小,调整实际划分的目标子图的数量;即,通过平衡每个目标子图的大小,确定目标子图的数量,使得划分得到的目标子图均能够被图数据处理器处理,可以实现负载均衡,提高了后续图数据处理的效率。
在本实施例中提供了一种图数据划分方法,可用于上述的主机,如电脑、平板电脑等,图4是根据本发明实施例的图数据划分方法的流程图,如图4所示,该流程包括如下步骤:
S21,获取目标图数据、目标图数据的大小以及图数据处理器的内存大小。
详细请参见图3所示实施例的S11,在此不再赘述。
S22,利用目标图数据的大小以及图数据处理器的内存大小,确定目标图数据对应的目标子图的数量。
采用如下公式计算得到所述目标子图的数量:
P=sizeof(G)/mem_size*C1
其中,P为所述目标子图的数量,G为所述目标图数据,sizeof(G)为所述目标图数据的大小,mem_size为所述图数据处理器的内存大小,为常数且C1>1。
因为需要划分的目标子图大小并不是完全一样的,如果不乘常数的话,每个片上内存只有大小一致的情况下才能被完整的存入片上内存,乘以常数是为了缩小每个子图的大小,从而能够实现每个子图能被放置到内存中。例如,C1可以是1.5、2、2.5或3等等。
S23,基于目标子图的数量,对目标图数据进行划分。
具体地,上述S23包括如下步骤:
S231,获取目标图数据中的所有顶点。
主机遍历目标图数据中的所有顶点,得到所有顶点的集合,以及与各个顶点相连的边。
S232,利用目标子图的数量对所有顶点进行划分,得到与目标子图对应的顶点子集。
主机在上述S22中得到目标子图的数量,记为P。主机可以统计S231中获取到的所有顶点的个数并对各个顶点进行编号,将所有顶点划分为P份,得到P个顶点子集。例如,顶点1-5属于第一个顶点子集,顶点6-10属于第二个顶点子集,依次类推。
S233,确定顶点子集中各个顶点对应的边,得到目标子图。
在得到与目标子图对应的顶点子集之后,遍历各个顶点子集中的各个顶点,确定与各个顶点相连的边,从而得到目标子图。
例如,在本实施例中采用基于interval-shard模式分割子图。其分割过程为:将图G=(V,E)的顶点V分成P个不相交的区间(interval),每个interval中包含最多|V|/P个顶点;对于每个interval,对应关联一个分片(shard),它存储以该interval中所有顶点为目标顶点的边。因此,对原始完整图分割可产生P个顶点集合和边集合:
Intervals={Ij|0≤j<P}
Shards={Sj|0≤j<P}
图5为基于interval-shard子图分割示意图。
S24,根据各个目标子图的大小以及图数据处理器的内存大小,调整目标子图的数量。
具体地,上述S24包括如下步骤:
S241,遍历所有目标子图,判断目标子图中是否存在大小大于图数据处理器的内存大小的目标子图。
主机在划分得到各个目标子图之后,可以遍历所有目标子图得到目标子图的大小。判断是否存在大小大于图数据处理器的内存大小的目标子图,当目标子图中存在大小大于图数据处理器的内存大小的目标子图时,执行S242;否则,表示划分结束得到目标子图。
S242,将目标子图的数量调整至目标子图的数量的预设倍数。
其中,所述预设倍数大于1。
当存在大小大于图数据处理器的内存大小的目标子图时,调整后的目标子图的数量为P*C2,C2为所述的预设倍数。其中,C2可以是1.5,2等等。其中,1.5相当于是一个折中的选择,不希望子图数量扩充的太大,也不希望子图数量扩充的太小导致重复划分子图操作。
S25,基于调整后的目标子图的数量,对目标图数据进行划分。
详细请参见图3所示实施例的S15,在此不再赘述。
本实施例提供的图数据划分方法,在目标子图中存在大小大于所述图数据处理器的内存大小的目标子图时,表示此时划分得到的目标子图过大,需要缩小目标子图的大小,那么相应地就需要增大目标子图的数量;即,通过增大目标子图的数量以减小目标子图的大小,以保证每个目标子图均能够分发至图数据处理器中进行处理,提高了后续图数据处理器的处理效率。
根据本发明实施例,提供了一种图数据划分方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在本实施例中提供了一种图数据处理方法,可用于上述的主机,如电脑、平板电脑等,图6是根据本发明实施例的图数据划分方法的流程图,如图6所示,该流程包括如下步骤:
S31,根据上述实施例中所述的图数据划分方法对目标图数据进行划分,得到目标子图。
详细请参见图3或图4所示实施例的相关描述,在此不再赘述。
S32,将划分得到的目标子图分发给至少一个图数据处理器进行处理。
主机在得到若干目标子图之后,可以依据负载均衡原则分发目标子图;也可以依据新的目标子图与已分发的目标子图的顶点和边的依赖关系,进行目标子图的分发。具体将在下文中对该步骤进行详细描述。
本实施例提供的图数据处理方法,利用划分后得到的目标子图的大小与图数据处理器的内存大小,调整实际划分的目标子图的数量;即,通过平衡每个目标子图的大小,确定目标子图的数量,使得划分得到的目标子图均能够被图数据处理器处理,可以实现负载均衡,提高了图数据处理的效率。
在本实施例中提供了一种图数据处理方法,可用于上述的主机,如电脑、平板电脑等,图7是根据本发明实施例的图数据划分方法的流程图,如图7所示,该流程包括如下步骤:
S41,根据上述实施例中所述的图数据划分方法对目标图数据进行划分,得到目标子图。
详细请参见图6所示实施例的S31,在此不再赘述。
S42,将划分得到的目标子图分发给至少一个图数据处理器进行处理。
具体地,上述S42包括如下步骤:
S421,将划分得到的目标子图从磁盘存入内存的缓存队列中。
主机在磁盘中对目标图数据进行划分得到目标子图,再将得到的目标子图存入内存的缓存队列中。
在主机的主内存中设置缓存队列,用于缓存从磁盘中读入的目标子图,记缓存队列的容量为L:
L=MemFPGA×NFPGA×c
其中,MemFPGA为FPGA片上内存的大小,NFPGA为FPGA开发板数量,c为正整数,具体可以根据实际主内存的大小进行设置。当主内存空余内存空间富余,则可以增大c,使磁盘中的更多目标子图可以被预先上载至缓存队列中,加快速度。
S422,提取缓存队列中的目标子图作为当前子图分发至图数据处理器。
主机从缓存队列中提取出目标子图将其作为当前子图分发至图数据处理器中。
S423,遍历当前子图的所有顶点,确定当前子图中出度和入度最多的顶点。
主机在提取出当前子图之后,可以遍历当前子图的所有顶点,确定当前子图中出度最多的顶点和入度最多的顶点。
S424,将当前子图中出度和入度最多的顶点存入内存的图数据预取区域中,以使得图数据处理器提取图数据预取区域中的数据。
主机在感知当前子图中出度最多的顶点和入度最多的顶点之后,可以将其存入内存的图数据预取区域中,以使得图数据处理器在图数据处理过程中可以直接从主机的图数据预取区域中提取数据,而不需要再去访问主机的磁盘。
由于原始的图数据很大,不可能将全部的图数据上载至主内存中,当要处理后续子图,或者需要访问某个子图中的数据时,需要从磁盘中读取对应子图。
S425,获取当前子图正在被执行的当前顶点。
进一步地,主机通过与图数据处理器进行通信,确定当前子图正在被执行的当前顶点。
S426,将当前顶点相连的边存入内存的图数据预取区域中。
各个子图由目标顶点集合和源顶点集合决定(每个集合为一个interval),所以子图中存储的边并不是子图中所有顶点的边,只是部分边。因此,主机将当前顶点相连的边存入内存的图数据预取区域中,以便于图数据处理器直接从主机的主内存的图数据预取区域中读取数据。
通过图数据预取将可能要被访问的图数据(顶点和边)预先从磁盘读取到内存中,当FPGA执行需要这些顶点和边时,可以实现快速访问。为此,在内存中设置了子图数据预取区域,并设计了执行感知的图数据预取算法,即在图处理过程中,能感知当前正在被执行的顶点,并根据与此顶点依赖程度预取其他顶点和边,减少图数据处理器在执行图处理算法时从磁盘的读取次数,从而加快处理速度。
本实施例提供的图数据处理方法,在图数据处理过程中通过图数据预取,将当前子图出度和入度最多的顶点以及当前顶点相连的边存入内存的图数据预取区域中,减少了图数据处理器在执行图数据处理算法时从磁盘读取次数,减少I/O数据访问等待开销,从而加快了图数据处理速度。
作为本实施例的一种可选实施方式,上述S42还包括如下步骤:
(1)接收图数据处理器的子图请求。
图处理处理器在一个目标子图处理完成之后,就会向主机发送子图请求,以请求主机再次分发目标子图。
(2)从缓存队列中提取新的目标子图。
主机在接收到子图请求之后,从缓存队列中提取新的目标子图。
(3)基于新的目标子图与已分发的目标子图的关系,确定新的目标子图对应的图数据处理器。
将子图缓存队列中新的子图发送至FPGA开发板,并且该新子图中边和顶点与所调度FPGA中已有边和顶点依赖程度最高,即根据数据位置感知的调度策略,确定新的目标子图对应的图数据处理器。
(4)将新的目标子图分发给确定出的图数据处理器。
主机将新的目标子图分发至数据最相关的FPGA开发板上,从而减少FPGA与主内存间及FPGA之间额外数据访问所带来通信开销。
通过感知新的目标子图与已分发的目标子图的关系,将新的目标子图分发至数据最相关的图数据处理器中,从而减少了图数据处理器与主内存以及图数据处理器之间额外数据访问带来的通信开销,提高了图数据的处理速度。
在本实施例中还提供了一种图数据划分装置,或图数据处理装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
本实施例提供一种图数据划分装置,如图8所示,包括:
第一获取模块51,用于获取目标图数据、所述目标图数据的大小以及图数据处理器的内存大小;
确定模块52,用于利用所述目标图数据的大小以及所述图数据处理器的内存大小,确定所述目标图数据对应的目标子图的数量;
第一划分模块53,用于基于所述目标子图的数量,对所述目标图数据进行划分;
调整模块54,用于根据各个所述目标子图的大小以及所述图数据处理器的内存大小,调整所述目标子图的数量;
第二划分模块55,用于基于调整后的所述目标子图的数量,对所述目标图数据进行划分。
本实施例还提供一种图数据处理装置,如图9所述,包括:
子图划分模块61,用于根据上述任一项实施例中所述的图数据划分方法对目标图数据进行划分,得到目标子图;
分发模块62,用于将划分得到的所述目标子图分发给至少一个所述图数据处理器进行处理。
本实施例提供的图数据处理装置,利用划分后得到的目标子图的大小与图数据处理器的内存大小,调整实际划分的目标子图的数量;即,通过平衡每个目标子图的大小,确定目标子图的数量,使得划分得到的目标子图均能够被图数据处理器处理,可以实现负载均衡,提高了图数据处理的效率。
本实施例中的图数据划分装置,或图数据处理装置是以功能单元的形式来呈现,这里的单元是指ASIC电路,执行一个或多个软件或固定程序的处理器和存储器,和/或其他可以提供上述功能的器件。
上述各个模块的更进一步的功能描述与上述对应实施例相同,在此不再赘述。
本发明实施例还提供一种电子设备,具有上述图8所示的图数据划分装置,或图9所示的图数据处理装置。
请参阅图10,图10是本发明可选实施例提供的一种电子设备的结构示意图,如图10所示,该电子设备可以包括:至少一个处理器71,例如CPU(Central Processing Unit,中央处理器),至少一个通信接口73,存储器74,至少一个通信总线72。其中,通信总线72用于实现这些组件之间的连接通信。其中,通信接口73可以包括显示屏(Display)、键盘(Keyboard),可选通信接口73还可以包括标准的有线接口、无线接口。存储器74可以是高速RAM存储器(Random Access Memory,易失性随机存取存储器),也可以是非易失性存储器(Non-Volatile Memory),例如至少一个磁盘存储器。存储器74可选的还可以是至少一个位于远离前述处理器71的存储装置。其中处理器71可以结合图8或图9所描述的装置,存储器74中存储应用程序,且处理器71调用存储器74中存储的程序代码,以用于执行上述任一方法步骤。
其中,通信总线72可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。通信总线72可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器74可以包括易失性存储器(英文:Volatile Memory,缩写VM),例如随机存取存储器(英文:Random-Access Memory,缩写:RAM);存储器也可以包括非易失性存储器(英文:Non-Volatile Memory),例如快闪存储器(英文:Flash Memory),硬盘(英文:HardDisk Drive,缩写:HDD)或固态硬盘(英文:Solid-State Drive,缩写:SSD);存储器74还可以包括上述种类的存储器的组合。
其中,处理器71可以是中央处理器(英文:Central Processing Unit,缩写:CPU),网络处理器(英文:Network Processor,缩写:NP)或者CPU和NP的组合。
其中,处理器71还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(英文:Application-Specific Integrated Circuit,缩写:ASIC),可编程逻辑器件(英文:Programmable Logic Device,缩写:PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(英文:Complex Programmable Logic Device,缩写:CPLD),现场可编程逻辑门阵列(英文:Field-Programmable Gate Array,缩写:FPGA),通用阵列逻辑(英文:Generic ArrayLogic,缩写:GAL)或其任意组合。
可选地,存储器74还用于存储程序指令。处理器71可以调用程序指令,实现如本申请图3和4实施例中所述的图数据划分方法,或图6和7实施例中所示的图数据处理方法。
本发明实施例还提供了一种非暂态计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令可执行上述任意方法实施例中的图数据划分方法,或图数据处理方法。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)、随机存储记忆体(Random Access Memory,RAM)、快闪存储器(FlashMemory)、硬盘(Hard Disk Drive,缩写:HDD)或固态硬盘(Solid-State Drive,SSD)等;所述存储介质还可以包括上述种类的存储器的组合。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
Claims (10)
1.一种图数据划分方法,其特征在于,包括:
获取目标图数据、所述目标图数据的大小以及图数据处理器的内存大小;
利用所述目标图数据的大小以及所述图数据处理器的内存大小,确定所述目标图数据对应的目标子图的数量;
基于所述目标子图的数量,对所述目标图数据进行划分;
根据各个所述目标子图的大小以及所述图数据处理器的内存大小,调整所述目标子图的数量;
基于调整后的所述目标子图的数量,对所述目标图数据进行划分。
2.根据权利要求1所述的方法,其特征在于,采用如下公式计算得到所述目标子图的数量:
P=sizeof(G)/mem_size*C1
其中,P为所述目标子图的数量,G为所述目标图数据,sizeof(G)为所述目标图数据的大小,mem_size为所述图数据处理器的内存大小,为常数且C1>1。
3.根据权利要求1或2所述的方法,其特征在于,所述根据各个所述目标子图的大小以及各个所述图数据处理器的内存大小,调整所述目标子图的数量,包括:
遍历所有所述目标子图,判断所述目标子图中是否存在大小大于所述图数据处理器的内存大小的目标子图;
当所述目标子图中存在大小大于所述图数据处理器的内存大小的目标子图时,将所述目标子图的数量调整至所述目标子图的数量的预设倍数;其中,所述预设倍数大于1。
4.根据权利要求1所述的方法,其特征在于,所述基于所述目标子图的数量,对所述目标图数据进行划分,包括:
获取所述目标图数据中的所有顶点;
利用所述目标子图的数量对所有所述顶点进行划分,得到与所述目标子图对应的顶点子集;
确定所述顶点子集中各个所述顶点对应的边,得到所述目标子图。
5.一种图数据处理方法,其特征在于,包括:
根据权利要求1-4中任一项所述的图数据划分方法对目标图数据进行划分,得到目标子图;
将划分得到的所述目标子图分发给至少一个所述图数据处理器进行处理。
6.根据权利要求5所述的方法,其特征在于,所述将划分得到的所述目标子图分发给至少一个所述图数据处理器进行处理,包括:
将划分得到的所述目标子图从磁盘存入内存的缓存队列中;
提取所述缓存队列中的目标子图作为当前子图分发至所述图数据处理器;
遍历所述当前子图的所有顶点,确定所述当前子图中出度和入度最多的顶点;
将所述当前子图中出度和入度最多的顶点存入所述内存的图数据预取区域中,以使得所述图数据处理器提取所述图数据预取区域中的数据。
7.根据权利要求6所述的方法,其特征在于,所述将划分得到的所述目标子图分发给至少一个所述图数据处理器进行处理,还包括:
获取所述当前子图正在被执行的当前顶点;
将所述当前顶点相连的边存入所述内存的图数据预取区域中。
8.根据权利要求5至7中任一项所述的方法,其特征在于,所述将划分得到的所述目标子图分发给至少一个所述图数据处理器进行处理,还包括:
接收所述图数据处理器的子图请求;
从所述缓存队列中提取新的目标子图;
基于所述新的目标子图与已分发的目标子图的关系,确定所述新的目标子图对应的图数据处理器;
将所述新的目标子图分发给确定出的图数据处理器。
9.一种电子设备,其特征在于,包括:
存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行权利要求1-4中任一项所述的图数据划分方法,或执行权利要求5-8中任一项所述的图数据处理方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使计算机执行权利要求1-4中任一项所述的图数据划分方法,或执行权利要求5-8中任一项所述的图数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010859145.2A CN112000611B (zh) | 2020-08-24 | 2020-08-24 | 图数据划分方法、处理方法及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010859145.2A CN112000611B (zh) | 2020-08-24 | 2020-08-24 | 图数据划分方法、处理方法及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112000611A true CN112000611A (zh) | 2020-11-27 |
CN112000611B CN112000611B (zh) | 2023-08-01 |
Family
ID=73470715
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010859145.2A Active CN112000611B (zh) | 2020-08-24 | 2020-08-24 | 图数据划分方法、处理方法及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112000611B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113689520A (zh) * | 2021-05-31 | 2021-11-23 | 龙芯中科技术股份有限公司 | 图数据的处理方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107193899A (zh) * | 2017-05-10 | 2017-09-22 | 华中科技大学 | 一种图算法友善的强连通图划分方法 |
CN107222565A (zh) * | 2017-07-06 | 2017-09-29 | 太原理工大学 | 一种网络图分割方法及系统 |
US20180342030A1 (en) * | 2017-05-24 | 2018-11-29 | The Research Foundation For The State University Of New York | Neutral radistricting using a multi-level weighted graph partitioning algorithm |
CN109254844A (zh) * | 2018-07-26 | 2019-01-22 | 华中科技大学 | 一种大规模图的三角形计算方法 |
CN110619595A (zh) * | 2019-09-17 | 2019-12-27 | 华中科技大学 | 一种基于多fpga加速器互联的图计算优化方法 |
-
2020
- 2020-08-24 CN CN202010859145.2A patent/CN112000611B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107193899A (zh) * | 2017-05-10 | 2017-09-22 | 华中科技大学 | 一种图算法友善的强连通图划分方法 |
US20180342030A1 (en) * | 2017-05-24 | 2018-11-29 | The Research Foundation For The State University Of New York | Neutral radistricting using a multi-level weighted graph partitioning algorithm |
CN107222565A (zh) * | 2017-07-06 | 2017-09-29 | 太原理工大学 | 一种网络图分割方法及系统 |
CN109254844A (zh) * | 2018-07-26 | 2019-01-22 | 华中科技大学 | 一种大规模图的三角形计算方法 |
CN110619595A (zh) * | 2019-09-17 | 2019-12-27 | 华中科技大学 | 一种基于多fpga加速器互联的图计算优化方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113689520A (zh) * | 2021-05-31 | 2021-11-23 | 龙芯中科技术股份有限公司 | 图数据的处理方法、装置、电子设备及存储介质 |
CN113689520B (zh) * | 2021-05-31 | 2023-10-10 | 龙芯中科技术股份有限公司 | 图数据的处理方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112000611B (zh) | 2023-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110537194B (zh) | 被配置用于层和操作防护和依赖性管理的功率高效的深度神经网络处理器及方法 | |
US8959135B2 (en) | Data structure for tiling and packetizing a sparse matrix | |
US20190197761A1 (en) | Texture processor based ray tracing acceleration method and system | |
US10176627B2 (en) | Tree-based graphics primitive rendering | |
US8762655B2 (en) | Optimizing output vector data generation using a formatted matrix data structure | |
US20120210042A1 (en) | Remote memory for virtual machines | |
US8898422B2 (en) | Workload-aware distributed data processing apparatus and method for processing large data based on hardware acceleration | |
CN103999121B (zh) | 用于将图像基元部署至计算构造的图像流管线控制器 | |
EP3944091B1 (en) | Cache allocation method and device, storage medium, and electronic device | |
CN110554913A (zh) | 神经网络系统及其操作方法以及应用处理器 | |
US20160026607A1 (en) | Parallelization of scalar operations by vector processors using data-indexed accumulators in vector register files, and related circuits, methods, and computer-readable media | |
KR102371844B1 (ko) | 인공 지능 칩에 적용되는 산출 방법 및 인공 지능 칩 | |
US20200073677A1 (en) | Hybrid computing device selection analysis | |
US11216281B2 (en) | Facilitating data processing using SIMD reduction operations across SIMD lanes | |
CN112016666A (zh) | 深度学习模型的执行 | |
US10409598B2 (en) | Handling unaligned load operations in a multi-slice computer processor | |
Al Sideiri et al. | CUDA implementation of fractal image compression | |
CN109416688B (zh) | 用于灵活的高性能结构化数据处理的方法和系统 | |
CN112000611B (zh) | 图数据划分方法、处理方法及电子设备 | |
US11030714B2 (en) | Wide key hash table for a graphics processing unit | |
US10049487B2 (en) | Identifying duplicate indices in an input index stream | |
CN113272785B (zh) | 一种挂载文件系统的方法、终端设备及存储介质 | |
US20100262804A1 (en) | Effective Memory Clustering to Minimize Page Fault and Optimize Memory Utilization | |
US20120166728A1 (en) | Systems and methods for performing parallel multi-level data computations | |
CN107291628B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |