CN116186339A - 并行图计算处理方法、装置、电子设备及存储介质 - Google Patents

并行图计算处理方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN116186339A
CN116186339A CN202310305669.0A CN202310305669A CN116186339A CN 116186339 A CN116186339 A CN 116186339A CN 202310305669 A CN202310305669 A CN 202310305669A CN 116186339 A CN116186339 A CN 116186339A
Authority
CN
China
Prior art keywords
vertex
source
graph
target
vertex set
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
Application number
CN202310305669.0A
Other languages
English (en)
Inventor
张昊涵
康一
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
University of Science and Technology of China USTC
Original Assignee
University of Science and Technology of China USTC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by University of Science and Technology of China USTC filed Critical University of Science and Technology of China USTC
Priority to CN202310305669.0A priority Critical patent/CN116186339A/zh
Publication of CN116186339A publication Critical patent/CN116186339A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Complex Calculations (AREA)

Abstract

本公开提供了一种并行图计算处理方法、装置、电子设备及存储介质,可应用于计算机领域。该方法包括:对处理单元阵列图数据集分组,得到每一行处理单元的目的顶点集和每个目的顶点集对应的多个源顶点集;针对每一行处理单元中每个处理单元,利用分发调度器将处理单元对应的子图目的顶点集、子图源顶点集和重合顶点集存储至对应存储单元中;利用计算模块分别对存储单元和处理单元的边数据读取,得到各个顶点集源顶点和目的顶点的初始顶点权值以及边数据的边权值;基于边权值和顶点权值利用计算模块确定源顶点与目的顶点之间单源最短路径,得到子图目的顶点集和重合顶点集的目标顶点权值;利用计算模块将目标顶点权值更新至存储单元中。

Description

