发明内容
参照以下描述和附图可以最佳地理解本公开,所述附图用于说明本公开实施例的加速图神经网络(GNN)处理的存储系统。
本公开的一个目的是实现加速图神经网络处理的计算系统。
在一个实施例中,一种用于处理图数据的计算系统可以包括:易失性存储器、与所述易失性存储器通信耦合的主机、以及与所述主机和所述易失性存储器通信耦合的非易失性存储器。所述主机包括预取控制单元,所述预取控制单元被配置为请求多个根节点的数据。所述非易失性存储器可以被配置为存储图数据。所述非易失性存储器可包括节点预置控制单元,所述节点预置控制单元被配置为响应于对所述多个根节点的对应请求,从所述图数据中提取多组根节点和邻居节点以及对应的属性。所述节点预置控制单元还被配置为以预设数据结构将所述多组根节点和邻居节点以及对应的属性写入所述易失性存储器。
在另一实施例中,一种用于图神经网络处理的存储分层方法,包括:由主机请求根节点的数据。由非易失性存储器提取所述根节点和对应邻居节点的分组的结构数据和属性数据。也由所述非易失性存储器将所述根节点和对应邻居节点的分组的结构数据和属性数据以预设数据结构写入易失性存储器。由所述主机从所述易失性存储器将所述根节点和对应邻居节点的分组的结构数据和属性数据读出,放入所述主机的高速缓存中。由所述主机处理所述根节点和对应邻居节点的分组的结构数据和属性数据。
通过上述方案,使得可以提高计算系统的图神经网络处理速度。
提供发明内容部分是为了以简要形式介绍发明构思的选择,在下面的具体实施例中将进一步描述发明构思。本发明内容部分的目的并非指明所要求保护的主题的关键特征或基本特征,也不是要用来限制所要求保护的主题的范围。
具体实施例
现在将详细说明本公开的实施例,其示例在附图中示出。尽管将结合实施例来描述本公开,但是应当理解,其目的并非将本公开限制于这些实施例。相反,本公开旨在覆盖所附权利要求限定的本公开的范围内的替代方案、修改方案和等同方案。此外,在下面对本公开实施例的详细描述中,阐述了许多具体细节,以便提供对本公开的透彻理解。然而,应当理解,本公开可以在无需这些具体细节的情况下实施。在另一些情况下,为了避免模糊本公开的方面,公知的方法、过程、部件和电路未进行详细描述。
下文中本公开的一些实施例是按照例程、模块、逻辑块、以及对一个或多个电子设备内的数据的操作的其他符号形式来呈现的。这些描述和形式是本领域技术人员采用的将工作实质最有效地传达给本领域技术人员的方式。在本文中,例程、模块、逻辑块和/或类似物通常认为是导致期望结果的过程或指令的自洽序列。这些过程包括对物理量的物理操作。尽管并非必要,通常这些物理操作采取的形式是能够在电子设备中存储、传输、比较和以其他方式操作的电或磁信号。为方便起见,以及参考公共用法,参考本公开实施例,这些信号称为数据、比特、值、要素、符号、字符、术语、数字、字符串等。
然而,应当记住,这些术语将解释为提及物理操作和物理量,并且仅仅是方便的标记,并且将根据本领域中常用的术语进一步解释。除非在下面的讨论中显而易见地特别说明,否则应当理解,在本公开实施例的全部讨论中,使用诸如“接收”等术语的讨论指的是电子设备的动作或过程,电子设备例如是操纵和转换数据的电子计算设备。数据表示为电子设备的逻辑电路、寄存器、存储器等内部的物理(例如,电子)量,并被转换成类似地表示为电子设备内的物理量的其他数据。
在本公开中,析取词的使用意在包括合取词。定冠词或不定冠词的使用并非意在指示基数。特别地,对“所述”对象或“一个”对象的引述意在也表示可能存在的多个这种对象之一。术语“包括”、“包含”等的使用指定存在所述元件,但不排除存在或添加一个或多个其他元件和/或元件组。还应理解,尽管术语第一、第二等可用于描述不同元件,然而,这些元件不应受到这些术语的限制。这些术语用来将一个元件与另一个元件彼此区分。例如,第一元件可以被称为第二元件,并且类似地,第二元件可以被称为第一元件,而不脱离实施例的范围。还应当理解,当一个元件被称为“耦合”到另一个元件时,它可以直接或间接地连接到另一个元件,或者可以存在一个中间元件。相反,当一个元件被称为“直接连接”到另一个元件时,则不存在中间元件。还应理解,术语“和/或”包括一个或多个相关联元件的任何组合和所有组合。还应理解,这里使用的短语和术语是出于描述的目的,而不应被视为限制性的。
参照图2,图2示出根据本公开实施例的图神经网络(GNN)处理系统。图神经网络处理系统200可以包括主机210、易失性存储器(VM)220和非易失性存储器(NVM)230,主机210、易失性存储器(VM)220和非易失性存储器(NVM)230通过一个或多个通信链路240通信地耦合在一起。主机210可以包括一个或多个处理单元、加速器等(图中未示出)、节点预取控制单元250和高速缓存260。在一个实施例中,高速缓存260可以是静态随机存取器(SRAM)等。主机210可以包括与本公开的理解方面不相关的许多其他子系统,在此不对其进行描述。
易失性存储器220可以包括一个或多个控制单元和一个或多个存储单元阵列(图中未示出)。易失性存储器220的一个或多个存储单元阵列可以组织在一个或多个通道、多个块、多个页,等等中。在一个实施例中,易失性存储器220可以是动态随机存取器(DRAM)等。易失性存储器220可以包括与本公开的理解方面不相关的许多其他子系统,在此不对其进行描述。
非易失性存储器230可包括节点预置控制单元270和一个或多个存储单元阵列280。非易失性存储器230的一个或多个存储单元阵列280可以组织在一个或多个通道、多个块、多个页,等等中。在一个实施例中,非易失性存储器230可以是闪存存储器等。非易失性存储器230可以包括与本公开的理解方面不相关的许多其他子系统,在此不对其进行描述。非易失性存储器230可被配置为存储包括多个节点和相关联的节点属性的图数据。
图神经网络(GNN)处理系统可配置为处理图数据。在一个图中,数据被设置为节点、边和属性的集合。节点可以表示实体、实例等,边可以表示节点之间的关系并允许数据关联在一起。属性可以是与节点和边密切相关的信息。图中的任何节点都可以被认为是对图数据执行的给定处理的根节点。通过对应的边直接连接到给定的根节点的这些节点可以认为是第一级邻居节点。通过对应的边通过第一级邻居节点耦合到给定根节点的那些节点可以被认为是第二级邻居节点,以此类推。对给定节点的处理可以在包括作为根节点的给定节点、根节点的一个或多个级别的邻居节点、以及对应属性的分组上执行。
主机210的节点预取控制单元250可被配置为从非易失性存储器230为多个根节点请求数据。非易失性存储器230的节点预置控制单元270可被配置为为每个被请求的根节点提取多组根节点和邻居节点数据。接着,节点预置控制单元270可以被配置为以预设数据结构将所述多组根节点和邻居节点数据写入易失性存储器220。可选地,多组根节点和邻居节点数据可以缓存在非易失性存储器230的存储单元阵列280中,直到所述多组根节点和邻居节点数据被写入易失性存储器220。
图3A至图3B示出了本公开实施例的用于图神经网络(GNN)处理的存储分层方法。参见图3A至图3B,下面将进一步说明根据本公开实施例的用于图神经网络处理系统的操作。用于图神经网络处理的存储分层方法包括:在步骤310中,将对根节点的数据请求从主机210发送到非易失性存储器220。在一个实施例中,主机210的节点预取控制单元250可以生成对给定根节点相关数据的请求,并且通过一个或多个通信链路240将该请求发送到非易失性存储器230的节点预置控制单元270。在步骤320中,可以由非易失性存储器220从主机210接收对根节点的数据的请求。
在步骤330中,提取包括被请求的根节点和所述被请求的根节点的对应邻居节点的分组的结构数据和属性数据。在一个实施例中,非易失性存储器230的节点预置控制单元270可以从非易失性存储器230的一个或多个存储单元阵列280提取所述根节点和对应邻居节点的分组的结构数据和属性数据。在步骤340中,可以从非易失性存储器230将所述根节点和对应邻居节点的分组的结构数据和属性数据读出,放入易失性存储器220。在一个实施例中,节点预置控制单元270可以将包括被请求的根节点和对应的邻居节点的分组的结构数据和属性数据写入易失性存储器220。在步骤350中,可以由易失性存储器220以预设数据结构存储所述根节点和对应邻居节点的分组的结构数据和属性数据。在一个实施例中,所述预设数据结构可以包括易失性存储器220的用于存储所述根节点和邻居节点的编号的第一部分以及包括所述对应节点的属性数据的第二部分。在一个实施例中,所述给定根节点、对应的邻居节点和对应的属性数据的分组可以以所述预设数据结构存储在一个或多个页中。
在步骤360中,可以由主机210从易失性存储器220将所述根节点和对应邻居节点的分组的结构数据和属性数据读出。在一个实施例中,对于当前要处理的根节点,可以从易失性存储器220将包括所述根节点和对应邻居节点的分组的结构数据和属性数据读出,放入主机210中。在步骤370中,在主机210的高速缓存260中保存所述根节点和对应邻居节点的分组的结构数据和属性数据。在步骤380中,为当前根节点处理所述根节点和对应邻居节点的分组的结构数据和属性数据。在一个实施例中,根据在线购物引擎、社交网络、知识图、推荐引擎、映射引擎、故障分析、网络管理、生命科学和搜索引擎等应用,主机210可以对当前根节点的包括所述根节点和对应邻居节点的分组的结构数据和属性数据执行一个或多个处理。对于由主机210处理的多个根节点中的每一个根节点,可以重复步骤310-步骤380的处理。
现参考图4,图4示出了本公开实施例的图神经网络处理系统的非易失性存储器。如上所述,非易失性存储器230可包括一个或多个存储器单元阵列410-430和节点预置控制单元270。节点预置控制单元270可以包括配置引擎440、结构物理页地址(physical pageaddress,PPA)解码器450、属性收集引擎460和传输引擎470。配置引擎440、结构物理页地址解码器450、属性收集引擎460和传输引擎470可以由状态机、嵌入式控制器等实现。在一个实施例中,图数据可以包括结构数据带和属性数据带。结构数据带可以包括关于每个节点以及每个给定节点的一个或多个级别的邻居节点的识别数据。属性数据带可以包括每个节点的属性数据。在一个实施例中,结构数据带可以存储在单级单元(single level cell,SLC)存储器阵列410中,属性数据带可以存储在多级单元(multilevel cell,MLC)存储器阵列420中。单级单元存储器阵列410具有相对较快的读/写速度、较低的存储器容量的特征,可用于存储结构数据,结构数据通常占图数据总量的约10%-30%。多级单元存储器阵列420具有相对较慢的读/写速度、较高的存储器容量的特征,可用于存储属性数据,属性数据通常占图数据总量的约70%-90%。
现参考图5,图5示出了本公开实施例的图神经网络(GNN)处理系统的主机和易失性存储器。如上所述,主机210可以包括节点预取控制单元250和高速缓存260。节点预取控制单元250可以包括预取控制引擎510、访问引擎520和键值高速缓存引擎530。预取控制引擎510、访问引擎520和键值高速缓存引擎530可以由状态机、嵌入式控制器等实现。在一个实施例中,预取控制引擎510可以被配置为生成用于对多个节点中的每一个节点进行采样的命令。每个命令都可以标识预设的给定节点。预取控制引擎510可以将节点采样命令发送到非易失性存储器230的节点预置控制单元270的配置引擎440。
再次参考图4,配置引擎440可以接收用于对多个节点中的每一个节点进行采样的节点采样命令。配置引擎440可以对结构数据和属性数据进行采样,以确定命令的给定节点和图数据的一个或多个级别的邻居节点的属性。结构物理页地址解码器450可以被配置为从对应节点的节点编号中确定图数据的属性数据带中一个或多个级别的邻居节点的物理地址。属性收集引擎460可以被配置为在确定的物理地址读取根节点和邻居节点的编号以及其属性,并将所述根节点和邻居节点的编号以及其属性打包以存储在易失性存储器220的块中。例如,属性收集引擎460可以对根节点的第一级邻居节点进行采样。属性收集引擎460还可以从第一级邻居节点对第二级邻居节点进行采样,并对预定数量个级别的邻居节点进行类似操作。然后,属性收集引擎460可以收集根节点和预定数量个级别的对应邻居节点的对应属性。在一个示例性的实施例中,一个属性可以包括128个元素,每个元素为32比特并且包括512字节的数据。512字节的数据可以是一个逻辑块地址(logical blockaddress,LBA)的大小。八个属性可以组合成一个4千字节的块,一个16千字节的页可以容纳32个属性。因此,在这样的实施例中,两级的图神经网络邻居节点可以平均共有25个邻居节点,这样,一个页可以容纳所有的属性。但是,如果两级的邻居节点包括超过25个邻居节点,则可以利用额外的页。因此,根节点和邻居节点以及对应的属性的分组数据可以在每个不同根节点的新页上开始存储。传输引擎470可以被配置为在易失性存储器220的给定块中存储根节点和邻居节点的编号及其属性的打包分组。可选地,如果易失性存储器220当前已满,则传输引擎470将根节点和邻居节点的编号及其属性的打包分组写入非易失性存储器230中的预设节点带。在一个实施例中,预设节点带可以存储在单级单元存储器阵列430中。配置引擎440还可以被配置为发送每个节点采样命令的完成指示给主机210。
再次参考图5,访问引擎520可被配置为将根节点和邻居节点的编号及其属性的打包分组加载至易失性存储器220的给定块中。访问引擎520还可被配置为从易失性存储器220读出下一组根节点和对应邻居节点以及对应属性,放入高速缓存260中,以供主机210处理。预取控制单元510可以从节点预置控制单元270的配置引擎440接收每个采样完成的指示。只要易失性存储器220未满,预取控制单元510可以继续发送用于采样另外节点的命令。键值高速缓存引擎530可以被配置为维护最近访问节点的表。在一个实施例中,信息可以包括具有设置为节点编号的键和设置为节点属性的值的表。然后,可以查表以查看是否高速缓存260中已经具有给定节点的数据。该表还可用于剔除最近最少使用的根节点和邻居节点以及对应的属性的分组,以便在高速缓存260中为新的一组根节点和邻居节点以及对应的属性腾出空间。
根据本公开实施例,对于主机接下来要处理的多个根节点,易失性存储器可以有利地保存多组根节点和邻居节点以及对应属性。而且,所述多组根节点和邻居节点以及对应的属性被准备在易失性存储器中,因此,可以有利地被顺序访问,从而提高非易失性存储器的读取带宽。本公开实施例有利地允许节点信息从高容量非易失性存储器加载到易失性存储器中,然后加载到主机的高速缓存中,这可以节省时间和功耗。因为非易失性存储器通常比易失性存储器便宜大约20倍,所以在非易失性存储器中存储图数据,并且仅在易失性存储器中存储接下来的多组根节点和邻居节点以及对应的属性,有利于降低系统的成本。与易失性存储器相比,因为不需要刷新非易失性存储器,所以将图数据存储在非易失性存储器中也利于节省功耗。非易失性存储器的大容量也可利于使整个图数据能够被存储。根据本公开实施例,节点采样方便地在非易失性存储器中完成,然后预取到易失性存储器220中,然后高速缓存,通过以较少的数据移动进行近数据处理来提高性能。
对于本公开实施例的前述描述是为了说明和描述的目的而呈现的。前述描述并非意在排他或限制本公开为所公开的精确形式,在上述教导的启示下显然可能实现许多修改和变化。实施例的选择和描述是为了最好地解释本公开的原理及其实际应用,从而使本领域的其他技术人员能够最好地利用本公开以及利用对于预期的特定用途合适的各种修改的各种实施例。本公开的范围由所附权利要求及其等同物限定。