发明内容
本公开的各种实施例可包括用于加速图神经网络属性数据访问的硬件加速器、***和方法。本公开描述了具有多级属性缓存的新型GNN加速器体系结构,通过加速属性数据访问和提高图神经网络整体计算性能来解决图神经网络的可伸缩性问题。
根据本公开的一个方面,提供了一种用于加速图神经网络属性数据访问的硬件加速器。所述硬件加速器可以包括:第一存储器,被配置为存储先前从第二存储器获取的图节点的属性数据;图神经网络属性处理器,与所述第一存储器进行数据通信,所述图神经网络属性处理器被配置为:接收第一图节点标识符;基于所述第一图节点标识符确定位于所述第一存储器内的目标存储器地址;基于所述第一图节点标识符,确定与所述第一图节点标识符对应的属性数据是否缓存在所述目标存储器地址;响应于确定所述属性数据未缓存在所述第一存储器中,从所述第二存储器获取所述属性数据,并将获取到的属性数据写入所述目标存储器地址。
在一些实施例中,所述图神经网络属性处理器还可被配置为响应于确定与所述第一图节点标识符对应的属性数据缓存在所述第一存储器中但未缓存在所述目标存储器地址,将与所述第一图节点标识符对应的属性数据与先前存储在所述第一存储器的目标存储器地址的数据交换。
在一些实施例中,所述第一存储器包括图节点标识符表,所述图节点标识符表包括多个图节点标识符和存储器地址之间的映射,其中,所述存储器地址用于指示所述第一存储器中与所述图节点标识符对应的属性数据的存储位置,为了将接收到的第一图节点标识符对应的属性数据与先前存储在所述目标存储器地址的现存属性数据交换,所述图神经网络属性处理器被配置为:基于接收到的所述第一图节点标识符,获取所述图节点标识符表中的映射存储器地址,所述图节点标识符表包括图节点标识符与存储器地址之间的映射;以及将存储在所述映射存储器地址的属性数据与存储在所述第一存储器的目标存储器地址的现存属性数据交换。
在一些实施例中,为了确定与接收到的所述第一图节点标识符对应的属性数据是否缓存在所述第一存储器中,所述图神经网络属性处理器还被配置为:基于接收到的所述第一图节点标识符确定哈希值;确定所述哈希值是否存在于所述图节点标识符表中。
在一些实施例中,所述图神经网络属性处理器还被配置为:将包括接收到的所述第一图节点标识符和所述目标存储器地址的条目写入所述图节点标识符表。
在一些实施例中,所述第一存储器包括第一级缓冲器和第二级缓冲器,所述图节点标识符表中的映射是图节点标识符和所述第一级缓冲器的存储器地址之间的映射。
在一些实施例中,为了将获取到的、与接收到的所述第一图节点标识符对应的属性数据写入所述第一存储器的目标存储器地址,所述图神经网络属性处理器还被配置为:将先前存储在所述第一级缓冲器的目标存储器地址的现存属性数据写入所述第二级缓冲器;将所述获取的属性数据写入所述第一级缓冲器的目标存储器地址。
在一些实施例中,为了将现存属性数据写入所述第二级缓冲器,所述图神经网络属性处理器还被配置为:根据缓存替换策略,用所述现存属性数据替换出所述第二级缓冲器中的一个数据条目,其中所述缓存替换策略包括程度排序、最近最少使用(LRU)、最不经常使用(LFU)、最近最多使用(MRU)、先进先出(FIFO)、后进先出 (LIFO)或先进后出(FILO)中的至少一个。
在一些实施例中,为了确定与接收到的所述第一图节点标识符对应的属性数据是否缓存在所述第一存储器中,所述图神经网络属性处理器还被配置为:基于接收到的第一图节点标识符,确定所述属性数据是否缓存在所述第一存储器的第二级缓冲器中;响应于确定所述属性数据没有缓存在所述第二级缓冲器中,确定所述图节点标识符表是否包括与接收到的第一图节点标识符对应的条目;响应于确定所述图节点标识符表不包括与接收到的所述第一图节点标识符对应的条目,确定所述属性数据没有缓存在所述第一存储器中。
在一些实施例中,所述图神经网络属性处理器还被配置为:响应于确定与接收到的所述第一图节点标识符对应的属性数据缓存在所述第二级缓冲器中,将缓存在所述第二级缓冲器的属性数据与存储在所述第一级缓冲器的目标存储器地址的现存属性数据交换。
在一些实施例中,为了确定所述第一存储器内的目标存储器地址,所述图神经网络属性处理器还被配置为:基于接收到的所述第一图节点标识符和所述第一存储器的大小确定所述目标存储器地址。
在一些实施例中,为了确定与接收到的所述第一图节点标识符对应的属性数据是否缓存在所述第一存储器中,所述图神经网络属性处理器还被配置为:如果所述属性数据在所述第二级缓冲器中,或者所述图节点标识符表包括与接收到的所述第一图节点标识符对应的条目,则确定对应的属性数据缓存在所述第一存储器中。
在一些实施例中,所述第一存储器的第一级缓冲器和第二级缓冲器是所述硬件加速器中物理存储器的两个不同部分。
在一些实施例中,所述第一存储器是位于所述硬件加速器内的内部存储器,所述第二存储器是位于所述硬件加速器外的外部存储器。
根据本公开的另一方面,提供了一种用于加速图神经网络属性数据访问的计算机实现的方法。所述方法包括:由图神经网络加速器内的处理器接收图中图节点的第一图节点标识符;由所述处理器确定所述第一存储器内的目标存储器地址;由所述处理器确定与接收到的所述第一图节点标识符的属性数据是否缓存在所述第一存储器的目标存储器地址;响应于确定所述属性数据未缓存在所述第一存储器中:由所述处理器从第二存储器中获取所述属性数据,并由所述处理器将获取到的属性数据写入所述第一存储器的目标存储器地址。
本公开的实施例具有一个或多个技术效果。在一些实施例中,设计了一种多级属性数据高速缓存结构以提高获取图节点属性数据的存储器访问效率,并因此提高图神经网络计算的总体性能。多级属性数据高速缓存结构可以提高图节点属性数据的缓存命中几率。例如,在现有的解决方案中,当需要将新的图节点属性数据存储到属性随机存取存储器(RAM)的目标存储器地址时,将存储在目标存储器地址的现存属性数据从RAM中替换出。如果在随后的计算中需要被替换出的属性数据,则必须从外部存储器或存储介质中读取所述被替换出的属性数据,与属性随机存取存储器相比,外部存储器或存储介质通常容量更大,但访问速度更慢。这里描述的多级属性数据高速缓存结构引入另一层高速缓存作为暂存区域,以存储要被替换出的属性数据。附加的高速缓存层允许所述要被替换出的属性数据具有在RAM中再次被命中的另外机会,从而避免代价高的外部数据提取。在一些实施例中,多级属性数据高速缓存结构可以使用硬件加速器内的现有存储器来实现,而不需要额外的硬件/存储器芯片。例如,多级高速缓存可以实现为现有RAM的多个部分。这种与现有硬件的兼容性使得采用多级属性数据高速缓存结构简单和实用。
在参考附图考虑以下描述和所附权利要求后,所公开的***、方法和硬件设备的这些和其他特征,以及结构的相关元件的操作方法和功能以及批量生产的部件和经济性的结合变得更加明显,附图构成说明书的一部分,其中相同的参考标号表示图中的相应部分。然而,应当理解,附图仅用于说明和描述,并不作为本公开限制的定义。
具体实施例
本公开旨在使本领域技术人员能够制作和使用实施例,并本公开在特定应用及其需求的背景中提供。本公开实施例的各种修改对于本领域技术人员来说是显而易见的,并且本文中定义的一般原理可以应用于其他实施例和应用,而不脱离本公开的精神和范围。因此,本公开不限于所示的实施例,而是符合与本公开的原理和特征一致的最宽范围。
数据可以是结构化的,也可以是非结构化的。对于结构化数据,可以根据预先设置的数据模型或概要来安排信息。对于非结构化数据,可以不使用预设数据模型或预定义方式来安排信息。例如,文本文件(例如,电子邮件、报告等)可以包括不具有预定义结构的信息(例如,单个字母或单词)。因此,非结构化数据可包含不规则性和模糊性,这使得使用传统程序或数据结构很难理解。
使用图形是表示非结构化数据的一种方法。图是包含两个组成部分--节点(或顶点)和边的数据结构。例如,图G可以定义为一组节点V和该组节点之间的一组边E 的集合。图中的节点可以具有一组特征或属性(例如,用户配置文件)。例如,一个节点可以有多达f个特征。因此,对于节点数为n的图,节点特征矩阵的维度可以为n乘f。如果节点与另一个节点共享边,则该节点可以定义为另一个节点的相邻/邻接节点。图可以是高度灵活的数据结构,因为图可能不需要预定义的规则来确定图中必须有多少节点或边。由于图形可以提供很大的灵活性,所以它是广泛用于存储或表示非结构化数据(如文本文件)的数据结构之一。
图神经网络是一种可以直接对图进行操作的神经网络,在社会网络、知识图、推荐***甚至生命科学应用等各个领域都得到了越来越广泛的应用。根据使用场景的不同,图可能有不同的实际意义。例如,图神经网络可以挖掘社交媒体网络上用户的特征,从而学习用户之间的关系。又例如,纳米级分子具有固有的图形结构,离子或原子是节点,它们之间的键是边。图神经网络可以用来了解现有的分子结构和发现新的化学结构。在较高的层次上,图神经网络涉及对图结构G=(V,E)的计算, G=(V,E)表示图(无向或有向),其中,V表示顶点,E表示边,(V,E)可以表示为图中的数据集。图中的每个节点和边可以与属性数据相关联。因此,有效地存储和访问图节点或边的属性数据是提高图神经网络整体计算性能的关键。
图1示出根据本公开实施例的用于实现硬件加速器的硬件设备的示意图。图1 中的硬件设备示出了用于图神经网络计算的调度器220和图神经网络加速器230的内部结构,以及在调度器220、加速器230和外部存储器210之间的数据/指令流。
如图1所示,调度器220可以包括多个处理器222和由多个处理器222共享的高速缓存221。每个处理器222可以包括指令获取单元(IFU)223、指令解码单元(IDU)224、指令发送单元(ITU)225和指令执行单元(IEU)226。
在一些实施例中,指令获取单元223可以将要执行的指令或数据从存储器210提取到寄存器组229。在获得指令或数据之后,调度器220进入指令解码阶段。指令解码单元224根据预定的指令格式对所获得的指令进行解码,以确定操作数获取信息,其中执行所获得的指令需要操作数。在一些实施例中,操作数获取信息可以包括立即数、寄存器或提供操作数的其他软件/硬件的指针或地址。
在一些实施例中,指令发送单元225可以配置在指令解码单元224和指令执行单元226之间,用于指令调度和管理。指令发送单元225可以有效地将指令分配给不同的指令执行单元226以并行处理。
在一些实施例中,在指令发送单元225将指令分配给一个指令执行单元226之后,指令执行单元226可以执行所述指令。然而,如果指令执行单元226确定指令应该由加速器230执行,则指令执行单元226可以将所述指令转发到对应的加速器230以供执行。例如,如果指令指示基于输入图的图神经网络计算,则指令执行单元226可经由总线231将所述指令发送到加速器230,以供加速器230执行所述指令。
在一些实施例中,加速器230可以包括多个核236(图1中示出了4个核236,但是本领域技术人员可以理解,加速器230还可以包括其他数目的核236)、命令处理器237 和直接存储器访问(DMA)接口235以及总线通道231。
总线通道231可以包括指令/数据通过其进入和退出加速器230的通道。直接存储器访问接口235可以指由一些计算机总线结构提供的功能,所述功能使设备能够直接从存储器210读取数据和/或向存储器210写入数据。与设备间的所有的数据传输均通过调度器220的方法相比,图1所示的结构大大提高了数据访问效率。例如,加速器 230的核可以直接访问存储器210并读取神经网络模型的参数(例如,图中每个节点的权重)和/或输入数据。
命令处理器237可被配置为将指令分配给核236以供执行,所述指令由调度器220经由指令执行单元226发送给加速器230。在待执行指令从总线通道231进入加速器 230之后,所述待执行指令可被缓存在命令处理器237中,并且命令处理器237可选择核236并将所述指令分配给核236以执行。此外,命令处理器237还可负责核236之间的同步操作。
图神经网络计算在很大程度上依赖于图结构和图结构中节点/边的属性数据。例如,通常表示为特征向量的每个节点的属性数据,通过聚合-组合函数迭代嵌入在图神经网络计算阶段,以融和节点与其邻居节点之间的相互依赖或关系。在此过程中,图神经网络加速器230需要提取感兴趣的图节点/边的属性数据,并将所提取的数据馈送到属性处理单元(例如,像中央处理单元(CPU)、图形处理单元(GPU)、张量处理单元(TPU)、神经处理单元(NPU)等的处理器)以进行计算。由于要提取的数据量大和对外部存储器210的访问速度慢,在图神经网络加速器中提取属性数据的步骤通常被认为是性能瓶颈。为了解决这个问题,图神经网络加速器230可以提供属性高速缓存以保存从外部存储器210提取并用于属性处理单元使用的属性数据。图2描述了关于属性数据访问(例如,提取和存储)的图神经网络加速器230的示例性结构和数据流。
图2示出根据本公开实施例的用于加速图神经网络计算的图神经网络加速器240的内部结构图。图2仅示出了与属性数据提取和存储有关的硬件组件,并且根据实现方式,图神经网络加速器240可以包括更多、更少或用于实现其他适当功能的替代组件。
如图2所示,图神经网络加速器240包括图结构处理器241、图神经网络采样器242、图神经网络属性处理器243、存储器地址映射器244(在图2中表示为地址映射器)、以及属性随机存取存储器(RAM)245。属性随机存取存储器245可以指图神经网络加速器240内的内部存储器组。相比较而言,图2所示的外部存储器260是指与图神经网络加速器240分离的存储器组或存储介质。通常,属性随机存取存储器245提供比外部存储器260更快的数据访问速度,而外部存储器260提供比属性随机存取存储器245 更高的存储容量。
在一些实施例中,图结构处理器241可被配置为识别用于进行图神经网络计算的感兴趣的图节点或边。例如,为了计算给定根图节点的特征表示,“感兴趣的图节点”可以包括根图节点的邻居节点,邻居节点的特征将被嵌入到给定根图节点的特征表示中。为了识别邻居节点,图结构处理器241可以访问图结构的信息。基于图结构和根图节点的信息,图结构处理器241可以确定邻居图节点的图节点标识符。在一些实施例中,图结构处理器241可以使用存储器地址映射器244获得与根图节点相关的图结构的信息。例如,图结构处理器241可以将根图节点的标识符(以下称为ID) 输入到存储器地址映射器244中,以确定外部存储器260中的物理存储器地址。基于存储在外部存储器260的物理存储器地址的数据,图结构处理器241可以识别在后续图神经网络计算中可能涉及的多个邻居图节点。
在一些实施例中,不用对由图结构处理器241确定的多个邻居图节点的所有节点执行图神经网络计算,代替地,图神经网络采样器242可以采样图节点的子集,以减少要提取和计算的数据量。图神经网络采样器242可以执行正采样、负采样或两者都执行。正采样可以采样通过边与根图节点连接(直接或间接)的那些图节点(例如为,由邻居图节点构成的节点子集)。负采样可以采样未通过边与根图节点连接的那些图节点(例如为,不同于邻居图节点的节点子集)。在采样之后,图神经网络采样器242可以向图神经网络属性处理器243发送被采样的图节点的ID以提取所述被采样的图节点的属性数据。在后续的图神经网络计算中,将涉及到被采样的图节点的属性数据。
在一些实施例中,图神经网络属性处理器243可以被配置为从图神经网络采样器242接收被采样的图节点的ID,定位所述被采样的图节点的属性数据,并将所述属性数据存储到属性随机存取存储器245中,以供诸如CPU、GPU、TPU、NPU等的图神经网络处理单元250使用。图神经网络属性处理器243可以首先检查图节点的属性数据是否从先前的多个迭代已经被读入(来自上一个迭代的)属性随机存取存储器245。如果属性数据已经在属性随机存取存储器245中,则图神经网络属性处理器243可以跳过一次外部存储器访问。通过减少对外部存储器的访问次数,图神经网络加速器 240可以有效地提高属性数据访问效率,并由此提高整体图神经网络计算的性能。
例如,如果确定属性数据没有缓存在属性随机存取存储器245中,图神经网络属性处理器243可以将被采样的图节点的ID发送到存储器地址映射器244,以确定属性数据存储在外部存储器260的对应物理存储器地址。然后,图神经网络属性处理器243 可以从外部存储器260提取属性数据,并将提取的属性数据存储到属性随机存取存储器245中。在将提取的属性数据存储到属性随机存取存储器245时,图神经网络属性处理器243可以确定属性随机存取存储器245中的目标存储器地址以存储提取的属性数据。可以以各种方式确定目标存储器地址,例如,基于被采样图节点的ID和属性随机存取存储器245的可寻址存储器空间(或大小)、基于根据被采样图节点的ID所生成的哈希值,等等。
在一些实施例中,如果确定属性数据已经缓存在属性随机存取存储器245中,但位于与目标存储器地址不同的存储器地址,则图神经网络属性处理器243可以将属性数据与先前存储在目标存储器地址的数据交换。在交换之后,被采样的图节点的属性数据被正确地存储在目标存储器地址,而先前存储在目标存储器地址的数据现在被移动到先前存储被采样的图节点的属性数据的位置。
图3示出根据本公开实施例的具有多级属性高速缓存的示例性图神经网络加速器结构。在一些实施例中,多级属性高速缓存可以使用现有硬件在图神经网络加速器中的属性随机存取存储器245内实现。例如,属性随机存取存储器245可以被拆分为多个部分以实现多级属性高速缓存。在其他实施例中,可以添加新的硬件部件到图神经网络加速器240以实现多级属性高速缓存,新的硬件部件例如是新的高速缓存 /存储器芯片。图3中所示的组件是为了说明的目的。根据实现方式,属性随机存取存储器245可以包括更多、更少或替代组件以实现多级属性高速缓存。
在一些实施例中,属性随机存取存储器245可以包括两级高速缓存。在图3中,第一级高速缓存称为属性缓冲器248,第二级高速缓存称为属性高速缓存246。第一级高速缓存可被配置为存储先前从外部存储器提取的图节点的属性数据;与第一级高速缓存进行数据通信的第二级高速缓存可被配置为存储从第一级高速缓存替换出的图节点的属性数据。在一些实施例中,在从外部存储器260读取给定图节点的属性数据之前,图神经网络属性处理器243检查是否属性数据已经存储在第一级高速缓存或第二级高速缓存中。如果两级高速缓存之一存储有属性数据,则可以跳过外部存储器260的访问。图神经网络属性处理器243可以并行地检查两级高速缓存,并且结果可以被馈送到“或”门249(例如,电子电路)以确定属性数据是否已经在属性随机存取存储器245中。
在一些实施例中,第一级高速缓存,即属性缓冲器248,可以具有对应的ID表247,ID表247存储图节点的ID和属性缓冲器248内的存储器地址之间的映射。每个存储器地址指示属性缓冲器248中与图节点的ID对应的属性数据的存储位置。在一些实施例中,ID表247可以实现为哈希表。为了检查图节点的属性数据是否存储在属性缓冲器 248中,可以基于图节点的ID生成哈希值,然后检查哈希值是否存在于ID表247中。
第二级高速缓存,即属性高速缓存246,为从属性缓冲器248替换出的属性数据提供暂存区。不是直接替换出和丢弃,而是将这些属性数据存储在第二级高速缓存中,这为这些属性数据提供了在图神经网络属性随机存取存储器245中再次命中的第二次机会。实验数据表明,这些“第二次机会”提高了属性随机存取存储器245的高速缓存命中率,并因此减少了对外部存储器260的访问次数。在包含2050个节点的图的实验中,属性缓冲器248的大小被配置为100KB(可容纳200个节点的属性数据),属性高速缓存246的大小被配置为15KB(可容纳30个节点的属性数据),ID表247被配置为0.4KB(可容纳200个节点的ID)。多级高速缓存仅增加了15%的存储器消耗 (例如,属性高速缓存246的15KB对属性缓冲器248的100KB)就节省了45%的外部内存访问。这些增加的高速缓存命中背后的主要原因之一是图数据具有强数据局部性,即图中紧邻的不同根节点可能共享邻居节点。因此,不同图的根节点的图神经网络计算可能需要相同邻居节点的属性数据。
图4示出根据本公开实施例的在具有多级属性高速缓存的图神经网络加速器结构的示例性数据流。数据流涉及属性缓冲器440(即,第一级高速缓存)和属性高速缓存430(即,第二级高速缓存),分别对应于图3中的两级高速缓存248和246。
在一些实施例中,第一级高速缓存,即属性缓冲器440,用作属性数据存储库,图神经网络属性处理单元(例如,图2中的图神经网络处理单元250)可以从所述属性数据存储库中提取用于图神经网络计算的数据。第二级高速缓存,即属性高速缓存430,可将其本地缓存的数据写入第一级高速缓存中,但不允许由图神经网络属性处理单元直接访问。
在一些实施例中,给定图节点的属性数据需要存储在属性缓冲器440的指定目标存储器地址450,使得图神经网络属性处理单元可以具有关于在哪里读取用于计算的属性数据的信息。在一些实施例中,可由图神经网络属性处理器基于给定图节点ID 和/或属性缓冲器440的大小(例如,基于图节点ID生成的哈希值)来确定给定图节点的属性数据的“目标存储器地址”450。
图4所示的场景示出感兴趣的属性数据被缓存在属性高速缓存430中,并且随后被移动到属性缓冲器440的目标存储器地址450。
在一些实施例中,为了检查给定图节点的属性数据是否存储在属性高速缓存430中,可以对照属性高速缓存430检查图节点ID 412。如果没有高速缓存命中,则属性数据不在属性高速缓存430中。如果存在高速缓存命中,则属性数据位于属性高速缓存430内的映射地址432。存储在属性高速缓存430的映射地址432的属性数据可以与存储在属性缓冲器440的目标存储器地址450的原始属性数据交换(数据交换420)。在数据交换420之后,感兴趣的(给定图节点的)属性数据被存储在属性缓冲器440 的目标存储器地址450,并且原始属性数据现在被放置在属性高速缓存430(例如,暂存区)的映射地址432中以用于将来的高速缓存命中。
图5示出根据本公开实施例的在具有多级属性高速缓存的图神经网络加速器结构的另一示例性的数据流。数据流涉及属性缓冲器540和属性ID表530,分别对应于图3的两级高速缓存248和247。
在一些实施例中,属性ID表530存储图节点ID和在属性缓冲器540的存储器地址之间的映射。存储器地址指示与图节点ID对应的属性数据存储在属性缓冲器540中的位置。在一些实施例中,属性ID表530可以实现为哈希表。为了检查给定图节点的属性数据是否存储在属性缓冲器540中,可以使用给定图节点的图节点ID512来计算哈希值。如果哈希值存在于属性ID表530中,则表示给定图节点的属性数据位于属性缓冲器540的映射存储器地址533。如上所述,给定图节点的属性数据需要存储在属性缓冲器540中的目标存储器地址550。因此,当给定图节点的属性数据缓存在属性缓冲器540中但是缓存在与目标存储器地址550不同的映射地址533时,属性数据可以与存储在目标地址550的现存属性数据交换(数据交换520)。在数据交换520之后,给定图节点的属性数据存储在目标地址550。在一些实施例中,数据交换520可以触发 ID表更新542来更新属性ID表530,以反映由数据交换520引起的存储位置改变。
图6示出根据本公开实施例的在具有多级属性高速缓存的图神经网络加速器结构的另一示例性的数据流。数据流涉及属性高速缓存610(第二级高速缓存)、属性缓冲器640(第一级高速缓存)和属性ID表620。在一些实施例中,属性ID表 620与属性缓冲器640相关联,并用作存储在属性缓冲器640的属性数据的索引。属性高速缓存610可以是与属性缓冲器640及其相关联的属性ID表620分离的另一级高速缓存。这种多级属性高速缓存机制可以有效地减少外部存储器的访问次数,并因此提高属性数据提取以及整体图神经网络计算的性能。
当图神经网络属性数据处理器(例如,图3中的243)需要提取给定图节点(例如,被采样的邻居节点或被采样的负节点)的属性数据时,图神经网络属性数据处理器首先检查属性数据是否被缓存在属性高速缓存610或属性缓冲器640中。例如,可以将给定图节点的图节点ID 605输入到属性ID表620以确定对应的属性数据是否存储在属性缓冲器640中,以及将给定图节点的图节点ID 605输入到属性高速缓存610以确定对应的属性数据是否存储在其中。
在图6中,假设与图节点ID 605对应的属性数据没有存储在属性高速缓存610 或属性缓冲器640中。图6中的数据流示出了如何将从外部存储器提取的对应属性数据630填充到多级属性高速缓存中。在一些实施例中,属性数据630可以被写入属性缓冲器640中的目标存储器地址644。不是在属性缓冲器640中覆盖先前存储在目标地址644的现存属性数据,而可以将先前存储在目标地址644的现存属性数据迁移(高速缓存写入642)到属性高速缓存610中。如果属性高速缓存610已经填满,则高速缓存写入642可以根据缓存替换策略使属性高速缓存610替换出一个或多个高速缓存条目。缓存替换策略包括程度排序、最近最少使用(LRU)、最不经常使用(LFU)、最近最多使用(MRU)、先进先出(FIFO)、后进先出(LIFO)、先进后出(FILO) 或另一适当的缓存替换策略中的至少一个。
在一些实施例中,在目标地址644写入属性数据630以及将现存属性数据从属性缓冲器640迁移到属性高速缓存610都需要通过表更新643反映在属性ID表620 中。例如,可以将图节点ID 605和目标地址644之间的新映射添加到属性ID表620 中,并且可以从属性ID表620中移除与被迁移的属性数据(现在存储在属性高速缓存610中)相关联的现有映射。
图7示出根据本公开实施例的使用多级属性高速缓存加速图神经网络属性访问的示例性方法700。方法700可以在图1所示的环境中实现。方法700可以由图1-6 所示的设备、装置或***来执行,例如加速器240或图神经网络属性处理器243。根据实施方式,方法700可包括以各种顺序或并行方式执行的附加、较少或替代步骤。
在步骤710中,由图神经网络加速器内的处理器接收图中图节点的图节点标识符。
在步骤720中,由处理器确定第一存储器内的目标存储器地址(对应于图2中的属性随机存取存储器245或图3中的属性缓冲器248)。
在步骤730中,由处理器确定与接收到的图节点标识符对应的属性数据是否缓存在第一存储器的目标存储器地址中。
在步骤742中,如果缓存未命中(例如,与接收到的图节点标识符对应的属性数据没有缓存在第一存储器中),则由处理器从第二存储器(对应于图3中的外部存储器260)获取属性数据;在步骤744中,由处理器将获取到的属性数据写入第一存储器的目标存储器地址。在一些实施例中,方法700可进一步包括由处理器将接收到的图节点标识符与目标存储器地址之间的映射存储到图节点标识符表中,将与接收到的图节点标识符对应的属性数据存储在所述目标存储器地址中。
在一些实施例中,第一存储器包括第一级高速缓存(对应于图3中的属性缓冲器248)和第二级高速缓存(对应于图3中的属性高速缓存246),并且图节点标识符表中的映射是接收到的图节点标识符和第一级高速缓存中的目标存储器地址之间的映射。在一些实施例中,将获取到的属性数据写入第一存储器的目标存储器地址包括:将先前存储在第一级高速缓存中的目标存储器地址的现存属性数据写入第二级高速缓存;将获取到的属性数据写入第一级高速缓存中的目标存储器地址。
在一些实施例中,确定与接收到的图节点标识符对应的属性数据是否缓存在第一存储器中包括:基于接收到的图节点标识符确定属性数据是否缓存在第一存储器的第二级高速缓存中;响应于确定属性数据未缓存在第二级高速缓存中,确定图节点标识符表是否包括与接收到的图节点标识符对应的条目;以及响应于确定图节点标识符表中不包括与所接收到的图节点标识符对应的条目,确定属性数据没有缓存在第一存储器中。
在步骤752中,如果存在具有错误存储器地址的高速缓存命中(例如,与所接收到的图节点标识符对应的属性数据缓存在第一存储器中,但缓存在与目标存储器地址不同的当前存储器地址),则将缓存在当前存储器地址的属性数据与缓存在第一存储器的目标存储器地址的现存属性数据交换。
图8示出根据本公开实施例的使用多级属性高速缓存加速图神经网络属性访问的计算机***设备800的框图。下面呈现的计算机***设备800的组件旨在说明。根据实施方式,计算机***设备800可以包括附加的、较少的或替代的组件。
计算机***设备800可以是实现图7的方法的示例。计算机***设备800可以包括一个或多个处理器和一个或多个非瞬时性计算机可读存储介质(例如,一个或多个存储器),非瞬时性计算机可读存储介质耦合到一个或多个处理器并配置有可由一个或多个处理器执行的指令,以使***或设备(例如,处理器)执行上述实施例。计算机***设备800可以包括对应于指令(例如,软件指令)的各种单元/模块。
在一些实施例中,计算机硬件设备800可为视为具有多级属性高速缓存以加速图神经网络属性访问的设备。计算机硬件设备800可以包括接收组件810、第一确定组件820、第二确定组件830、以及读取和写入组件840。这些组件可以由图1-7所示的硬件设备和电子电路来实现。
在一些实施例中,接收组件810可以被配置为接收图节点标识符,以获取与图节点标识符对应的属性数据。第一确定组件820可被配置为基于图节点标识符来确定第一存储器内的目标存储器地址。第二确定组件830可被配置为基于接收到的图节点标识符来确定与接收到的图节点标识符对应的属性数据是否被缓存在第一存储器中的目标存储器地址。读取和写入组件840可被配置为响应于确定属性数据未缓存在第一存储器中,从第二存储器读取属性数据,并将读取的属性数据写入第一存储器中的目标存储器地址。
在前面部分中描述的每个过程、方法和算法可以体现在由包括计算机硬件的一个或多个计算机***或计算机处理器完全或部分自动化执行的代码模块中。所述过程和算法可以部分地或全部地在专用电路中实现。
当本文公开的功能以软件功能单元的形式实现并作为独立产品出售或使用时,它们可以存储在处理器可执行的非易失性计算机可读存储介质中。本文公开的特定技术解决方案(全部或部分)或有助于当前技术的方面可以以软件产品的形式体现。软件产品包括多个指令,可以存储在存储介质中,以使计算设备(可以是个人计算机、服务器、网络设备等)执行本公开实施例的方法的全部或一些步骤。存储介质可以包括闪存驱动器、便携式硬盘驱动器、ROM、RAM、磁盘、光盘、可操作用于存储程序代码的另一介质或其任何组合。
特定实施例还提供一种***,***包括处理器和存储可由处理器执行的指令的非瞬时性计算机可读存储介质,以使***执行对应于上述实施例的任何方法中的步骤的操作。
特定实施例还提供了一种非瞬时性计算机可读存储介质,其配置有可由一个或多个处理器执行的指令,以使一个或多个处理器执行对应于上述实施例的任何方法中的步骤的操作。
本文公开的实施例可以通过与客户端交互的云平台、服务器或服务器组(以下统称为“服务器***”)来实现。客户端可以是终端设备,或者由用户在平台上注册的客户端,其中终端设备可以是移动终端、个人计算机(PC)以及可以安装有平台应用程序的任何设备。
上面描述的各种特征和过程可以彼此独立地使用,或者可以以各种方式组合。所有可能的组合和子组合意在落入本公开的范围内。此外,在一些实施例中,某些方法或进程块可能被省略。这里描述的方法和过程也不限于任何特定顺序,并且与之相关的块或状态可以在适当的其他顺序中执行。例如,所描述的块或状态可以以特定公开的顺序以外的顺序执行,或者多个块或状态可以组合在单个块或状态中。示例块或状态可以串行、并行或以某种其他方式执行。块或状态可以添加到所公开的示例实施例中或从所公开的示例实施例中移除。这里描述的示例性***和组件可以与所描述的不同地配置。例如,与所公开的示例实施例相比,可以添加、移除或重置元件。
这里描述的示例方法的各种操作可以通过算法至少部分地执行。算法可以包括在存储在存储器(例如,上面描述的非瞬时性计算机可读存储介质)中的程序代码或指令中。这种算法可以包括机器学习算法。在一些实施例中,机器学习算法可以不显式地对计算机进行编程以执行功能,而可以从训练数据中学习以做出执行该功能的预测模型。
这里描述的示例方法的各种操作可以由临时配置(例如,通过软件)或永久配置以执行相关操作的一个或多个处理器至少部分地执行。无论临时还是永久配置,这样的处理器可以构成处理器实现的引擎,其操作以执行本文描述的一个或多个操作或功能。
类似地,这里描述的方法可以至少部分地由处理器实现,其中特定的一个或多个处理器是硬件的示例。例如,方法的至少一些操作可以由一个或多个处理器或处理器实现的引擎执行。此外,一个或多个处理器还可以操作以支持在“云计算”环境中或作为“软件服务化”(SaaS)的相关操作的性能。例如,至少一些操作可以由一组计算机(作为包括处理器的机器的示例)执行,这些操作可以通过网络(例如,因特网)和通过一个或多个适当的接口(例如,应用程序接口(API))访问。
某些操作的性能可以分布在处理器之间,不是仅驻留在一台机器内,而是部署在多台机器上。在一些示例实施例中,处理器或处理器实现的引擎可以位于单个地理位置(例如,在家庭环境、办公室环境或服务器场中)。在其他示例实施例中,处理器或处理器实现的引擎可以分布在多个地理位置上。
在本公开中,多个实例可以实现被描述为单个实例的组件、操作或结构。尽管一个或多个方法的单独操作被示出和描述为单独操作,但是单独操作中的一个或多个可以同时执行,并且不需要以示出的顺序执行操作。在示例配置中作为单独组件呈现的结构和功能可以实现为组合的结构或组件。类似地,作为单个组件呈现的结构和功能可以作为单独的组件实现。这些和其他变化、修改、添加和改进落在本文主题的范围内。
尽管已经参考特定示例实施例描述了主题的概述,但在不偏离本公开的实施例的更广范围的情况下,可以对这些实施例进行各种修改和改变。在此,本公开的这些实施例可以单独地或共同地通过术语“本公开”来指代,仅仅是为了方便,并且不打算自动地将本公开的范围限制在任何单个公开或概念,如果事实上公开了不止一个公开或概念的话。
本文所示的实施例被足够详细地描述,以使本领域技术人员能够实践所公开的教导。可以使用并由此导出其他实施例,使得可以在不脱离本公开的范围的情况下进行结构和逻辑替换和改变。因此,具体实施例的详细描述不应被理解为限制性的,并且各种实施例的范围仅由所附的权利要求书以及这些权利要求书有权享有的全部等价物范围来定义。
本文中描述的和/或附图中描述的流程图中的任何过程描述、元素或块应理解为潜在地表示包括用于在过程中实现特定逻辑功能或步骤的一个或多个可执行指令的代码的模块、段或部分。如本领域技术人员所理解的,在这里所描述的实施例的范围内包括替代实现,其中根据所涉及的功能,元素或功能可以从所示或所讨论中被删除、无序地执行,包括基本上同时执行或以相反的顺序执行。
如本文所用,“或”是包含的,而不是排斥的,除非另有明确指示或上下文另有指示。因此,在这里,“A、B或C”指“A、B、A和B、A和C、B和C、或A、B 和C”,除非另有明确指示或上下文另有指示。此外,“和”是连带的和个别的,除非另有明确表示或上下文另有表示。因此,在此,“A和B”指“A和B,共同地或分别地”,除非另有明确指示或上下文另有指示。此外,可以为在此描述为单个实例的资源、操作或结构提供多个实例。此外,各种资源、操作、引擎和数据存储之间的边界是任意的,并且在特定说明性配置的上下文中说明特定操作。设想了功能的其他分配,并且可以落在本公开的各种实施例的范围内。通常,在示例配置中作为单独资源呈现的结构和功能可以被实现为组合的结构或资源。类似地,作为单一资源呈现的结构和功能可以作为单独的资源实现。这些和其他变化、修改、添加和改进落在如所附权利要求所表示的本公开的实施例的范围内。因此,说明书和附图被视为说明性的而不是限制性的。
术语“包括”或“包含”用于表示随后声明的特征的存在,但不排除添加其他特征。条件语言,例如,除其他外,“可能”或“可以”,除非另有明确说明,或在所使用的上下文中以其他方式理解,一般旨在传达某些实施例包括某些特征、元素和/或步骤,而其他实施例不包括。因此,这种条件语言通常并不意味着特征、元素和/或步骤是一个或多个实施例以任何方式所需要的,或者一个或多个实施例必须包括用于在有或没有用户输入或提示的情况下决定这些特征、元素和/或步骤是否包括或将在任何特定实施例中执行的逻辑。