并行图计算处理方法、装置、电子设备及存储介质
技术领域
本公开涉及计算机领域,尤其涉及一种并行图计算处理方法、装置、电子设备、存储介质和程序产品。
背景技术
图计算在互联网中有着广泛应用,图数据结构可以很好的表达数据之间的关联性。图计算通常采用中央处理器(CPU)来处理,在数据处理过程中,图计算需要处理的数据量较大,且数据关联度较低,内存访问不规律。
在实现本公开构思的过程中,发明人发现相关技术中至少存在如下问题,由于图算法内存访问的不规律性,导致数据访问效率较低,图计算速度较慢。
发明内容
鉴于上述问题,本公开提供了一种并行图计算处理方法、装置、电子设备、存储介质和程序产品。
根据本公开的第一个方面,提供了一种并行图计算处理方法,包括:基于预设分组规则对处理单元阵列的图数据集进行分组,得到上述处理单元阵列中每一行处理单元的目的顶点集,和每个上述目的顶点集对应的多个源顶点集;针对每一行处理单元中的每个处理单元,利用上述处理单元中的分发调度器将上述处理单元对应的子图目的顶点集、子图源顶点集以及重合顶点集存储至对应的存储单元中,其中,上述重合顶点集是上述子图目的顶点集与上述子图源顶点集之间重合的顶点组成的集合;利用上述处理单元中的计算模块分别对上述存储单元和上述图数据集中与上述处理单元对应的边数据进行读取,得到上述存储单元中各个顶点集的源顶点和目的顶点对应的初始顶点权值,以及上述边数据的边权值;基于上述边权值和上述顶点权值,利用上述计算模块确定上述源顶点与上述目的顶点之间的单源最短路径,得到上述子图目的顶点集和上述重合顶点集对应的目标顶点权值;利用上述计算模块将上述目标顶点权值更新至对应的存储单元中。
根据本公开的实施例,上述基于预设分组规则对处理单元阵列的图数据集进行分组,得到上述处理单元阵列中每一行处理单元的目的顶点集,和每个上述目的顶点集对应的多个源顶点集,包括:基于上述图数据集中多个目的顶点的顶点编号,利用哈希分组规则对上述目的顶点进行均匀分组,得到上述处理单元阵列中每一行处理单元的目的顶点集;基于每个上述目的顶点集中目的顶点的总入度数和预设组数,对上述目的顶点集对应的多个源顶点进行均匀分组,得到多个上述源顶点集。
根据本公开的实施例,上述基于每个上述目的顶点集中目的顶点的总入度数和预设组数,对上述目的顶点集对应的多个源顶点进行均匀分组,得到多个上述源顶点集,包括:基于上述总入度数和上述预设分组计算每个源顶点集的目标出度数;基于上述目标出度数对多个上述源顶点进行均匀分组,得到多个上述源顶点集。
根据本公开的实施例,上述利用上述处理单元中的分发调度器将上述处理单元对应的子图目的顶点集、子图源顶点集以及重合顶点集存储至对应的存储单元中,包括:利用上述分发调度器将上述子图目的顶点集存储至片内静态目的存储单元中,将上述子图源顶点集存储至片内静态源存储单元中,将重合顶点集存储至片外静态重合存储单元中。
根据本公开的实施例,上述利用上述计算模块将上述目标顶点权值更新至对应的存储单元中,包括:利用上述计算模块将上述子图目的顶点集对应的目标顶点权值更新至上述片内静态目的存储单元中;在上述重合顶点集中重合顶点对应的目标顶点权值小于初始顶点权值的情况下,利用上述计算模块将上述重合顶点集对应的目标顶点权值更新至上述片外静态重合存储单元中。
根据本公开的实施例,上述方法还包括:针对每一行处理单元,在每个上述处理单元完成顶点权值更新的情况下,选取该行处理单元中的收敛最快处理单元,将上述收敛最快处理单元对应的迭代目的顶点集和迭代源顶点集存储至片外存储单元中;针对上述片外存储单元中的每个迭代目的顶点集和迭代源顶点集,利用上述计算模块,对迭代目的顶点集和迭代源顶点集进行迭代处理,得到新的迭代目的顶点集和新的迭代源顶点集;在第i次和第i+1次的迭代中分别产生的新的迭代目的顶点集和新的迭代源顶点集之间,对应顶点的顶点权值之差小于预设数值的情况下,将第i次迭代对应的新的迭代目的顶点集和新的迭代源顶点集确定为图计算结果。
本公开的第二方面提供了一种并行图计算处理装置,包括:分组模块,用于基于预设分组规则对处理单元阵列的图数据集进行分组,得到上述处理单元阵列中每一行处理单元的目的顶点集,和每个上述目的顶点集对应的多个源顶点集;存储模块,用于针对每一行处理单元中的每个处理单元,利用上述处理单元中的分发调度器将上述处理单元对应的子图目的顶点集、子图源顶点集以及重合顶点集存储至对应的存储单元中,其中,上述重合顶点集是上述子图目的顶点集与上述子图源顶点集之间重合的顶点组成的集合;读取模块,用于利用上述处理单元中的计算模块分别对上述存储单元和上述图数据集中与上述处理单元对应的边数据进行读取,得到上述存储单元中各个顶点集的源顶点和目的顶点对应的初始顶点权值,以及上述边数据的边权值;计算模块,用于基于上述边权值和上述顶点权值,利用上述计算模块确定上述源顶点与上述目的顶点之间的单源最短路径,得到上述子图目的顶点集和上述重合顶点集对应的目标顶点权值;更新模块,用于利用上述计算模块将上述目标顶点权值更新至对应的存储单元中。
本公开的第三方面提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当上述一个或多个程序被上述一个或多个处理器执行时,使得一个或多个处理器执行上述方法。
本公开的第四方面还提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行上述方法。
本公开的第五方面还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述方法。
根据本公开提供的并行图计算处理方法、装置、电子设备、存储介质和程序产品,通过基于预设分组规则对处理单元阵列的图数据集进行分组,使得在对图数据集中的数据遍历过程中,能够基于分组结果依次访问,使得访问过程不涉及随机地址访问,加快了访问速度。在数据处理过程中,通过目的顶点和源顶点的顶点权值进行更新,能够更快地确定单源最短路径,且通过设置重合顶点集,使得更新过程中对重合的顶点能够进一步确定其权值,加快了图计算的速度。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述内容以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了根据本公开实施例的并行图计算处理方法、装置、电子设备、存储介质和程序产品的应用场景图;
图2示意性示出了根据本公开实施例的并行图计算处理方法的流程图;
图3示意性示出了根据本公开另一实施例的并行图计算处理方法的流程图;
图4示意性示出了根据本公开实施例的图数据集分组示意图;
图5示意性示出了根据本公开实施例的并行图计算处理装置的结构框图;
图6示意性示出了根据本公开实施例的适于实现并行图计算处理方法的电子设备的方框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。
在本公开的技术方案中,所涉及的数据(如包括但不限于用户个人信息)的收集、存储、使用、加工、传输、提供、公开和应用等处理,均符合相关法律法规的规定,采取了必要保密措施,且不违背公序良俗。
经典的图算法,如广度优先搜索(BFS,Breadth First Search)、单源最短路径(SSSP,Single-Source Shortest Paths)、网页排序(PageRank)等在互联网中有着广泛应用。
图算法需要处理的图数据集数据量大,数据关联度低,访存不规律。其中,图数据集是若干顶点和边的集合,可以用邻接矩阵、邻接表或者直接使用边列表来存储一个图数据集。不同的存储方法本质上对应了不同的算法执行策略,通常可以粗略的将所有执行策略分为以顶点为中心(vertex-centric processing)和以边为中心(edge-centricprocessing)两种方式。前者策略是遍历顶点并依次访问该顶点的每个目的顶点,更倾向于使用邻接矩阵或邻接表的存储方式;而后者则遍历边并访问该边的源顶点和目的顶点,更倾向于使用边列表等存储方式。
对于追求多核并行的架构,选择以边为中心的策略显然更加适合,因为边列表在图算法迭代过程中是固定不变的(仅有顶点信息被不断更新),这样多核可以独立的迭代不同的边列表。在处理大规模图数据集时,通过将顶点进行分组而将图划分为多个子图是常见的做法,目前主要使用按顶点均匀分组,使每个顶点集具有相同数量的顶点。
相关技术中,通常使用中央处理器(CPU)处理图计算等问题,但在处理过程中,在并行度和内存访问上会遇到瓶颈。而使用图形处理器(GPU)处理图计算等问题时,GPU尽管在并行度上远胜过CPU,但是显存本质上仍是内存,访存不规律而造成的内存瓶颈依然存在。实际上,由于图算法内存访问的不连续性,传统的cache存储器(高速缓冲存储器)结构效率极低,其空间局部性几乎完全丧失,为通用计算而设计的存储系统已不适用。
有鉴于此,本公开的实施例提供了一种并行图计算处理方法、一种并行图计算处理装置、一种电子设备、一种可读存储介质和一种计算机程序产品。其中,该一种并行图计算处理方法,包括:基于预设分组规则对处理单元阵列的图数据集进行分组,得到处理单元阵列中每一行处理单元的目的顶点集,和每个目的顶点集对应的多个源顶点集;针对每一行处理单元中的每个处理单元,利用处理单元中的分发调度器将处理单元对应的子图目的顶点集、子图源顶点集以及重合顶点集存储至对应的存储单元中,其中,重合顶点集是子图目的顶点集与子图源顶点集之间重合的顶点组成的集合;利用处理单元中的计算模块分别对存储单元和图数据集中与处理单元对应的边数据进行读取,得到存储单元中各个顶点集的源顶点和目的顶点对应的初始顶点权值,以及边数据的边权值;基于边权值和顶点权值,利用计算模块确定源顶点与目的顶点之间的单源最短路径,得到子图目的顶点集和重合顶点集对应的目标顶点权值;利用计算模块将目标顶点权值更新至对应的存储单元中。
图1示意性示出了根据本公开实施例的并行图计算处理方法、装置、电子设备、存储介质和程序产品的应用场景图。
如图1所示,根据该实施例的应用场景100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在第一终端设备101、第二终端设备102、第三终端设备103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用第一终端设备101、第二终端设备102、第三终端设备103中的至少一个通过网络104与服务器105交互,以接收或发送消息等。第一终端设备101、第二终端设备102、第三终端设备103上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
第一终端设备101、第二终端设备102、第三终端设备103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对用户利用第一终端设备101、第二终端设备102、第三终端设备103所浏览的网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的用户请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)反馈给终端设备。
需要说明的是,本公开实施例所提供的并行图计算处理方法一般可以由服务器105执行。相应地,本公开实施例所提供的并行图计算处理装置一般可以设置于服务器105中。本公开实施例所提供的并行图计算处理方法也可以由不同于服务器105且能够与第一终端设备101、第二终端设备102、第三终端设备103和/或服务器105通信的服务器或服务器集群执行。相应地,本公开实施例所提供的并行图计算处理装置也可以设置于不同于服务器105且能够与第一终端设备101、第二终端设备102、第三终端设备103和/或服务器105通信的服务器或服务器集群中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
以下将基于图1描述的场景,通过图2~图4对公开实施例的并行图计算处理方法进行详细描述。
图2示意性示出了根据本公开实施例的并行图计算处理方法的流程图。
如图2所示,该方法包括操作S201~操作S205。
在操作S201,基于预设分组规则对处理单元阵列的图数据集进行分组,得到处理单元阵列中每一行处理单元的目的顶点集,和每个目的顶点集对应的多个源顶点集。
在操作S202,针对每一行处理单元中的每个处理单元,利用处理单元中的分发调度器将处理单元对应的子图目的顶点集、子图源顶点集以及重合顶点集存储至对应的存储单元中,其中,重合顶点集是子图目的顶点集与子图源顶点集之间重合的顶点组成的集合。
在操作S203,利用处理单元中的计算模块分别对存储单元和图数据集中与处理单元对应的边数据进行读取,得到存储单元中各个顶点集的源顶点和目的顶点对应的初始顶点权值,以及边数据的边权值。
在操作S204,基于边权值和顶点权值,利用计算模块确定源顶点与目的顶点之间的单源最短路径,得到子图目的顶点集和重合顶点集对应的目标顶点权值。
在操作S205,利用计算模块将目标顶点权值更新至对应的存储单元中。
根据本公开的实施例,处理单元阵列为多个处理单元(Processing Element,简称PE)组成的,可以是一个4*4的PE阵列。从片外存储单元中获取图数据集,基于预设分组规则对处理单元阵列的图数据集进行分组。其中,图数据集是若干顶点和边的集合,且包括顶点对应的顶点权值和边对应的边权值。通过对图数据集进行分组使得处理单元阵列每行处理单元的目的顶点集相同,每行目的顶点集对应的多个源顶点集是连续的。进而使得在访问过程中不涉及随机地址访问,加快了访问速度。
根据本公开的实施例,针对每一行处理单元中的每个处理单元,利用处理单元中的分发调度器将处理单元对应的子图目的顶点集、子图源顶点集以及重合顶点集存储至对应的存储单元中。其中,分发调度器包括调度模块和合并模块,还包括用于存储处理单元执行信息的存储单元。调度模块用于读取来自片外存储单元的顶点信息,并将其分配到对应的存储单元中。合并模块用于在同一行所有处理单元执行完成后,读取存储单元中的目的顶点,并将目的顶点送回片外存储单元中。
根据本公开的实施例,图数据集中每个顶点均可作为目的顶点或源顶点,因此在分组生成的目的顶点集和源顶点集中可能会存在交集。当目的顶点集和源顶点集出现重合的顶点时,除了目的顶点需要被更新,也存在一部分需要被更新的源顶点,故在处理单元中引入了一个多个处理单元均可访问的存储单元,用于存放重合顶点的数据。
根据本公开的实施例,利用处理单元中的计算模块对存储单元进行读取,得到存储单元中各个顶点集的源顶点和目的顶点对应的初始顶点权值。利用处理单元中的计算模块对图数据集中与处理单元对应的边数据进行读取,得到边数据的边权值。其中,顶点权值和边权值中的权值,可以通过单源最短路径算法中的距离进行表示,也可以通过网页排序算法中网页的网页排名(PR值)进行表示,还可以通过广度优先搜索算法中的层数进行表示。
根据本公开的实施例,基于边权值和顶点权值,利用计算模块确定源顶点与目的顶点之间的单源最短路径,得到子图目的顶点集和重合顶点集对应的目标顶点权值。例如:假设1号源顶点的顶点权值为10,10号目的顶点的初始顶点权值为100,1号源顶点和10号目的顶点之间的边权值为50,则确定1号源顶点和10号目的顶点的单源最短路径为1号源顶点的顶点权值与边权值的和,即为60。因此,确定10号目的顶点的目标顶点权值为60,进而对10号目的顶点的权值进行更新。
根据本公开提供的并行图计算处理方法、装置、电子设备、存储介质和程序产品,通过基于预设分组规则对处理单元阵列的图数据集进行分组,使得在对图数据集中的数据遍历过程中,能够基于分组结果依次访问,使得访问过程不涉及随机地址访问,加快了访问速度。在数据处理过程中,通过目的顶点和源顶点的顶点权值进行更新,能够更快地确定单源最短路径,且通过设置重合顶点集,使得更新过程中对重合的顶点能够进一步确定其权值,加快了图计算的速度。
图3示意性示出了根据本公开另一实施例的并行图计算处理方法的流程图。
根据本公开的实施例,如图3所示,将片外存储单元301(OFF_CHIP MEMORY)中目的顶点集和源顶点集,通过以顶点为中心(vertex-centric processing)的方式输入处理单元(PE)的分发调度器302(Control Unit)中。分发调度器302包括调度模块303(Dispatcher)和合并模块304(Merger),还包括用于存储处理单元执行信息的存储单元305(mem_info,memory information sram)。调度模块303用于读取来自片外存储单元的顶点信息,将源顶点分配至片内静态源存储单元306(SRC_SRAM,source sram)中,将目的顶点集分配至片内静态目的存储单元307(DST_SRAM,destination sram)。片内静态源存储单元306和片内静态目的存储单元307均由若干个静态内存库(SRAM bank)组成,分别用于存放来自片外存储单元301的源顶点和目的顶点。
根据本公开的实施例,将处理单元对应的本地动态存储单元308(Local DRAM)中的边数据,通过以边为中心(edge-centric processing)的方式输入处理单元的计算模块309(CAL,calculate)中。其中,边数据包括源顶点(SRC,source)、目的顶点(DST,destination)以及边权值(weight)。计算模块309利用边数据去访问片内静态源存储单元306、片内静态目的存储单元307并完成相应的权值计算,将权值计算结果写回片内静态目的存储单元307。
根据本公开的实施例,处理单元还引入了一个多个PE均可访问的片外静态重合存储单元310(SRAM for overlap),分发调度器302将重合的顶点输入片外静态重合存储单元310中。计算模块309利用边数据去访问片外静态重合存储单元310并完成相应的权值计算,将权值计算结果写回片外静态重合存储单元310。
根据本公开的实施例,基于预设分组规则对处理单元阵列的图数据集进行分组,得到处理单元阵列中每一行处理单元的目的顶点集,和每个目的顶点集对应的多个源顶点集,可以包括如下操作:
基于图数据集中多个目的顶点的顶点编号,利用哈希分组规则对目的顶点进行均匀分组,得到处理单元阵列中每一行处理单元的目的顶点集;基于每个目的顶点集中目的顶点的总入度数和预设组数,对目的顶点集对应的多个源顶点进行均匀分组,得到多个源顶点集。
根据本公开的实施例,对于目的顶点集,使用按顶点均匀分组的方法,即每一行的PE的目的顶点集具有相同数量的目的顶点,基于目的顶点的顶点编号进行哈希分组(假设某顶点编号为x,计划分N个目的顶点集,则该顶点属于第(x mod N)个顶点集),哈希分组可以一定程度避免原数据集中连续出现出入度数较高的顶点使得其对应顶点集的出入度数过高。
根据本公开的实施例,对源顶点的分组使用按边均匀分组,基于每个目的顶点集中目的顶点的总入度数和预设组数,对目的顶点集对应的多个源顶点进行均匀分组,得到多个源顶点集,从而使同一行PE所处理的每个子图的边集规模相同。
图4示意性示出了根据本公开实施例的图数据集分组示意图。
根据本公开的实施例,基于每个目的顶点集中目的顶点的总入度数和预设组数,对目的顶点集对应的多个源顶点进行均匀分组,得到多个源顶点集,可以包括如下操作:
基于总入度数和预设分组计算每个源顶点集的目标出度数;基于目标出度数对多个源顶点进行均匀分组,得到多个源顶点集。
根据本公开的实施例,图数据集具有幂律分布的特征,若使用按顶点均匀分组的传统分组方法,因不同顶点的出度数相差较大,各个子图对应的边列表规模亦将相差很大,会导致同一行中不同PE的执行时间相差较大,先执行完的PE需要等待最后执行完的PE才能完成目的顶点数据的同步。本实施例中提出了按边均匀分组的分组方法,保持对目的顶点集按顶点数均匀分组不变,改变源顶点集的分组方法,对每个目的顶点集,获取全部顶点对其的总出度数并计算平均数,使每个源顶点集对目的顶点集的出度数等于该平均数,因为出度数在数值上与该子图的边数相等,这样就控制了每个PE所迭代的边列表规模相同。
根据本公开的实施例,如图4所示,假设处理单元阵列为一个4*4的PE阵列,包含16个PEx_y,每个PE对应的位置为Ex,y_x。Dx表示第x行PE对应的目的顶点集,而Sx,y表示根据Dx所分出的第y个源顶点集。假设该行的目的顶点的总入度数为in_dgr,确定预设组数为M,则每个源顶点集的出度数应等于in_dgr/M,使得每个源顶点集相对于该行的目的顶点集的出度数相同。在图4中,根据Dx所分出的第y个源顶点集,需满足Sx,0到Sx,M均满足对Dx的出度数等于in_dgr/M。这样可以使同一行PE所处理的每个子图的边集规模相同,因为边的数目就等于源顶点集到目的顶点集的出度数,即in_dgr/M。
根据本公开的实施例,利用处理单元中的分发调度器将处理单元对应的子图目的顶点集、子图源顶点集以及重合顶点集存储至对应的存储单元中,可以包括如下操作:
利用分发调度器将子图目的顶点集存储至片内静态目的存储单元中,将子图源顶点集存储至片内静态源存储单元中,将重合顶点集存储至片外静态重合存储单元中。
根据本公开的实施例,处理单元中包括片内静态目的存储单元和片内静态源存储单元。片外静态重合存储单元为处理单元可以访问的存储单元。
根据本公开的实施例,利用计算模块将目标顶点权值更新至对应的存储单元中,可以包括如下操作:
利用计算模块将子图目的顶点集对应的目标顶点权值更新至片内静态目的存储单元中;在重合顶点集中重合顶点对应的目标顶点权值小于初始顶点权值的情况下,利用计算模块将重合顶点集对应的目标顶点权值更新至片外静态重合存储单元中。
根据本公开的实施例,计算模块通过计算单源最短路径,将得到的目的顶点对应的目标顶点权值更新至片内静态目的存储单元中。对于重合顶点集中重合顶点,重合顶点可以是源顶点也可以是目的顶点,在重合顶点目标顶点权值小于初始顶点权值的情况下,将重合顶点集对应的目标顶点权值更新至片外静态重合存储单元中,从而加快图计算的速度。
根据本公开的实施例,方法还可以包括如下操作:
针对每一行处理单元,在每个处理单元完成顶点权值更新的情况下,选取该行处理单元中的收敛最快处理单元,将收敛最快处理单元对应的迭代目的顶点集和迭代源顶点集存储至片外存储单元中。
针对片外存储单元中的每个迭代目的顶点集和迭代源顶点集,利用计算模块,对迭代目的顶点集和迭代源顶点集进行迭代处理,得到新的迭代目的顶点集和新的迭代源顶点集。
在第i次和第i+1次的迭代中分别产生的新的迭代目的顶点集和新的迭代源顶点集之间,对应顶点的顶点权值之差小于预设数值的情况下,将第i次迭代对应的新的迭代目的顶点集和新的迭代源顶点集确定为图计算结果。
根据本公开的实施例,由于采用了按边均匀分组的方法,同一行的PE处理子图的边列表规模相同,故PE执行完成所需的时间也会相近,这也极大减少了PE等待同步的时间。针对每一行处理单元,同一行所有PE完成边列表的迭代后,开始进行目的顶点的同步,由于该行所有PE的目的顶点集相同,故仅需所有PE同时按顺序将目的顶点读取并写回片外存储单元中,在写入片外存储之前,选取使算法收敛最快的结果作为本次迭代的目的顶点结果即可,即迭代目的顶点集和迭代源顶点集。
根据本公开的实施例,由于图计算的目的为迭代至所有顶点收敛,因此选择使收敛速度最快的顶点用于更新。而从加载顶点至PE到写回顶点至片外存储,就完成了一次多子图并行的迭代,反复进行上述步骤,当所有顶点的权值不再变小,则说明图数据集的图算法收敛。
基于上述并行图计算处理方法,本公开还提供了一种并行图计算处理装置。以下将结合图5对该装置进行详细描述。
图5示意性示出了根据本公开实施例的并行图计算处理装置的结构框图。
如图5所示,该实施例的并行图计算处理装置500包括分组模块510、存储模块520、读取模块530、计算模块540以及更新模块550。
分组模块510,用于基于预设分组规则对处理单元阵列的图数据集进行分组,得到处理单元阵列中每一行处理单元的目的顶点集,和每个目的顶点集对应的多个源顶点集。在一实施例中,分组模块510可以用于执行前文描述的操作S201,在此不再赘述。
存储模块520,用于针对每一行处理单元中的每个处理单元,利用处理单元中的分发调度器将处理单元对应的子图目的顶点集、子图源顶点集以及重合顶点集存储至对应的存储单元中,其中,重合顶点集是子图目的顶点集与子图源顶点集之间重合的顶点组成的集合。在一实施例中,存储模块520可以用于执行前文描述的操作S202,在此不再赘述。
读取模块530,用于利用处理单元中的计算模块分别对存储单元和图数据集中与处理单元对应的边数据进行读取,得到存储单元中各个顶点集的源顶点和目的顶点对应的初始顶点权值,以及边数据的边权值。在一实施例中,读取模块530可以用于执行前文描述的操作S203,在此不再赘述。
计算模块540,用于基于边权值和顶点权值,利用计算模块确定源顶点与目的顶点之间的单源最短路径,得到子图目的顶点集和重合顶点集对应的目标顶点权值。在一实施例中,计算模块540可以用于执行前文描述的操作S204,在此不再赘述。
更新模块550,用于利用计算模块将目标顶点权值更新至对应的存储单元中。在一实施例中,更新模块550可以用于执行前文描述的操作S205,在此不再赘述。
根据本公开提供的并行图计算处理方法、装置、电子设备、存储介质和程序产品,通过基于预设分组规则对处理单元阵列的图数据集进行分组,使得在对图数据集中的数据遍历过程中,能够基于分组结果依次访问,使得访问过程不涉及随机地址访问,加快了访问速度。在数据处理过程中,通过目的顶点和源顶点的顶点权值进行更新,能够更快地确定单源最短路径,且通过设置重合顶点集,使得更新过程中对重合的顶点能够进一步确定其权值,加快了图计算的速度。
根据本公开的实施例,分组模块510包括目的分组子模块和源分组子模块。
目的分组子模块,用于基于图数据集中多个目的顶点的顶点编号,利用哈希分组规则对目的顶点进行均匀分组,得到处理单元阵列中每一行处理单元的目的顶点集。
源分组子模块,用于基于每个目的顶点集中目的顶点的总入度数和预设组数,对目的顶点集对应的多个源顶点进行均匀分组,得到多个源顶点集。
根据本公开的实施例,源分组子模块包括计算单元和源分组单元。
计算单元,用于基于总入度数和预设分组计算每个源顶点集的目标出度数。
源分组单元,用于基于目标出度数对多个源顶点进行均匀分组,得到多个源顶点集。
根据本公开的实施例,存储模块520包括存储子模块。
存储子模块,用于利用分发调度器将子图目的顶点集存储至片内静态目的存储单元中,将子图源顶点集存储至片内静态源存储单元中,将重合顶点集存储至片外静态重合存储单元中。
根据本公开的实施例,更新模块550包括第一更新子模块和第二更新子模块。
第一更新子模块,用于利用计算模块将子图目的顶点集对应的目标顶点权值更新至片内静态目的存储单元中。
第二更新子模块,用于在重合顶点集中重合顶点对应的目标顶点权值小于初始顶点权值的情况下,利用计算模块将重合顶点集对应的目标顶点权值更新至片外静态重合存储单元中。
根据本公开的实施例,并行图计算处理装置500还包括片外存储模块、迭代模块以及结果确定模块。
片外存储模块,用于针对每一行处理单元,在每个处理单元完成顶点权值更新的情况下,选取该行处理单元中的收敛最快处理单元,将收敛最快处理单元对应的迭代目的顶点集和迭代源顶点集存储至片外存储单元中。
迭代模块,用于针对片外存储单元中的每个迭代目的顶点集和迭代源顶点集,利用计算模块,对迭代目的顶点集和迭代源顶点集进行迭代处理,得到新的迭代目的顶点集和新的迭代源顶点集。
结果确定模块,用于在第i次和第i+1次的迭代中分别产生的新的迭代目的顶点集和新的迭代源顶点集之间,对应顶点的顶点权值之差小于预设数值的情况下,将第i次迭代对应的新的迭代目的顶点集和新的迭代源顶点集确定为图计算结果。
根据本公开的实施例,分组模块510、存储模块520、读取模块530、计算模块540以及更新模块550中的任意多个模块可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,分组模块510、存储模块520、读取模块530、计算模块540以及更新模块550中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,分组模块510、存储模块520、读取模块530、计算模块540以及更新模块550中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图6示意性示出了根据本公开实施例的适于实现并行图计算处理方法的电子设备的方框图。
如图6所示,根据本公开实施例的电子设备600包括处理器601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。处理器601例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC))等等。处理器601还可以包括用于缓存用途的板载存储器。处理器601可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 603中,存储有电子设备600操作所需的各种程序和数据。处理器601、ROM602以及RAM 603通过总线604彼此相连。处理器601通过执行ROM 602和/或RAM 603中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM 602和RAM 603以外的一个或多个存储器中。处理器601也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,电子设备600还可以包括输入/输出(I/O)接口605,输入/输出(I/O)接口605也连接至总线604。电子设备600还可以包括连接至输入/输出(I/O)接口605的以下部件中的一项或多项:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至输入/输出(I/O)接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 602和/或RAM 603和/或ROM 602和RAM 603以外的一个或多个存储器。
本公开的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。当计算机程序产品在计算机系统中运行时,该程序代码用于使计算机系统实现本公开实施例所提供的并行图计算处理方法。
在该计算机程序被处理器601执行时执行本公开实施例的系统/装置中限定的上述功能。根据本公开的实施例,上文描述的系统、装置、模块、单元等可以通过计算机程序模块来实现。
在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分609被下载和安装,和/或从可拆卸介质611被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被处理器601执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
根据本公开的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如Java,C++,python,“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。

Claims (10)

1.一种并行图计算处理方法,包括:
基于预设分组规则对处理单元阵列的图数据集进行分组,得到所述处理单元阵列中每一行处理单元的目的顶点集,和每个所述目的顶点集对应的多个源顶点集;
针对每一行处理单元中的每个处理单元,利用所述处理单元中的分发调度器将所述处理单元对应的子图目的顶点集、子图源顶点集以及重合顶点集存储至对应的存储单元中,其中,所述重合顶点集是所述子图目的顶点集与所述子图源顶点集之间重合的顶点组成的集合;
利用所述处理单元中的计算模块分别对所述存储单元和所述图数据集中与所述处理单元对应的边数据进行读取,得到所述存储单元中各个顶点集的源顶点和目的顶点对应的初始顶点权值,以及所述边数据的边权值;
基于所述边权值和所述顶点权值,利用所述计算模块确定所述源顶点与所述目的顶点之间的单源最短路径,得到所述子图目的顶点集和所述重合顶点集对应的目标顶点权值;
利用所述计算模块将所述目标顶点权值更新至对应的存储单元中。
2.根据权利要求1所述的方法,其中,所述基于预设分组规则对处理单元阵列的图数据集进行分组,得到所述处理单元阵列中每一行处理单元的目的顶点集,和每个所述目的顶点集对应的多个源顶点集,包括:
基于所述图数据集中多个目的顶点的顶点编号,利用哈希分组规则对所述目的顶点进行均匀分组,得到所述处理单元阵列中每一行处理单元的目的顶点集;
基于每个所述目的顶点集中目的顶点的总入度数和预设组数,对所述目的顶点集对应的多个源顶点进行均匀分组,得到多个所述源顶点集。
3.根据权利要求2所述的方法,其中,所述基于每个所述目的顶点集中目的顶点的总入度数和预设组数,对所述目的顶点集对应的多个源顶点进行均匀分组,得到多个所述源顶点集,包括:
基于所述总入度数和所述预设分组计算每个源顶点集的目标出度数;
基于所述目标出度数对多个所述源顶点进行均匀分组,得到多个所述源顶点集。
4.根据权利要求1所述的方法,其中,所述利用所述处理单元中的分发调度器将所述处理单元对应的子图目的顶点集、子图源顶点集以及重合顶点集存储至对应的存储单元中,包括:
利用所述分发调度器将所述子图目的顶点集存储至片内静态目的存储单元中,将所述子图源顶点集存储至片内静态源存储单元中,将重合顶点集存储至片外静态重合存储单元中。
5.根据权利要求4所述的方法,其中,所述利用所述计算模块将所述目标顶点权值更新至对应的存储单元中,包括:
利用所述计算模块将所述子图目的顶点集对应的目标顶点权值更新至所述片内静态目的存储单元中;
在所述重合顶点集中重合顶点对应的目标顶点权值小于初始顶点权值的情况下,利用所述计算模块将所述重合顶点集对应的目标顶点权值更新至所述片外静态重合存储单元中。
6.根据权利要求1所述的方法,所述方法还包括:
针对每一行处理单元,在每个所述处理单元完成顶点权值更新的情况下,选取该行处理单元中的收敛最快处理单元,将所述收敛最快处理单元对应的迭代目的顶点集和迭代源顶点集存储至片外存储单元中;
针对所述片外存储单元中的每个迭代目的顶点集和迭代源顶点集,利用所述计算模块,对迭代目的顶点集和迭代源顶点集进行迭代处理,得到新的迭代目的顶点集和新的迭代源顶点集;
在第i次和第i+1次的迭代中分别产生的新的迭代目的顶点集和新的迭代源顶点集之间,对应顶点的顶点权值之差小于预设数值的情况下,将第i次迭代对应的新的迭代目的顶点集和新的迭代源顶点集确定为图计算结果。
7.一种并行图计算处理装置,包括:
分组模块,用于基于预设分组规则对处理单元阵列的图数据集进行分组,得到所述处理单元阵列中每一行处理单元的目的顶点集,和每个所述目的顶点集对应的多个源顶点集;
存储模块,用于针对每一行处理单元中的每个处理单元,利用所述处理单元中的分发调度器将所述处理单元对应的子图目的顶点集、子图源顶点集以及重合顶点集存储至对应的存储单元中,其中,所述重合顶点集是所述子图目的顶点集与所述子图源顶点集之间重合的顶点组成的集合;
读取模块,用于利用所述处理单元中的计算模块分别对所述存储单元和所述图数据集中与所述处理单元对应的边数据进行读取,得到所述存储单元中各个顶点集的源顶点和目的顶点对应的初始顶点权值,以及所述边数据的边权值;
计算模块,用于基于所述边权值和所述顶点权值,利用所述计算模块确定所述源顶点与所述目的顶点之间的单源最短路径,得到所述子图目的顶点集和所述重合顶点集对应的目标顶点权值;
更新模块,用于利用所述计算模块将所述目标顶点权值更新至对应的存储单元中。
8.一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行根据权利要求1~6中任一项所述的方法。
9.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行根据权利要求1~6中任一项所述的方法。
10.一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现根据权利要求1~6中任一项所述的方法。
CN202310305669.0A 2023-03-24 2023-03-24 并行图计算处理方法、装置、电子设备及存储介质 Pending CN116186339A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310305669.0A CN116186339A (zh) 2023-03-24 2023-03-24 并行图计算处理方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310305669.0A CN116186339A (zh) 2023-03-24 2023-03-24 并行图计算处理方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN116186339A true CN116186339A (zh) 2023-05-30

Family

ID=86446470

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310305669.0A Pending CN116186339A (zh) 2023-03-24 2023-03-24 并行图计算处理方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN116186339A (zh)

Similar Documents

Publication Publication Date Title
EP3407182B1 (en) Vector computing device
US10423391B2 (en) Agile communication operator
US9003425B2 (en) Optimizing workflow engines
US10984073B2 (en) Dual phase matrix-vector multiplication system
CN106056529B (zh) 一种对用于图片识别的卷积神经网络训练的方法与设备
US8099584B2 (en) Methods for scalably exploiting parallelism in a parallel processing system
KR20100013257A (ko) 멀티 프로세서 시스템 상에서 데이터 세트를 분할 및 정렬하는 방법 및 장치
CN103970604A (zh) 基于MapReduce架构实现图处理的方法和装置
KR101609079B1 (ko) 그래픽 프로세싱 유닛에서의 명령 선별
CN104952032A (zh) 图的处理方法、装置以及栅格化表示及存储方法
US20190278574A1 (en) Techniques for transforming serial program code into kernels for execution on a parallel processor
Nakano An optimal parallel prefix-sums algorithm on the memory machine models for GPUs
EP3857383A1 (en) Method for vectorizing d-heaps using horizontal aggregation simd instructions
Takafuji et al. C2CU: a CUDA C program generator for bulk execution of a sequential algorithm
CN115374396A (zh) 用于使用稀疏矩阵的分层表示来加速矩阵乘法计算的技术
Jin et al. GPUSGD: A GPU‐accelerated stochastic gradient descent algorithm for matrix factorization
US20230119126A1 (en) Processing sequential inputs using neural network accelerators
CN103578130B (zh) 用于光线跟踪的方法和设备
US20130138923A1 (en) Multithreaded data merging for multi-core processing unit
US11030714B2 (en) Wide key hash table for a graphics processing unit
CN112000611A (zh) 图数据划分方法、处理方法及电子设备
CN116186339A (zh) 并行图计算处理方法、装置、电子设备及存储介质
US20160371005A1 (en) Memory-aware matrix factorization
CN106462391B (zh) 利用管线寄存器作为中间存储器的方法、处理单元及计算机可读存储媒体
CN113177145A (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