CN117389921A - 一种存储扩展卡和系统 - Google Patents

一种存储扩展卡和系统 Download PDF

Info

Publication number
CN117389921A
CN117389921A CN202210773546.5A CN202210773546A CN117389921A CN 117389921 A CN117389921 A CN 117389921A CN 202210773546 A CN202210773546 A CN 202210773546A CN 117389921 A CN117389921 A CN 117389921A
Authority
CN
China
Prior art keywords
processing unit
memory expansion
ppu
type
memory
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
CN202210773546.5A
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.)
Alibaba China Co Ltd
Original Assignee
Alibaba China Co Ltd
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 Alibaba China Co Ltd filed Critical Alibaba China Co Ltd
Priority to CN202210773546.5A priority Critical patent/CN117389921A/zh
Priority to US18/070,418 priority patent/US20240005127A1/en
Publication of CN117389921A publication Critical patent/CN117389921A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/16Constructional details or arrangements
    • G06F1/1613Constructional details or arrangements for portable computers
    • G06F1/1632External expansion units, e.g. docking stations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/17Interprocessor communication using an input/output type connection, e.g. channel, I/O port
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Computer Hardware Design (AREA)
  • Neurology (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)

Abstract

本申请描述了一种存储扩展卡和系统。一示例性的系统包括多个处理单元,每个处理单元用于执行图形神经网络(GNN)处理;以及多个存储扩展卡,每个存储扩展卡用于存储用于GNN处理的图数据,其中,每个处理单元分别通过一个或多个互连单元与其他处理单元通信耦合;多个处理单元分别与多个存储扩展卡通信耦合;每个存储扩展卡包括图访问引擎电路,图形访问引擎电路用于加速GNN处理的存储器访问。该方案能够提高GNN处理的存储器访问性能。

Description

一种存储扩展卡和系统
技术领域
本公开一般涉及人工智能技术领域,尤其是一种存储扩展卡和系统。
背景技术
虽然传统的深度学习模型善于通过捕获欧几里得数据(例如图像、文本、视频) 的隐藏模式来进行模式识别和数据挖掘,但图神经网络(graph neural network,GNN) 已将机器学习的能力扩展到对象之间具有复杂关系和相互依赖的图所表示的非欧几 里德领域。研究表明,对于从分子推理到社区检测等应用,图神经网络都超过当前 最先进的水平。
图神经网络是非结构化数据建模和处理的非常有效的模型。近来,图神经网络 在推荐系统、风险控制系统等应用中使用得越来越多。但图数据是非结构化的,因 此,访问图数据可能导致随机存储器访问。
发明内容
根据一个方面,一种系统,包括第一处理单元、第二处理单元、第三处理单元、 第四处理单元、第一存储扩展卡、第二存储扩展卡、第三存储扩展卡和第四存储扩 展卡,第一处理单元、第二处理单元、第三处理单元和第四处理单元中的每一个用 于执行图神经网络(GNN)处理,第一存储扩展卡、第二存储扩展卡、第三存储扩 展卡和第四存储扩展卡中的每一个用于存储用于图神经网络处理的图数据,其中, 第一处理单元、第二处理单元、第三处理单元和第四处理单元中的每一个通过第一 类型的互连单元分别与第一存储扩展卡、第二存储扩展卡、第三存储扩展卡和第四 存储扩展卡中的每一个通信耦合;第一处理单元通过第一类型的互连单元与第三处 理单元和第四处理单元中的每一个通信耦合;第二处理单元通过第一类型的互连单 元与第三处理单元和第四处理单元中的每一个通信耦合;第一处理单元通过两个第 二类型的互连单元与第二处理单元通信耦合;第三处理单元通过两个第二类型的互 连单元与第四处理单元通信耦合;第一存储扩展卡通过第三类型的互连单元与第二 存储扩展卡和第三存储扩展卡中的每一个通信耦合;第四存储扩展卡通过第三类型 的互连单元与第二存储扩展卡和第三存储扩展卡中的每一个通信耦合;以及第一存 储扩展卡、第二存储扩展卡、第三存储扩展卡和第四存储扩展卡中的每一个包括图访问引擎电路,图访问引擎电路用于加速图神经网络处理的存储器访问。
在一些实施例中,第二类型的互连单元的带宽是第一类型的互连单元的带宽的一半。
在一些实施例中,第一类型的互连单元的形状因子(form factor)是两个 QSFP-DD端口,两个QSFP-DD端口的带宽等于或大于100GB/s。
在一些实施例中,第二类型的互连单元的形状因子是四个Mini-SAS端口,四个Mini-SAS端口的带宽等于或大于50GB/s;第一处理单元通过两个第二类型的互连 单元与第二处理单元并行地通信耦合;和第三处理单元通过两个第二类型的互连单 元与第四处理单元并行地通信耦合。
在一些实施例中,第三类型的互连单元的形状因子是一个QSFP-DD端口, QSFP-DD端口的带宽等于或大于50GB/s。
在一些实施例中,多个存储扩展卡中的每个存储扩展卡还用于在本地存储器操作和通过第一类型或第二类型的一个或多个互连单元进行的数据包传输之间执行数 据转换。
在一些实施例中,多个存储扩展卡中的每个存储扩展卡包括交换机,该交换机 用于对通过一个或多个第三类型的互连单元从一个或多个存储扩展卡接收的数据执 行数据旁路。
在一些实施例中,图访问引擎电路还用于:从一个或多个存储扩展卡提取图的 部分结构数据;使用提取到的图的部分结构数据执行节点采样,以选择一个或多个 采样节点;根据所选的一个或多个采样节点,从一个或多个存储扩展卡提取图的部 分属性数据;以及将提取到的图的部分属性数据发送给一个或多个处理单元。
在一些实施例中,每个处理单元还用于使用提取到的属性数据对图执行图神经网络(GNN)处理。
在一些实施例中,每个存储扩展卡在现场可编程门阵列(field programmablegate array,FPGA)上实现。
根据另一方面,一种系统,包括:多个处理单元,每个处理单元用于执行图神 经网络(GNN)处理;以及多个存储扩展卡,每个存储扩展卡用于存储用于GNN 处理的图数据,其中,多个处理单元中的每一个处理单元分别通过一个或多个互连 单元与其他处理单元通信耦合;多个处理单元分别与多个存储器扩展卡通信耦合, 多个存储器扩展卡中的每一个处理单元都包括图访问引擎电路,图形访问引擎电路 用于加速GNN处理的存储器访问。
在一些实施例中,多个处理单元包括第一处理单元、第二处理单元、第三处理 单元和第四处理单元;多个存储扩展卡包括第一存储扩展卡、第二存储扩展卡、第 三存储扩展卡和第四存储扩展卡;第一处理单元、第二处理单元、第三处理单元和 第四处理单元中的每一个通过第一类型的互连单元分别与第一存储扩展卡、第二存 储扩展卡、第三存储扩展卡和第四存储扩展卡中的每一个通信耦合;第一处理单元 通过第一类型的互连单元与第三处理单元和第四处理单元中的每一个通信耦合;第 二处理单元通过第一类型的互连单元与第三处理单元和第四处理单元中的每一个通 信耦合;第一处理单元通过两个第二类型的互连单元与第二处理单元通信耦合;第 三处理单元通过两个第二类型的互连单元与第四处理单元通信耦合。
在一些实施例中,第一类型的互连单元的形状因子是两个QSFP-DD端口,这两 个QSFP-DD端口的带宽等于或大于100GB/s;第二类型的互连单元的形状因子是 四个Mini-SAS端口,四个Mini-SAS端口的带宽等于或大于50GB/s;第一处理单 元通过两个第二类型的互连单元与第二处理单元并行地通信耦合,第三处理单元通 过两个第二类型的互连单元与第四处理单元并行地通信耦合。
在一些实施例中,第一处理单元、第二处理单元、第三处理单元和第四处理单 元中的每一个都包括交换机,交换机用于对通过第一类型或第二类型的一个或多个 互连单元从一个或多个其他处理单元接收的数据执行数据旁路。
在一些实施例中,图访问引擎电路还用于:从一个或多个存储扩展卡中提取图 的部分结构数据;使用提取到的图的部分结构数据执行节点采样,以选择一个或多 个采样节点;根据选定的一个或多个采样节点,从一个或多个存储扩展卡中提取图 的部分属性数据;以及将提取到的图的部分属性数据发送给一个或多个处理单元。
在一些实施例中,每个存储扩展卡在现场可编程门阵列(FPGA)上实现。
根据又一方面,一种存储扩展卡,包括:一个或多个存储器,用于存储用于图 神经网络处理(GNN)的图数据;一个第一类型的互连单元,用于将存储扩展卡与 用于执行图神经网络处理的处理单元连接;两个第二类型的互连单元,用于将存储 扩展卡与其他两个存储扩展卡连接;和图访问引擎电路,用于:从一个或多个存储 器或其他两个存储扩展卡获取图的部分结构数据;使用提取到的图的部分结构数据 执行节点采样,以选择一个或多个采样节点;根据所选的一个或多个采样节点,从 一个或多个存储器或其他两个存储扩展卡提取图的部分属性数据;和通过一个第一 类型的互连单元将提取到的图的部分属性数据发送给处理单元,其中,两个第二类 型的互连单元中的每一个的带宽是一个第一类型的互连单元的带宽的一半。
在一些实施例中,处理单元通过第一类型的互连单元或两个第三类型的互连单元与其他处理单元通信耦合。
在一些实施例中,第一类型的互连单元的形状因子是两个QSFP-DD端口,该两 个QSFP-DD端口的带宽等于或大于100GB/s;第二类型的互连单元的形状因子是 一个QSFP-DD端口,该一个QSFP-DD端口的带宽等于或大于50GB/s;第三类型 的互连单元的形状因数是四个Mini-SAS端口,所述四个Mini-SAS端口的带宽等于 或大于50GB/s。
根据又一方面,提供一种方法,包括:通过存储扩展卡中的访问引擎电路,从 该存储扩展卡中的一个或多个存储器或其他两个存储扩展卡提取图的部分结构数据, 其中,该存储扩展卡通过第一类型的互连单元与用于图神经网络(GNN)处理的处 理单元通信耦合,以及通过第二类型的互连单元与其他两个存储扩展卡中的每一个 通信耦合;通过访问引擎电路,使用提取到的图的部分结构数据执行节点采样,以 选择一个或多个采样节点;通过访问引擎电路,根据所选的一个或多个采样节点, 从一个或多个存储器或其他两个存储器扩展卡提取图的部分属性数据;通过访问引 擎电路,通过第一类型的互连单元将提取到的图的部分属性数据发送给处理单元; 以及由处理单元使用所提取的图的部分属性数据,对图执行图神经网络(GNN)处 理。
在一些实施例中,处理单元通过第一类型的互连单元或两个第三类型的互连单元与其他处理单元通信耦合。在一些实施例中,第一类型的互连单元的形状因子是 两个QSFP-DD端口,这两个QSFP-DD端口的带宽等于或大于100GB/s;第二类型 的互连单元的形状因子是一个QSFP-DD端口,该QSFP-DD端口的带宽等于或大于 50GB/s,第三类型的互连单元的形状因子是四个Mini-SAS端口,这四个Mini-SAS 端口的带宽等于或大于50GB/s。
在一些实施例中,该方法还包括通过存储扩展卡中的交换机,对通过第二类型 的互连单元从其他两个存储扩展卡中的每一个接收的数据执行数据旁路。
在一些实施例中,存储器扩展卡在现场可编程门阵列(FPGA)上实现。
根据又一方面,一种非暂时性计算机可读存储介质,所述非暂时性计算机可读 存储介质存储指令,当指令由一个或多个处理器执行时,使得该一个或多个处理器 执行操作,该操作包括:通过一个存储扩展卡中的访问引擎电路,从该存储扩展卡 中的一个或多个存储器或其他两个存储扩展卡提取图的部分结构数据,其中,该存 储扩展卡通过第一类型的互连单元与用于图神经网络(GNN)处理的处理单元通信 耦合,以及通过第二类型的互连单元与其他两个存储扩展卡中的每一个通信耦合; 通过访问引擎电路,使用提取到的图的部分结构数据执行节点采样,以选择一个或 多个采样节点;通过访问引擎电路,根据所选的一个或多个采样节点,从一个或多 个存储器或其他两个存储器扩展卡提取图的部分属性数据;通过访问引擎电路,通 过第一类型的互连单元将提取到的图的部分属性数据发送给处理单元;以及由处理 单元使用所提取的图的部分属性数据,对图执行图神经网络(GNN)处理。
附图说明
在参考附图考虑以下描述和所附权利要求后,本公开的系统、方法和硬件设备 的这些和其他特征,以及结构的相关元件和部件组合的操作方法和功能,以及制造 经济性将变得更加明显,附图构成本说明书的一部分,其中,相似的参考编号表示 附图中的相应部分。然而,应当理解,附图仅用于说明和描述,并不旨在作为本公 开的限制的定义。
图1是根据本公开的一些实施例的一示例性的图的示意图。
图2A是根据本公开的一些实施例的一示例性的使用GNN加速器架构的系统的 示意图。
图2B是根据本公开的一些实施例的一示例性的用于加速GNN性能的系统的示 意图。
图2C是根据本公开的一些实施例的一示例性的GNN访问引擎的示意图。
图2D是根据本公开的一些实施例的一示例性的共享存储器资源的系统的示意图。
图3是根据本公开的一些实施例的一示例性的并行处理单元(parallelprocessing unit,PPU)卡的示意图。
图4A是根据本公开的一些实施例的一示例性的连接的PPU卡的系统的示意图。
图4B是根据本公开的一些实施例的另一示例性的连接的PPU卡的系统的示意 图。
图4C是根据本公开的一些实施例的又一示例性的连接的PPU卡的系统的示意 图。
图5是根据本公开的一些实施例的一示例性的智能存储扩展(smart memoryextension,SMX)卡的示意图。
图6A是根据本公开的一些实施例的一示例性的连接PPU卡与智能存储扩展卡 的系统的示意图。
图6B是根据本公开的一些实施例的另一示例性的连接PPU卡与智能存储扩展 卡的系统的示意图。
图6C是根据本公开的一些实施例的又一示例性的连接PPU卡与智能存储扩展 卡的系统的示意图。
图7是根据本公开的一些实施例的一示例性的基于图访问引擎的智能存储扩展卡的示意图。
图8A是根据本公开的一些实施例的一示例性的连接PPU卡与基于图访问引擎 的智能存储扩展卡的系统的示意图。
图8B是根据本公开的一些实施例的另一示例性的连接PPU卡与基于图访问引 擎的智能存储扩展卡的系统的示意图。
图9是根据本公开的一些实施例的一示例性的存储扩展卡的存储器访问系统的示意图。
图10是根据本公开的一些实施例的一示例性的基于图访问引擎的存储扩展卡 的存储器访问系统的示意图。
图11是根据本公开的一些实施例的一示例性的存储器访问系统的ICN到存储的垫片模块(ICN-to-mem gasket module)的示意图。
图12是根据本公开的一些实施例的一示例性的存储器访问系统的数据包(packet,PKT)引擎模块的示意图。
图13是根据本公开的一些实施例的一示例性的存储器访问系统的芯片到芯片(chip-to-chip)直接存储器访问引擎模块的示意图。
图14是根据本公开的一些实施例的一示例性的存储器访问系统的图访问引擎 模块的示意图。
图15是根据本公开的一些实施例的一示例性的存储器访问系统的结构上存储 器的交换机模块(memory of fabric switch module)的示意图。
图16是根据本公开的一些实施例的一示例性的使用一个或多个存储扩展卡加 速GNN处理的方法的流程图。
具体实施方式
本公开在特定应用及其要求的背景下提出,旨在使本领域技术人员能够制作和使用实施例。本公开的实施例的各种修改对于本领域技术人员来说是显而易见的, 并且所定义的一般原理可以应用于其他实施例和应用,且不脱离本公开的精神和范 围。因此,本公开不限于所示的实施例,而是符合与本公开的原理和特征一致的最 广泛范围。
数据可以是结构化的,也可以是非结构化的。对于结构化数据,可以根据预设 的数据模型或模式组织信息。对于非结构化数据,不能使用预设的数据模型或预定 义的方式组织信息。例如,文本文件(例如,电子邮件、报告等)可能包括没有预 定义结构的信息(例如,单个字母或单词)。因此,非结构化数据可能包含不规则 性和模糊性,这使得使用传统程序或数据结构很难理解。此外,从计算机存储器访 问非结构化数据可能会涉及大量随机存储器访问,这会使存储器访问变得繁琐而低 效。
使用图是表示非结构化数据的一种方法。图是一种数据结构,其包括两种组件:节点(或顶点)和边。例如,图G可以被定义为一组节点V和连接该组节点V的一 组边E的集合。图中的节点可具有一组特征或属性(例如,表示社交网络的图中的 用户配置文件)。如果两个节点通过边连接,则将其中一个节点定义为另一节点的 相邻节点(adjacentnode)。图是高度灵活的数据结构,因为图可以不需要预定义的 规则来确定它包含多少个节点或节点之间如何通过边连接。由于图可以提供极大的 灵活性,所以它是被广泛用于存储或表示非结构化数据(例如文本文件)的数据结 构之一。例如,图可以存储具有关系结构的数据,例如在线购物平台中的买家或产 品之间的关系数据。
图1是根据本公开的一些实施例的一示例性的图的示意图。如图1所示,图包 括节点n111、n112、n113、n114、n115和n116。此外,图包括边e121、e122、e123、 e124、e125、e126和e127。每个节点都有一个或多个相邻节点。例如,节点n112 与节点n111共享边e121,节点n113与节点n111共享边e122,因此节点n112和n113 与节点n111为相邻节点。
当在计算机的存储器中存储图时,节点、边和属性可以存储在各种数据结构中。存储图的一种方法是将属性数据与相应的节点分离。例如,节点标识符存储在数组 中,每个节点标识符提供指向对应节点的属性数据的位置的地址或指针。所有节点 的属性数据可以存储在一起,并且可以通过读取存储在相应节点标识符中的地址或 指针来访问它们。通过将属性数据与对应节点分离,数据结构能够提供对图的更快 的遍历访问。
图神经网络(GNN)是一种可以直接对图进行操作的神经网络。GNN比传统的 神经网络(例如,卷积神经网络)更适合对图进行操作,因为GNN可以更好地适应 图的任意大小或复杂拓扑。GNN可以对以图格式描述的数据进行推理。GNN能够 执行节点级、边级或图级的预测任务。
GNN处理涉及GNN训练和GNN推理,两者都涉及GNN计算。典型的对节点 (或顶点)的GNN计算涉及聚合其邻居节点(neighboring node)(直接的邻居节点 或每个邻居节点的邻居节点)的特征(例如,属性数据),然后计算节点的新激活 函数(new activation),以确定节点的特征表示(例如,特征向量)。因此,少量 节点的GNN处理通常需要大量节点的输入特征。由于输入特征所需的节点很容易覆 盖图的很大一部分,特别是尺寸巨大的现实世界的图(例如,有数亿个节点和数十 亿个边),因此将所有邻居节点都用于消息聚合的成本太高。
为了使GNN更适用于这些现实世界的应用程序,通常采用节点采样来减少消息 /特征聚合所涉及的节点数量。例如,正采样和负采样可用于确定GNN处理中的优 化目标和结果方差。对于正在计算其特征表示的给定根节点,正采样可以对那些通 过边与根节点(直接或间接)连接的图的节点(例如,连接到根节点并在与根节点 的预设距离内的节点)进行采样;负采样可以对那些未通过边与图的根节点连接的 节点(例如,在根节点的预设距离之外的节点)进行采样。正采样得到的节点和负 采样得到的节点可用于训练具有不同目标的根节点的特征表示。
为了执行GNN计算,系统可以从存储器中提取图数据,并将图数据发送给一个 或多个处理器进行处理。图2A是根据本公开的一些实施例的一示例性的使用GNN 加速器架构的系统的示意图。如图2A所示,系统2200包括一个或多个处理器2210、 GNN加速器2220、存储器2230和一个或多个专用处理器2240。在一些实施例中, 该一个或多个处理器2210包括一个或多个中央处理单元(central processing unit, CPU)。在一些实施例中,一个或多个专用处理器2240可包括一个或多个CPU、一 个或多个图形处理单元(graphicprocessing unit,GPU)、一个或多个张量处理单元 (tensor processing unit,TPU)、一个或多个神经网络处理单元(neural network processing unit,NPU)、一个或多个专用图神经网络处理单元等。在一些实施例中, 存储器2230可包括同步动态随机存取存储器(Synchronous Dynamic Random-Access Memory,SDRAM),例如双数据速率同步动态随机存取存储器(Double Data Rate Synchronous Dynamic Random-Access Memory,DDRSDRAM)。
如图2A所示,GNN加速器2220可以从一个或多个处理器2210接收关于GNN 的指令和信息,并从存储器2230提取与GNN相关的数据。GNN加速器2220从存 储器2230接收数据之后,可以预处理数据,并将预处理后的数据发送到一个或多个 专用处理器2240以进行进一步处理。
在一些实施例中,如图2A所示,GNN加速器2220包括图结构处理器2221、 GNN采样器2222、GNN属性处理器2223和地址映射器2224。图结构处理器2221 用于从一个或多个处理器2210接收关于GNN的指令和信息,并从存储器2230提取 关于一个或多个根节点及其边的信息。然后,图结构处理器2221将提取到的信息发 送给GNN采样器2222。
GNN采样器2222用于根据一个或多个根节点的边的信息,选择一个或多个采 样节点以用于GNN处理。在一些实施例中,GNN采样器2222根据正采样或负采样 选择一个或多个采样节点。例如,基于正采样,从通过边与一个或多个根节点连接 的节点中选择一个或多个采样节点(例如,采样节点与一个或多个根节点相邻)。 基于负采样,从未通过边与一个或多个根节点直接连接的节点中选择一个或多个采 样节点(例如,采样节点与一个或多个根节点不相邻或不靠近)。在一些实施例中, 正采样从那些与根节点连接并且在根节点的预设距离内的邻居节点中选择。连接可 以是直接连接(源节点到目标节点之间的一个边)或间接连接(从源节点到目标节 点的多个边)。可根据实施情况配置“预设距离”。例如,如果预设距离为1,则表示 仅选择直接连接的邻居节点进行正采样。如果预设距离为无穷大,则表示节点之间 没有连接(包括直接和间接连接)。负采样从在根节点的预设距离之外的节点中进 行选择。可以理解,可以使用除正采样和负采样之外的任何算法来选择采样节点。
在选择采样节点之后,GNN采样器2222将采样节点的选择信息发送给GNN属 性处理器2223。基于采样节点的信息,GNN属性处理器2223可用于从存储器2230 提取采样节点的信息。在一些实施例中,采样节点的信息包括每个采样节点的一个 或多个特征或属性(也称为属性数据)。GNN属性处理器2223可以进一步将所提 取的采样节点的信息以及一个或多个根节点及其边的信息发送给专用处理器2240。 专用处理器2240基于从GNN属性处理器2223接收的信息执行GNN处理。
在一些实施例中,图结构处理器2221和GNN属性处理器2223使用地址映射器 2224从存储器2230提取信息。地址映射器用于基于节点和边的信息提供在存储器 2230中的硬件地址信息。例如,使用标识符n111(例如,图1的节点n111)来标识 作为GNN输入的一部分的根节点。如果图结构处理器2221要提取节点n111的信息 (例如,节点n111的属性数据),则图结构处理器2221向地址映射器2224提供标 识符n111,则地址映射器2224确定存储器2230中用于存储节点n111的信息(例如, 节点n111的属性数据)的位置的物理地址。在一些实施例中,地址映射器2224还 确定存储器2230中用于存储节点n111的边(例如,图1的边e121和e122)的信息 的位置的一个或多个物理地址。
图2A所示的系统2000可用于在许多不同系统加速GNN的存储器访问,以提 高GNN性能。图2B是根据本公开的一些实施例的一示例性的用于提高GNN性能 的系统的示意图。如图2B所示,加速系统2300包括结构上存储器(memory over fabric, MoF)2305、访问引擎2310、RISC-V 2330、通用矩阵乘法(General Matrix Multiply, GEMM)执行引擎2340和向量处理单元(vector processing unit,VPU)执行引擎2350。 图2B所示的访问引擎2310类似于图2A所示的GNN模块2220。访问引擎2310可 用于从存储器(例如,如图2B所示的DDR)取回执行GNN计算所需的数据。例如, 访问引擎2310取回节点标识符、边标识符和与节点标识符相对应的属性数据。访问 引擎2310取回的数据提供给执行引擎(例如,GEMM执行引擎2340或VPU执行 引擎2350)或用于GNN相关计算的处理器。如图2B所示,两种类型的引擎都可以 加速执行特定的GNN相关计算。
尽管系统2300包括加速引擎和处理器以加速GNN相关计算,但由于访问引擎 执行的数据取回比执行数据处理的执行引擎更慢,因此访问引擎2310可能会成为系 统2300整体性能的瓶颈。图2C是根据本公开的一些实施例的一示例性的GNN访 问引擎的示意图。可以理解,图2C所示的访问引擎2400类似于图2B所示的访问 引擎2310。如图2C所示,访问引擎2400包括GetNeighbor模块2410、GetSample 模块2420、GetAttribute模块2430和GetEncode模块2440。
在一些实施例中,GetNeighbor模块2410用于访问或识别输入节点标识符的相 邻节点。例如,与图2A所示的图结构处理器2221类似,GetNeighbor模块2410接 收关于GNN的指令和信息,并从DDR(例如,对应于图2A的存储器2230)提取 关于一个或多个节点、其边及其邻居(相邻节点)的信息。GetNeighbor模块2410 然后将提取到的信息发送给GetSample模块2420(例如,对应于图2A的GNN采样 器2222)。
在一些实施例中,GetSample模块2420用于从GetNeighbor模块2410接收一个 或多个节点上的信息,并对该一个或多个节点执行节点采样以进行GNN处理。例如, 与图2A所示的GNN采样器2222类似,GetSample模块2420用于根据一个或多个 节点的边的信息选择一个或多个采样节点以用于GNN处理。在一些实施例中,GNN 采样器2222根据正采样和/或负采样选择一个或多个采样节点。在选择采样节点之 后,GetSample模块2420将采样节点的选择信息发送给GetAttribute模块2430。
在一些实施例中,GetAttribute模块2430用于从GetSample模块2420接收所选 或所采样的节点的信息,并从存储器(例如,图2C所示的DDR或图2A所示的存 储器2230)提取采样节点的属性信息。例如,与GNN属性处理器2223类似, GetAttribute模块2430用于基于接收到的采样节点(例如,采样节点的标识符)从 存储器2230提取采样节点的属性数据。在一些实施例中,GetAttribute模块需要从 远程位置提取采样节点的属性信息。例如,GetAttribute模块需要从其他板提取属性 信息。因此,GetAttribute模块利用MoF模块2450从远程位置(例如,其他板上) 提取属性信息。在一些实施例中,采样节点的属性数据包括每个采样节点的一个或 多个特征。
图形处理单元(GPU)是一种众所周知的设备,该设备用于执行填充帧缓冲器 所需的计算,而帧缓冲器又用于在屏幕上显示图像。中央处理单元(CPU)将填充 帧缓冲器的任务(该任务是计算密集型任务)转给GPU,从而释放CPU以及时执行 其他任务。
通用图形处理单元(general-purpose graphic processing unit,GPGPU)是GPU的扩展,因为GPGPU可以编程来执行其他计算密集型的(非图形处理)操作。在 人工智能(artificial intelligence,AI)和机器学习的应用(例如GNN处理)中,CPU 通常与并行执行卷积类型操作的多个GPGPU(例如100个GPGPU)配对。在本公 开中,GPU和GPGPU可互换使用,以描述用于执行通用计算的GPU,除非另有规 定。
GPGPU可以具有一处理器和耦合到该处理器的存储器。在许多人工智能和机器 学习的应用(例如GNN处理)中,存储器必须容量很大且速度非常快。因此,在人 工智能/机器学习的设置中,GPGPU中的存储器通常使用被称为高带宽存储器(high bandwidth memory,HBM)的容量大且速度快的存储器来实现。
典型的HBM包括多个动态随机存取存储器(dynamic random-access memory,DRAM)芯片(die),这些芯片垂直堆叠在彼此的顶部,以提供较大的存储容量, 例如4GB、24GB和64GB,但其形状因子较小。此外,每个DRAM芯片可以包括 两个128位数据通道,以提供高带宽。
传统的HBM设计存在许多问题。例如,GPGPU的存储器具有最大有效容量, 这反过来又限制了GPGPU可以及时执行的操作。最大有效容量的存在是因为将芯 片垂直堆叠在彼此的顶部越来越难,从而有效限制可堆叠以形成HBM的芯片数量 和HBM的最大容量。此外,HBM中的每个芯片通常使用最大的标线(reticle)来 制造,这限制了芯片的最大尺寸和容量。随着要处理的数据量持续增长,此问题变 得越来越严重。
此外,除了最大有效容量外,其他存储器的部分或全部,例如CPU的一部分存 储器,不能用作GPGPU的存储器(HBM)的扩展以提供额外的高速存储容量。这 是因为GPGPU通过快速外围组件互连(peripheral component interconnect express, PCIe)总线耦合到扩展存储器(例如CPU)。通过PCIe总线访问数据的速度比访问 HBM中的数据慢100倍,这对于许多人工智能/机器学习的应用来说太慢了。由于 物理限制,当前基于HBM的设计很难扩展,多GPU设计(例如,扩展解决方案) 会造成计算资源的严重浪费。
因此,由于GPGPU的存储器(HBM)具有最大有效容量,并且由于其他存储 器的全部或部分不会用作GPGPU的存储器(HBM)的扩展以提供额外的高速存储 容量,因此需要增加GPGPU的存储器的容量并提供近内存(near-memory)的操作。
许多诸如数字计算机、计算器、音频设备、视频设备和电话系统的电子技术都 有助于在分析和交流商业、科学、教育和娱乐的大多数领域的数据和信息时,促进 提高生产力并降低成本。电子元件可用于许多重要应用(例如,医疗程序、车辆辅 助操作、金融应用等),这些活动通常涉及处理和存储大量信息。这些应用通常涉 及大量的信息处理。但处理(例如,存储、处理、通信等)大量信息可能带来问题 和困难。
在许多应用中(例如,对图1所示的图进行GNN处理的应用),系统快速准确 地处理信息非常重要,快速准确地处理信息的能力通常有赖于对信息的访问。传统 系统通常难以对大量信息进行排序和处理,尤其是在并行处理环境中。提供的存储 容量太少通常非常有害,它可能导致应用完全故障。但传统的在每个并行处理资源 上提供大量具有足够的专用存储容量的专用存储器来存储所有信息的尝试可能会非 常昂贵。此外,每个处理资源通常在不同的时间具有不同的存储访问需求,并且许 多存储资源可能处于空闲状态或基本上被浪费。而传统的共享存储资源的尝试通常 会导致通信问题,并且会大大降低处理资源对信息的访问速度,从而导致相当大的 性能限制和恶化。
图2D是根据本公开的一些实施例的一示例性的共享存储器资源的系统200的 示意图。通常,系统200包括多个服务器,并且每个服务器包括多个并行计算单元。 如图2D所示,系统200包括服务器201和202。服务器201包括并行处理单元(PPU) PPU_0a至PPU_n、PCIe总线211、存储卡213、网络接口控制器或卡(network interface controller,NIC)212和主机CPU 214。每个并行处理单元包括诸如处理核或存储器 (图2D中未示出)之类的元件。在一些实施例中,并行处理单元可以是神经网络 处理单元(NPU)或图形处理单元(GPU)。在一些实施例中,多个NPU或GPU 按并行配置的方式排布。PCIe总线211可与PPU_0a至PPU_n、存储卡213、主机 CPU 214和NIC 212通信耦合,而NIC 212可以通信耦合到网络230。主机CPU 214 可以与存储器215(例如,RAM、DRAM、DDR4、DDR等)通信耦合。PCIe总线221可以与PPU_0b至PPU_m、存储卡223、主机CPU 224和NIC 222通信耦合, 而NIC 222可以通信耦合到网络230。在一些实施例中,网络230是以太网。
在一些实施例中,系统200使用例如分区全局地址空间(partitioned globaladdress space,PGAS)编程模型合并统一的内存寻址空间。在许多应用中,特定PPU需要 访问存储在系统的存储卡上的信息。因此,在图2D的示例中,服务器201上的PPU_0a 可能需要访问存储在存储卡213和223上的信息。要访问存储卡213上的信息,可 以通过PCIe总线211在系统中的某处传输信息,具体取决于系统中的位置。例如, 为了将数据从PPU_0a写入服务器201上的存储卡213,通过PCIe总线211将数据 从PPU_0a发送到存储卡213;并且为了将数据从服务器201上的PPU_0a写入服务 器202上的存储卡223,通过PCIe总线211将数据从PPU_0a发送到NIC 221,然 后通过网络230将数据发送到NIC 222,然后通过PCIe总线212将数据发送到存储 卡223。
系统200可用于图形分析和图神经网络等应用,更具体地说,可用于在线购物 引擎、社交网络、推荐引擎、映射引擎、故障分析、网络管理、搜索引擎等应用。 此类应用执行大量的存储器访问请求(例如,读写请求),因此,还需要传输(例 如,读写)大量数据以进行处理。尽管PCIe总线的带宽和数据传输速率相当高,但 它们仍然限制了此类应用。实际上,PCIe总线通常速度太慢,其带宽对于此类应用 来说太窄。而传统的灵活配置和扩展存储能力的尝试也受到PCIe总线方案的缓慢速 度和窄带宽的限制。
本公开的实施例提供了提高各个PPU之间高效存储器访问的方法和系统。图3 是根据本公开的一些实施例的一示例性的PPU卡的示意图。图3中的示意图仅用于 说明的目的,并且取决于实现方式,图3中所示的PPU卡300可以具有更少、更多和 可选的组件和连接。在一些实施例中,PPU卡300在现场可编程门阵列(FPGA)上 实现。
PPU卡300可用于提供处理能力。在一些实施例中,PPU卡300包括一个或多 个PPU。可以理解,PPU卡300可以包括任何处理单元,而不仅仅是PPU。例如, PPU卡300包括一个或多个CPU、一个或多个GPU或GPGPU、一个或多个张量处 理单元(TPU)、一个或多个神经网络处理单元(NPU)、或一个或多个专用图神 经网络处理单元。在一些实施例中,PPU卡类似于图2A的专用处理器2240。如图 3所示,PPU卡300包括多个连接。例如,如图3所示,PPU卡300包括3个互连 网络(interconnect network,ICN)全速链路(或互连)和2个半速链路(或互连)。 在一些实施例中,一个或多个ICN全速链路是双向的(例如100GB/s),并且一个 或多个ICN半速链路是双向的(例如50GB/s)。在一些实施例中,ICN全速链路 的一个形状因子是ICN网桥(例如,类似于Nvidia网桥或NVLINK网桥)或QSFP-DD 端口(例如,每个ICN全速链路有2个QSFP-DD端口)。在一些实施例中,ICN 半速链路的一个形状因子是Mini-SAS连接器(例如,每个ICN半速链路有4个 Mini-SAS端口)。在一些实施例中,PPU卡300包括PCIe连接。
图4A是根据本公开的一些实施例的一示例性的连接的PPU卡的系统的示意图。 图4A的示意图仅用于说明的目的,并且取决于实现方式,图4A中所示的系统400 可以具有更少、更多和可选的组件和连接。
如图4A所示,系统400包括4个PPU,即PPU a、PPU b、PPU c和PPU d。 在一些实施例中,PPU a至PPU d中的每一个PPU类似于图3所示的PPU卡300。 例如,PPU a至PPU d中的每一个PPU可以包括3个ICN全速链路和2个半速链路。 如图4A所示,PPU a至PPU d中的每一个PPU通过ICN全速链路连接到其他的每 一个PPU。例如,PPU a通过ICN全速链路b连接到PPUb,通过ICN全速链路a 连接到PPU c,并通过ICN全速链路e连接到PPU d。因此,如图4A所示,6个ICN 全速链路a-f连接PPU a至PPU d中的每一对PPU。图4A所示的ICN全速链路可 以帮助每个PPU高效地访问其他PPU的资源(例如,存储资源)。因此,存储容量 不再局限于单个PPU,并且可以改进PPU之间的数据传输。
图4B是根据本公开的一些实施例的另一示例性的连接的PPU卡的系统的示意 图。图4B中的示意图仅用于说明的目的,并且取决于实现方式,图4B中所示的系 统410可以具有更少、更多和可选的组件和连接。
如图4B所示,系统410可以包括4个PPU,即PPU a、PPU b、PPU c和PPU d。 在一些实施例中,PPU a至PPU d中的每一个PPU类似于图3所示的PPU卡300。 例如,PPU a至PPU d中的每一个PPU包括3个ICN全速链路和2个半速链路。如 图4B所示,PPU a至PPU d中的每一个PPU通过一个ICN全速链路或2个ICN半 速链路连接到其他的每一个PPU。例如,PPU a通过ICN半速链路g和ICN半速链 路h连接到PPU b(例如,两个半速互连可并行配置以共同提供全速连接),通过 ICN全速链路a连接到PPU c,并通过ICN全速链路e连接到PPU d。因此,如图 4B所示,4个ICN全速链路a、d、e和f以及4个ICN半速链路g、h、i和j连接 PPU a至PPU d中的每一对PPU。图4B所示的ICN全速链路和半速链路可以帮助 每个PPU高效地访问其他PPU的资源(例如,存储资源)。因此,存储容量不再局 限于单个PPU,并且可以改进PPU之间的数据传输。
图4C是根据本公开的一些实施例的又一示例性的连接的PPU卡的系统的示意 图。图4C的示意图仅用于说明的目的,并且取决于实现方式,图4C所示的系统420 可以具有更少、更多和可选的组件和连接。
如图4C所示,系统420包括8个PPU,即PPU a、PPU b、PPU c、PPU d、PPU e、PPU f、PPU g和PPU h。在一些实施例中,PPU a至PPU h中的每一个PPU类 似于图3所示的PPU卡300。例如,PPU a至PPU h中的每一个PPU包括3个ICN 全速链路和2个半速链路。如图4C所示,PPU a至PPU d中的每一个PPU通过ICN 全速链路或2个ICN半速链路连接到其他一些PPU。例如,PPU a通过ICN全速链 路b连接到PPU b,通过ICN全速链路a连接到PPU c,通过ICN全速链路e连接 到PPU d,并通过ICN半速链路q和ICN半速链路r连接到PPU g。因此,如图4C 所示,12个ICN全速链路a、b、c、d、e、f、k、l、m、n、o和p以及8个ICN半 速链路g、h、i、j、q、r、s和t连接PPU a至PPU h中的多对PPU。因此,系统420 中的每个PPU可以通过最多2次跳转访问任何其他PPU的资源(例如,存储资源)。 例如,尽管PPU a和PPU e之间没有直接连接,但PPU a可以通过ICN全速链路b 和2个ICN半速链路g和h访问PPU e中的资源(例如,存储资源)。图4C中所 示的ICN全速链路和半速链路可以帮助每个PPU高效地访问其他PPU的资源。因 此,存储容量不再局限于单个PPU,并且可以改进PPU之间的数据传输。
在一些实施例中,每个PPU包括ICN交换机,该交换机用于促进每个PPU中 资源的数据访问。例如,PPU a可以使用位于PPU b中的ICN交换机,通过ICN全 速链路b和2个ICN半速链路g和h访问PPU e中的存储资源。
在一些实施例中,系统还包括一个或多个存储扩展卡。图5是根据本公开的一 些实施例的一示例性的智能存储扩展卡的示意图。图5中的示意图仅用于说明的目 的,并且取决于实现方式,图5所示的智能存储扩展(SMX)卡500可以具有更少、 更多和可选的组件和连接。在一些实施例中,SMX卡500在FPGA上实现。
图5所示的SMX卡500可以用于为处理器(例如,图3所示的PPU卡300和 图4A、图4B和图4C所示的PPU)提供额外的存储容量,并且可以与处理器通信 耦合。在一些实施例中,SMX卡500包括一个或多个存储器(例如,图2A的存储 器2230、图2B或图2C所示的DDR或固态驱动器(SSD)),并且这些存储器可 以用于存储图数据。如图5所示,SMX卡500可以包括多个连接。例如,如图5所 示,SMX卡500包括2个ICN全速链路。在一些实施例中,一个或多个ICN全速 链路是双向的(例如100GB/s)。在一些实施例中,ICN全速链路的一个形状因子 是QSFP-DD端口(例如,每个ICN全速链路具有2个QSFP-DD端口)。在一些实 施例中,SMX卡500还包括在ICN网桥和一个或多个QSFP-DD端口之间的一个或 多个转换分支电缆(converting breakout cable)。在一些实施例中,SMX卡500包 括PCIe连接。
图6A是根据本公开的一些实施例的一示例性的连接PPU卡与智能存储扩展卡 的系统的示意图。图6A中的示意图仅用于说明的目的,并且取决于实现方式,图 6A中所示的系统600可以具有更少、更多和可选的组件和连接。
如图6A所示,系统600包括4个PPU,即PPU a、PPU b、PPU c和PPU d。 在一些实施例中,PPU a、PPU b、PPU c和PPU d中的每一个PPU类似于图3所示 的PPU卡300。例如,PPU a、PPU b、PPU c和PPU d中的每一个PPU包括3个ICN 全速链路和2个半速链路。如图6A所示,PPU a、PPU b、PPU c和PPU d中的每一 个PPU通过ICN全速链路或2个ICN半速链路连接到一个或多个其他的PPU。例 如,PPU a通过2个ICN半速链路g和h连接到PPU b,并通过ICN全速链路a连 接到PPU c。在一些实施例中,PPU a、PPU b、PPU c和PPU d中的每一个PPU都 连接到SMX卡。例如,如图6A所示,PPU a通过2个ICN全速链路a1和a2连接 到SMX卡a,PPU b通过2个ICN全速链路b1和b2连接到SMX卡b,PPU c通过 2个ICN全速链路c1和c2连接到SMX卡c,PPU d通过2个ICN全速链路d1和 d2连接到SMX卡d。在一些实施例中,图6A中所示的SMX卡a-d中的每一个SMX 卡类似于图5中的SMX卡500。如图6A所示,有10个ICN全速链路和4个ICN半速链路。因此,系统600中的每个PPU可以通过最多3次跳转访问任何其他PPU 或SMX卡的资源(例如,存储资源)。例如,尽管没有直接链路连接PPU a和SMX 卡d,但PPU a可以通过2个ICN半速链路g和h、1个ICN全速链路d和2个ICN 全速链路d1和d2访问SMX卡d中的存储资源。在一些实施例中,每个PPU包括 ICN交换机,该交换机用于促进资源的数据访问。例如,PPU a可以使用位于PPU b 和PPU d中的ICN交换机,通过2个ICN半速链路g和h、1个ICN全速链路d以 及2个ICN全速链路d1和d2访问SMX卡d中的存储资源。图6A所示的ICN全 速链路和半速链路可以帮助每个PPU高效地访问其他PPU和SMX卡的资源(例如, 存储资源)。因此,存储容量不再局限于单个PPU,PPU和SMX卡之间的数据传 输可以得到改善。
图6B是根据本公开的一些实施例的另一示例性的连接PPU卡与智能存储扩展 卡的系统的示意图。图6B中的示意图仅用于说明的目的,并且取决于实现方式,图 6B中所示的系统610可以具有更少、更多和可选的组件和连接。
如图6B所示,系统610包括4个PPU,即PPU a、PPU b、PPU c和PPU d。 在一些实施例中,PPU a、PPU b、PPU c和PPU d中的每一个PPU类似于图3所示 的PPU卡300。例如,PPU a、PPU b、PPU c和PPU d中的每一个PPU包括3个ICN 全速链路和2个半速链路。如图6B所示,PPU a、PPU b、PPU c和PPU d中的每一 个PPU通过ICN全速链路或2个ICN半速链路连接到其他的每个PPU。例如,PPU a通过2个ICN半速链路g和h连接到PPU b,通过ICN全速链路a连接到PPU c, 并通过ICN全速链路e连接到PPU d。在一些实施例中,PPU a、PPU b、PPU c和 PPUd中的每一个PPU都连接到SMX卡。例如,如图6B所示,PPU a通过ICN全 速链路a1连接到SMX卡a,PPU b通过ICN全速链路b1连接到SMX卡b,PPU c 通过ICN全速链路c1连接到SMX卡c,PPU d通过ICN全速链路d1连接到SMX 卡d。在一些实施例中,图6B所示的SMX卡a-d中的每一个SMX卡都类似于图5 中的SMX卡500。如图6B所示,图中有8个ICN全速链路和4个ICN半速链路。 因此,系统610中的每个PPU可以通过最多2次跳转访问任何其他PPU或SMX卡 的资源(例如,存储资源)。例如,尽管没有直接链路连接PPU a和SMX卡d,但 PPU a可以通过1个ICN全速链路e和1个ICN全速链路d1访问SMX卡d中的存 储资源。在一些实施例中,每个PPU可以包括ICN交换机,该交换机用于促进资源 的数据访问。例如,PPU a使用位于PPU d中的ICN交换机,通过1ICN全速链路 e和1ICN全速链路d1访问SMX卡d中的存储资源。图6B所示的ICN全速链路 和半速链路可以帮助每个PPU高效地访问其他PPU和SMX卡的资源(例如,存储 资源)。因此,存储容量不再局限于单个PPU,PPU和SMX卡之间的数据传输也 可以得到改善。
图6C是根据本公开的一些实施例的另一示例性的连接PPU卡和智能存储扩展 卡的系统的示意图。图6C的示意图仅用于说明的目的,并且取决于实现方式,图 6C中所示的系统620可以具有更少、更多和可选的组件和连接。
如图6C所示,系统620包括4个PPU,即PPU a、PPU b、PPU c和PPU d。 在一些实施例中,PPU a、PPU b、PPU c和PPU d中的每一个PPU类似于图3所示 的PPU卡300。例如,PPU a、PPU b、PPU c和PPU d中的每一个PPU包括3个ICN 全速链路和2个半速链路。如图6C所示,PPU a、PPU b、PPU c和PPU d中的每一 个PPU通过ICN全速链路或2个ICN半速链路连接到其他的一个或多个PPU。例 如,PPU a通过2个ICN半速链路g和h连接到PPU b,并通过ICN全速链路a连 接到PPU c。在一些实施例中,PPU a、PPU b、PPU c和PPU d中的每一个PPU都 连接到SMX卡。例如,如图6C所示,PPU a通过1个ICN全速链路a1连接到SMX 卡a,PPU b通过1个ICN全速链路b1连接到SMX卡b,PPU c通过1个ICN全速 链路c1连接到SMX卡c,PPU d通过1个ICN全速链路d1连接到SMX卡d。在 一些实施例中,每个PPU连接到一个额外的SMX卡。例如,如图6C所示,PPU a 通过1个ICN全速链路c1连接到SMX卡c,PPU b通过1个ICN全速链路d3连接 到SMX卡d,PPU c通过1个ICN全速链路a3连接到SMX卡a,PPU d通过1个ICN全速链路b3连接到SMX卡b。在一些实施例中,图6C中所示的SMX卡a-SMX 卡d中的每一个SMX卡类似于图5中的SMX卡500。如图6C所示,图中有10个 ICN全速链路和4个ICN半速链路。因此,系统620中的每个PPU可以通过最多2 次跳转访问任何其他PPU或SMX卡的资源(例如,存储资源)。例如,尽管没有 直接链路连接PPU a和SMX卡d,但PPU a可以通过2个ICN半速链路g和h以及 1个ICN全速链路d3访问SMX卡d中的存储资源。在一些实施例中,每个PPU可 以包括ICN交换机,该交换机用于促进资源的数据访问。例如,PPU a可以使用位 于PPU b中的ICN交换机,通过2个ICN半速链路g和h以及1个ICN全速链路 d3访问SMX卡d中的存储资源。图6C中所示的ICN全速链路和半速链路可以帮 助每个PPU高效地访问其他PPU和SMX卡的资源(例如,存储资源)。因此,存 储容量不再局限于单个PPU,PPU和SMX卡之间的数据传输也可以得到改善。
在一些实施例中,系统还包括一个或多个基于图访问引擎(GAE)的存储扩展 卡。图7是根据本公开的一些实施例的一示例性的基于图访问引擎的智能存储扩展 卡的示意图。图7的示意图仅用于说明的目的,并且取决于实现方式,图7所示的 GAE SMX卡(即基于图访问引擎的存储扩展卡)700可以具有更少、更多和可选的 组件和连接。在一些实施例中,在FPGA上实现GAE SMX卡700。
图7所示的GAE SMX卡700可以用于为处理器(例如,图3所示的PPU卡300 和图4A、图4B和图4C所示的PPU)提供额外的存储容量,并且可以与处理器通 信耦合。在一些实施例中,GAE SMX卡700包括一个或多个存储器(例如,图2A 的存储器2230、图2B或图2C所示的DDR或固体驱动器(SSD)),并且这些存 储器可以用于存储图数据。如图7所示,GAE SMX卡700包括多个连接。例如, 如图7所示,GAE SMX卡700包括1个ICN全速链路和2个MoF(memory-over-fabric) 链路(或互连)。在一些实施例中,ICN全速链路是双向的(例如100GB/s)。在 一些实施例中,ICN全速链路的一个形状因子是QSFP-DD端口(例如,每个ICN全速链路具有2个QSFP-DD端口)。在一些实施例中,一个或多个MoF链路是双 向的(例如,每个链路为50GB/s)。在一些实施例中,MoF链路是FPGA到FPGA 的连接,例如为加速图应用而开发的FPGA到FPGA的连接IP。在一些实施例中, MoF链路的一个形状因子是QSFP-DD端口(例如,每个MoF链路具有1个QSFP-DD 端口)。MoF链路可以连接到GAE,并促进所连接的GAE,例如彼此通信,以对 图应用执行近内存(near-memory)的处理。在一些实施例中,GAE SMX卡700还 包括位于ICN网桥和一个或多个QSFP-DD端口之间的一个或多个转换分支电缆。在一些实施例中,GAE SMX卡700包括PCIe连接。
在一些实施例中,GAE SMX卡700包括图2A、图2B和图2C所示的一个或多 个模块。例如,GAE SMX卡700包括类似于图2B的访问引擎2310或图2C的访问 引擎2400的访问引擎、类似于图2B的RISC-V 2330的RISC-V、类似于图2B的 GEMM执行引擎2340(或图2B的VPU执行引擎2350或其组合)的执行引擎。因 此,GAE SMX卡700可以以近内存的方式执行加速GNN存储器访问的操作。此外, 由GAE SMX卡执行的操作可以促进PPU执行GNN操作(例如,类似于图2的GNN 模块2220促进专用处理器2240执行GNN操作)。
图8A是根据本公开的一些实施例的一示例性的连接PPU卡与基于图访问引擎 的智能存储扩展卡的系统的示意图。图8A的示意图仅用于说明的目的,并且取决 于实现方式,图8A所示的系统800可以具有更少、更多和可选的组件和连接。
如图8A所示,系统800包括4个PPU,即PPU a、PPU b、PPU c和PPU d。 在一些实施例中,PPU a、PPU b、PPU c和PPU d的每一个PPU类似于图3所示的 PPU卡300。例如,PPU a、PPUb、PPU c和PPU d的每一个PPU包括3个ICN全 速链路和2个半速链路。如图8A所示,PPU a、PPU b、PPU c和PPU d中的每一个 PPU通过ICN全速链路或2个ICN半速链路连接到其他每个PPU。例如,PPU a通 过2个并行ICN半速链路g和h连接到PPU b,通过ICN全速链路a连接到PPU c, 并通过ICN全速链路e连接到PPU d。在一些实施例中,PPU a、PPU b、PPU c和 PPU d的每一个PPU都可以连接到GAE SMX卡。例如,如图8A所示,PPU a通过 ICN全速链路a1连接到GAE SMX卡a,PPU b通过ICN全速链路b1连接到GAE SMX卡b,PPU c通过ICN全速链路c1连接到GAE SMX卡c,PPU d通过ICN全 速链路d1连接到GAE SMX卡d。在一些实施例中,图8A所示的GAE SMX卡a-GAE SMX卡d中的每一个GAE SMX卡类似于图7中的GAE SMX卡700。如图8A所 示,系统800中有8个ICN全速链路和4个ICN半速链路连接PPU卡和GAE SMX 卡。因此,系统800中的每个PPU可以通过最多2次跳转访问任何其他PPU或GAE SMX卡的资源(例如,存储资源)。例如,尽管没有直接链路连接PPU a和GAE SMX 卡d,但PPU a可以通过1个ICN全速链路e和1个ICN全速链路d1访问GAE SMX 卡d中的存储资源。在一些实施例中,每个PPU可以包括ICN交换机,该交换机用 于促进资源的数据访问。例如,PPU a可以使用位于PPU d中的ICN交换机,通过 1个ICN全速链路e和1个ICN全速链路d1访问GAE SMX卡d中的存储资源。图8A所示的ICN全速链路和半速链路可以帮助每个PPU高效地访问其他PPU和GAE SMX卡的资源(例如,存储资源)。因此,存储容量不再局限于单个PPU,PPU和 GAE SMX卡之间的数据传输可以得到改进。
图8B是根据本公开的一些实施例的另一示例性的连接PPU卡与基于图访问引 擎的智能存储扩展卡的系统的示意图。图8B的示意图仅用于说明的目的,并且取决 于实现方式,图8B中所示的系统810可以具有更少、更多和可选的组件和连接。
如图8B所示,系统810包括4个PPU,即PPU a、PPU b、PPU c和PPU d。 在一些实施例中,PPU a、PPU b、PPU c和PPU d中的每一个PPU都类似于图3所 示的PPU卡300。例如,PPUa、PPU b、PPU c和PPU d中的每一个PPU包括3个 ICN全速链路和2个半速链路。如图8B所示,PPU a、PPU b、PPU c和PPU d中的 每一个PPU通过1个ICN全速链路或2个ICN半速链路连接到其他的每个PPU。 例如,PPU a通过2个ICN半速链路g和h连接到PPU b,通过ICN全速链路a连 接到PPU c,并通过ICN全速链路e连接到PPU d。在一些实施例中,PPU a、PPU b、 PPU c和PPU d中的每一个PPU连接到GAE SMX卡。例如,如图8B所示,PPU a 通过ICN全速链路a1连接到GAE SMX卡a,PPU b通过ICN全速链路b1连接到 GAE SMX卡b,PPU c通过ICN全速链路c1连接到GAE SMX卡c,PPU d通过ICN 全速链路d1连接到GAE SMX卡d。在一些实施例中,每个GAE SMX卡连接到一 个或多个其他GAE SMX卡。例如,如图8B所示,GAE SMX卡a通过MoF链路b 连接到GAE SMX卡b,并通过MoF链路a连接到GAE SMX卡c。在一些实施例 中,图8A所示的GAE SMX卡a-GAE SMX卡d中的每一个GAE SMX卡与图7的 GAE SMX卡700类似。如图8A所示,图中有8个ICN全速链路、4个ICN半速链 路和4个MoF链路。因此,系统800中的每个PPU可以通过最多2个跳转访问任 何其他PPU或GAE SMX卡的资源(例如,存储资源)。例如,尽管没有直接链路 连接PPU a和GAE SMX卡d,但PPU a可以通过1个ICN全速链路e和1个ICN 全速链路d1访问GAE SMX卡d中的存储资源。在一些实施例中,每个PPU包括 ICN交换机,该交换机用于促进资源的数据访问。例如,PPU a使用位于PPU d中 的ICN交换机,通过1个ICN全速链路e和1个ICN全速链路d1访问GAE SMX 卡d中的存储资源。此外,每个GAE SMX卡最多可以通过2个跳转访问任何其他 GAE SMX卡的资源(例如,存储资源)。例如,GAE SMX卡a通过MoF链路b 访问GAE SMX卡b的存储资源,而GAE SMX卡a通过MoF链路b和c或通过 MoF链路a和d访问GAE SMX卡d的存储资源。在一些实施例中,每个GAE SMX 卡包括用于促进资源的数据访问的MoF交换机。例如,GAE SMX卡a使用位于GAE SMX卡b中的MoF交换机,通过MoF链路b和MoF链路c访问GAE SMX卡d 的存储资源。图8B所示的ICN全速链路和半速链路以及MoF链路可以帮助每个PPU 和GAE SMX卡高效地访问其他PPU和GAE SMX卡的资源(例如,存储资源)。因此,存储容量不再局限于单个PPU或单个GAE SMX卡,PPU和GAE SMX卡之 间的数据传输可以得到改善。在一些实施例中,图8B中所示的系统810可以有助于 通过近内存处理促进对图数据的数据访问。
应当注意到,图8A中的系统800不同于图8B中的系统810。例如,对于访问 未直接连接到PPU的GAE SMX卡的该PPU,系统800提供与系统810不同的路由。 例如,在系统800中,PPU a通过另一个PPU(例如PPU d)访问GAE SMX卡d。 在系统810中,PPU a通过另一个GAESMX卡(例如,GAE SMX卡a)访问GAE SMX卡d。
在一些实施例中,每个SMX卡(例如,图5和图6A-6C中所示的SMX卡)包 括一个或多个存储器控制模块,以促进存储器访问。图9是根据本公开的一些实施 例的一示例性的存储扩展卡的存储器访问系统的示意图。图9的示意图仅用于说明 的目的,并且取决于实现方式,图9中所示的存储器访问系统900可以具有更少、 更多和可选的组件和连接。可以理解,图9所示的存储器访问系统900可以在图5 和图6A-图6C所示的SMX卡中实现。在一些实施例中,存储器访问系统900在FPGA 上实现。
在一些实施例中,存储器访问系统900包括多个随机存取存储器(random accessmemorie,RAM)。例如,如图9所示,存储器访问系统900包括四个DDR(例如, 其中每个DDR的带宽为12.5GB/s)。在一些实施例中,每个DDR与存储器接口连 接。例如,如图9所示,每个DDR与用于在FPGA上生成DDR的存储器接口的存 储器接口生成器(memory interfacegenerator,MIG)连接。在一些实施例中,DDR 连接到AXI总线。
在一些实施例中,图9所示的存储器访问系统900包括ICN到存储的垫片模块(ICN-to-mem gasket module),该模块用于执行在本地存储器操作(例如,DDR上 的存储器操作)和通过一个或多个ICN链路进行的数据包传输之间的数据转换。ICN 到存储的垫片模块可用于与AXI总线连接,并通过AXI总线访问DDR。在一些实 施例中,存储器访问系统900包括2个ICN全速链路。例如,类似于图5和图6A-6C 所示的SMX卡,每个包括存储器访问系统900的SMX卡包括2个ICN全速链路, 每个ICN全速链路具有2个QSFP-DD端口(例如,如图9所示)。在一些实施例 中,存储器访问系统900包括连接ICN到存储的垫片模块和QSFP-DD端口的多个 模块,例如一个或多个C2C DMA引擎模块、一个或多个PKT引擎模块、一个或多 个I/F模块、一个或多个PRC模块和一个或多个MAC模块。
在一些实施例中,图9所示的存储器访问系统900包括PCIe连接,类似于图5 和图6A-6C所示的SMX卡。在一些实施例中,如图9所示,PCIe连接和PCIe插槽 连接到AXI总线,并且通过AXI总线访问DDR。
在一些实施例中,每个GAE SMX卡(例如,图7和图8A-8B中所示的GAE SMX 卡)包括一个或多个存储器控制模块,以促进存储器访问。图10是根据本公开的一 些实施例的一示例性的基于图访问引擎的存储扩展卡的存储器访问系统的示意图。
图10的示意图仅用于说明的目的,并且取决于实现方式,图10中所示的存储器访问系统1000可以具有更少、更多和可选的组件和连接。可以理解,图10所示的存 储器访问系统1000可以在图7和图8A-8B所示的SMX卡中实现。在一些实施例中, 存储器访问系统1000在FPGA上实现。
在一些实施例中,存储器访问系统1000包括多个随机存取存储器(RAM)。 例如,如图10所示,存储器访问系统1000包括四个DDR(例如,每个DDR的带 宽为12.5GB/s)。在一些实施例中,每个DDR与存储器接口连接。例如,如图10 所示,每个DDR与用于在FPGA上生成DDR的存储器接口的存储器接口生成器 (MIG)连接。在一些实施例中,DDR连接到AXI总线。
在一些实施例中,图10所示的存储器访问系统1000包括一个GAE模块,该模 块连接到AXI总线,并通过AXI总线访问DDR。在一些实施例中,GAE模块包括 用于对图应用执行近内存处理的图加速器模块。在一些实施例中,GAE模块包括ICN 到存储的垫片模块,其执行在本地存储器操作(例如,DDR上的存储器操作)和通 过一个或多个ICN链路进行的数据包传输之间的数据转换。在一些实施例中,存储 器访问系统1000包括1个ICN全速链路。例如,类似于图7和图8A-8B所示的GAE SMX卡,每个包括存储器访问系统1000的GAE SMX卡包括1个ICN全速链路, 每个ICN全速链路具有2个QSFP-DD端口(例如,如图10所示)。在一些实施例 中,存储器访问系统1000包括用于连接GAE模块中的ICN到存储的垫片模块和 QSFP-DD端口的多个模块,例如一个或多个C2C DMA引擎模块、一个或多个PKT 引擎模块、一个或多个I/F模块、一个或多个PRC模块和一个或多个MAC模块。
在一些实施例中,存储器访问系统1000包括2个MoF链路。例如,类似于图7 和图8A-8B所示的GAE SMX卡,每个包括存储器访问系统1000的GAE SMX卡包 括2个MoF链路,每个MoF链路具有1个QSFP-DD端口(例如,如图10所示)。 在一些实施例中,存储器访问系统1000包括连接GAE模块和MoF链路的QSFP-DD 端口的多个模块,例如一个或多个MoF中心模块、一个或多个MoF交换机模块、 一个或多个MoF边缘模块和一个或多个MAC模块。
在一些实施例中,图10的存储器访问系统1000包括PCIe连接,类似于图7和 图8A-8B所示的GAE SMX卡。在一些实施例中,如图10所示,PCIe连接和PCIe 插槽连接到AXI总线,并且可以通过AXI总线访问DDR。
图11是根据本公开的一些实施例的一示例性的存储器访问系统的ICN到存储的垫片模块的示意图。图11中的示意图仅用于说明的目的,并且取决于实现方式,图 11中所示的ICN到存储的垫片模块1100可以具有更少、更多和可选的组件和连接。 应理解,图11中所示的ICN到存储的垫片模块1100可以类似于图9或图10中的 ICN到存储的垫片模块。在一些实施例中,ICN到存储的垫片模块1100在FPGA上 实现。
在一些实施例中,图11所示的ICN到存储的垫片模块1100包括仲裁器、路由 器和诸如原子ALU模块和原子FIFO模块的模块,以执行基于存储器的操作(例如, 原子操作)。例如,仲裁器用于根据ICN命令类型仲裁进入原子模块的ICN数据包, 路由器用于根据物理地址(例如,编码的物理地址)将响应和数据路由到不同的ICN 链路。在一些实施例中,ICN到存储的垫片模块1100包括高速缓存。在一些实施例 中,原子FIFO模块用于管理原子操作的操作序列。在一些实施例中,原子ALU模 块负责处理原子操作中涉及的计算。
图12是根据本公开的一些实施例的一示例性的存储器访问系统的数据包(PKT)引擎模块的示意图。图12中的示意图仅用于说明的目的,并且取决于实现方式,图 12所示的PKT引擎模块1200可以具有更少、更多和可选的组件和连接。可以理解, 图12中所示的PKT引擎模块1200类似于图9或图10中的PKT引擎模块。在一些 实施例中,PKT引擎模块1200在FPGA上实现。
在一些实施例中,图12的PKT引擎模块1200用于处理数据包编辑和时钟域交 叉(clock domain crossing,CDC)设计。在一些实施例中,如图12所示,PKT引擎 模块12包括两个功能域:入口处理域(ingress processing domain)和出口处理域 (egressprocessing domain)。在一些实施例中,(例如,通过基于严格优先级仲裁 规则或循环仲裁规则的仲裁模块)仲裁不同类别的输入流(例如,内核类别、DMA 类别等)。仲裁的获胜者被传输到入口数据包(ING PKT)编辑模块。在一些实施 例中,PKT引擎模块1200包括用于执行CDC数据传输的一个或多个CDC FIFO模 块(例如,异步FIFO)。在一些实施例中,出口处理域的设计是入口处理域的镜像 /反转版本,其中的一个区别在于附加了第三类别的流(例如,响应类别)。
图13是根据本公开的一些实施例的一示例性的存储器访问系统的芯片到芯片(chip-to-chip,C2C)直接存储器访问(direct memory access,DMA)引擎模块的示 意图。图13的示意图仅用于说明的目的,并且取决于实现方式,图13中所示的芯 片到芯片直接存储器访问引擎模块1300可以具有更少、更多和替代组件和连接。可 以理解,图13所示的芯片到芯片直接存储器访问引擎模块1300类似于图9或图10 的芯片到芯片直接存储器访问引擎模块。在一些实施例中,芯片到芯片直接存储器 访问引擎模块在FPGA上实现。
在一些实施例中,芯片到芯片直接存储器访问引擎模块1300用于通过一个或多个ICN链路管理芯片到芯片的连接。在一些实施例中,如图13所示,芯片到芯片 直接存储器访问引擎模块1300包括三个功能域:存储器访问控制域 (MEM_Access_CTRL)、芯片到芯片入口控制域(C2C_Ingress_CTRL)和芯片到 芯片出口控制域(C2C_Egress_CTRL)。
在一些实施例中,存储器访问控制域包括两个同步(fence)处理模块,两个同 步处理模块用于在多个ICN命令类中并行执行同步操作(Fence operation)。在一些 实施例中,存储器访问控制域还包括存储器仲裁模块,存储器仲裁模块用于在两个 或多个ICN命令类之间执行仲裁,并将适当的ICN命令和数据发送到ICN到存储的 垫片模块(例如,图11的ICN到存储的垫片模块1100)。在一些实施例中,存储 器访问控制域还包括读取完成缓冲器管理器模块(RdCplBuf_Manager)和写入完成缓 冲器管理器模块(WrRspBuf_Manager),读取完成缓冲器管理器模块用于管理对读 取命令(读取完成)的响应,写入完成缓冲器管理器模块用于管理写入命令(写入 响应)的响应。
在一些实施例中,芯片到芯片入口控制域包括数据包流解包模块 (Packet_Stream_Unpack),数据包流解包模块用于根据例如定制的ICN协议将ICN 数据流解包为命令和数据。在一些实施例中,根据操作类别(例如,内核、DMA), 将解包的命令和数据发送到内核信用控制模块(Kernel_Credit_Ctrl)或DMA信用 控制模块(DMA_Credit_Ctrl)。
在一些实施例中,芯片到芯片出口控制域包括芯片到芯片内核生成模块 (C2C_Kernel_Gen)、芯片到芯片DMA生成模块(C2C_DMA_Gen)和芯片到芯 片写入确认生成模块(C2C_WrAck_Gen)。芯片到芯片内核生成模块用于生成内核 类响应,芯片到芯片DMA生成模块用于生成DMA类响应,芯片到芯片写入确认生 成模块用于生成对于处理器(例如,图3-图8B所示的PPU)的写入确认响应。在 一些实施例中,生成的响应被馈送到芯片到芯片仲裁模块(C2C_Arbitration),芯 片到芯片仲裁模块被包括在芯片到芯片出口控制域中并用于执行仲裁,例如基于循 环或基于严格优先级进行仲裁。在一些实施例中,仲裁的获胜者被发送到数据包流 打包模块(Packet_Stream_Pack),数据包流打包模块被包括在芯片到芯片出口控制 域中并用于根据例如定制的ICN协议来打包命令和数据。
图14是根据本公开的一些实施例的一示例性的存储器访问系统的图访问引擎 模块的示意图。图14中的示意图仅用于说明的目的,并且取决于实现方式,图14 中所示的图访问引擎模块1400可以具有更少、更多和可选的组件和连接。可以理解, 图14所示的图访问引擎模块1400可以类似于图10的图访问引擎模块。在一些实施 例中,图访问引擎模块在FPGA上实现。
在一些实施例中,图访问引擎模块用于扩展ICN到存储的垫片模块(例如,图 11中的ICN到存储的垫片模块1100)以支持图应用的近内存处理。在一些实施例中, 图访问引擎模块包括两个域:PPU入口/出口域(PPU_Ingress/Egress)和图访问引擎 入口/出口域(GAE_Ingress/Egress)。
在一些实施例中,如图14所示,PPU入口/出口域类似于图11的ICN到存储的 垫片模块1100。在一些实施例中,图访问引擎域包括一个或多个模块,这些模块类 似于图2A、图2B或图2C中所示的模块。例如,图访问引擎域包括访问引擎(例 如,类似于图2B的访问引擎2310或图2C的访问引擎2400)、MoF先进先出队列(FIFO)、RISC-V(例如,类似于图2B的RISC-V 2330)和执行引擎(例如,类似 于图2B的GEMM执行引擎2340、图2B的VPU执行引擎2350或其组合)。因此, 图访问引擎1400使得GAE SMX卡能促进PPU执行GNN操作(例如,类似于图2A的GNN模块2220促进专用处理器2240执行GNN操作)。
图15是根据本公开的一些实施例的一示例性的存储器访问系统的结构上存储 器的交换机模块(memory of fabric switch module)的示意图。图15的示意图仅用 于说明的目的,并且取决于实现方式,图15所示的MoF交换机模块1500可以具有 更少、更多和可选的组件和连接。可以理解,图15所示的MoF交换机模块类似于 图10中的MoF交换机。在一些实施例中,在FPGA上实现MoF交换机。
在一些实施例中,MoF交换机模块包含以环形拓扑连接的4个GAE SMX卡(例 如,如图8B所示,4个GAE SMX卡通过4个MoF链路连接)。因此,每个GAE SMX 卡用于支持1次跳转的数据传输,从而所有SMX卡彼此之间完全连接。因此,MoF 交换机模块1500可用于执行1次跳转的数据旁路。例如,如图10所示,就数据流 而言,MoF交换机模块位于MoF中心模块和MoF边缘模块之间。在一些实施例中, MoF交换机模块包括两个交换机缓冲器,两个交换机缓冲器用于存储当前事务的数 据包。根据数据包中编码的信息(例如,卡的ID),MoF交换机模块包括交换机管 理器模块,交换机管理器模块用于生成控制信号,以确定传入数据包是被接收还是 被旁路到其他SMX卡。
图16是根据本公开的一些实施例的一示例性的使用一个或多个存储扩展卡加 速GNN处理的方法的流程图。方法1600可以在图8A或图8B所示的环境中实现。 方法1600可由图8A-图15所示的装置、设备或系统执行。取决于实现方式,方法 1600可以包括以各种顺序或并行执行的附加、更少或替代步骤。
步骤1610包括通过存储扩展卡从存储扩展卡中的一个或多个存储器中提取图 的部分结构数据。在一些实施例中,由存储扩展卡的访问引擎电路(例如,图14所 示的访问引擎)执行提取操作。在一些实施例中,存储扩展卡通过第一类型的互连 单元(例如,图8A或图8B所示的ICN全速链路)与用于图神经网络(GNN)处 理的处理单元通信耦合。在一些实施例中,存储扩展卡通过第二类型的互连单元(例 如,图8B中所示的MoF链路)与其他两个存储扩展卡中的每一个通信耦合,并且 该方法还包括从其他两个存储扩展卡中的一个或两个存储扩展卡提取部分结构数据。 在一些实施例中,存储扩展卡在FPGA上实现。
步骤1620包括使用提取到的图的部分结构数据执行节点采样,以选择一个或多个采样节点。在一些实施例中,由访问引擎电路执行节点采样。在一些实施例中, 以与图2C中的GetNeighbor模块2410或图2C中的GetSample模块2420类似的方 式执行节点采样。
步骤1630包括根据所选的一个或多个采样节点从一个或多个存储器中提取图 的部分属性数据。在一些实施例中,由访问引擎电路提取图的部分属性数据。在一 些实施例中,该方法还包括从其他两个存储器中的一个或两个存储器中提取部分属 性数据。
步骤1640包括通过第一类型的互连单元将所提取的图的部分属性数据发送给 处理单元。在一些实施例中,由访问引擎电路发送所提取的图的部分属性数据。
步骤1650包括使用所提取的图的部分属性数据对图执行GNN处理。在一些实 施例中,由处理单元执行GNN处理。在一些实施例中,主机包括用于执行GNN处 理的一个或多个处理器。在一些实施例中,一个或多个处理器包括一个或多个中央 处理单元(CPU)、一个或多个图形处理单元(GPU)、一个或多个图神经网络处 理单元、一个或多个专用图神经网络处理单元,等等。
在一些实施例中,处理单元通过第一类型的互连单元或两个第三类型的互连单元与其他处理单元通信耦合。在一些实施例中,每个第一类型的互连单元的形状因 子是两个QSFP-DD端口,两个QSFP-DD端口的带宽等于或大于100GB/s。在一些 实施例中,每个第二类型的互连单元的形状因子是一个QSFP-DD端口,一个 QSFP-DD端口的带宽等于或大于50GB/s。在一些实施例中,每个第三类型的互连 单元的形状因子是四个Mini-SAS端口,四个Mini-SAS端口的带宽等于或大于0GB/s。 在一些实施例中,该方法还包括(例如,类似于图8B中所示的GAE SMX卡)通过 存储扩展卡中的交换机,对通过第二类型的互连单元从其他两个存储扩展卡中的每 一个接收到的数据执行数据旁路。在一些实施例中,该方法还包括(例如,类似于 图8A所示的PPU)通过处理单元中的交换机,对通过第一类型的互连单元或两个 第三类型的互连单元从其他处理单元接收的数据执行数据旁路。
上述各部分中描述的每个过程、方法和算法可体现在由一个或多个计算机系统或包含计算机硬件的计算机处理器执行的代码模块中,并可通过该代码模块完全或 部分自动化。这些过程和算法可以部分或全部在专用电路中实现。
当本文公开的功能以软件功能单元的形式实现并作为独立产品销售或使用时,它们可存储在可由处理器执行的非易失性计算机可读存储介质中。本文公开的特定 技术解决方案(全部或部分)或有助于当前技术的各方面可以以软件产品的形式体 现。软件产品包括多个指令,可以存储在存储介质中,以使计算设备(可以是个人 计算机、服务器、网络设备等)执行本公开实施例的方法的所有或一些步骤。存储 介质包括闪存驱动器、便携式硬盘驱动器、ROM、RAM、磁盘、光盘、可用于存储 程序代码的另一介质、或其任何组合。
特定实施例进一步提供了一种系统,该系统包括处理器和非暂时性计算机可读存储介质,该存储介质存储可由处理器执行的指令,以使系统执行与上述实施例的 任何方法中的步骤相对应的操作。特定实施例还提供非暂时性计算机可读存储介质, 该存储介质配置有可由一个或多个处理器执行的指令,以使一个或多个处理器执行 与上述实施例的任何方法中的步骤相对应的操作。
本文公开的实施例可以通过与客户端交互的云平台、服务器或服务器组(以下 统称为“服务系统”)来实现。客户端可以是终端设备或用户在平台上注册的客户端, 其中终端设备可以是移动终端、个人计算机(PC)和可以安装有平台应用程序的任 何设备。
上述各种特征和过程可以相互独立地使用,也可以以各种方式组合。所有可能 的组合和子组合均属于本公开的范围。此外,在一些实现中可以省略某些方法或过 程块。本文描述的方法和过程也不限于任何特定序列,并且可以在适当的其他序列 中执行与其相关的块或状态。例如,所描述的块或状态可以按照不同于所公开的确 定顺序执行,或者可以在单个块或状态中组合多个块或状态。示例块或状态可以串 行、并行或以某种其他方式执行。可以将块或状态添加到所公开的示例性的实施例 中或从所公开的示例性的实施例中移除。本文描述的示例性的系统和组件的配置可 以不同于所描述的。例如,与所公开的示例性的实施例相比,可以将元件添加到所 公开的示例性的实施例中、从所公开的示例性的实施例中移除或重新排列元件。
本文描述的示例性的方法的各种操作可以通过算法至少部分地执行。该算法可以包含在存储在存储器(例如,上述非暂时性计算机可读存储介质)中的程序代码 或指令中。这种算法可以包括机器学习算法。在一些实施例中,机器学习算法不显 式地编程计算机以执行功能,但可以从训练数据中学习以建立执行该功能的预测模 型。
本文所描述的示例性的方法的各种操作可由一个或多个处理器至少部分地执行,该一个或多个处理器被临时配置(例如,通过软件)或永久配置用于执行相关操作。 无论是临时配置还是永久配置,这些处理器都构成处理器实现的引擎,这些引擎运 行以执行本文所描述的一个或多个操作或功能。
类似地,以一个或多个特定处理器为硬件示例,本文所描述的方法可以至少部 分由处理器实现。例如,方法的至少一些操作可以由一个或多个处理器或处理器实 现的引擎执行。此外,一个或多个处理器还可以在“云计算”环境中或作为“软件即服 务”(softwareas a service,SaaS)来支持相关操作的性能。例如,至少一些操作可 以由一组计算机(作为包括处理器的机器的示例)执行,这些操作可以通过网络(例 如,因特网)和一个或多个适当的接口(例如,应用程序接口(Application Program Interface,API))访问。
某些操作的性能可能分布在处理器之间,不仅驻留在一台机器内,而且部署在 多台机器上。在一些示例性的实施例中,处理器或处理器实现的引擎可以位于单个 地理位置(例如,在家庭环境、办公室环境或服务器农场内)。在其他示例性的实 施例中,处理器或处理器实现的引擎可以分布在多个地理位置上。
在本说明书中,多个实例可以实现为被描述为单个实例的组件、操作或结构。 尽管一个或多个方法的单个操作被示出并描述为单独的操作,但是可以同时执行一 个或多个单个操作,并且不需要按照所示的顺序执行操作。在示例性的配置中呈现 为单独组件的结构和功能可以实现为组合结构或组件。类似地,作为单个组件呈现 的结构和功能可以作为单独的组件来实现。这些以及其他变更、修改、添加和改进 属于本文主题的范围。
虽然已经参考特定示例性的实施例描述了主题的概要,但是可以在不脱离本公开实施例的更广泛范围的情况下对这些实施例进行各种修改和更改。仅为方便起见, 可在本文中单独或全体使用术语“本公开”来引用主题的此类实施例,并且如果事实 上公开了多个信息或概念,则无意将本申请的范围自愿限制为任何单个信息或概念。
本文所示的实施例被足够详细地描述,以使本领域技术人员能够实践所公开的教导。可以使用其他实施例并从中派生出其他实施例,使得可以在不脱离本公开的 范围的情况下进行结构和逻辑的替换和更改。因此,详细描述不是限制意义上的详 细描述,并且各种实施例的范围仅由所附权利要求以及这些权利要求有权获得的全 部等同物来定义。
本文所描述和/或附图中描述的流程图中的任何流程描述、元素或块应理解为潜在表示的模块、段或代码段,其中包括用于实现流程中特定逻辑功能或步骤的一个 或多个可执行指令。替代实现包括在本文所描述的实施例的范围内,其中,如本领 域技术人员所理解的,根据所涉及的功能,可以从所示或所讨论的内容中删除元素 或功能、无序执行元素或功能(包括基本上并行或反向执行)。
除非另有明确说明或上下文另有说明,否则此处使用的“或”是包含性的而非排他性的。因此,在此,“A、B或C”指“A、B、A和B、A和C、B和C,或A、B 和C”,除非另有明确说明或上下文另有说明。此外,“和”是连带的,除非另有明确 说明或上下文另有说明。因此,在此,“A和B”指“A和B,共同或各自”,除非另有 明确说明或上下文另有说明。此外,可以为本文描述为单个实例的资源、操作或结 构提供多个实例。此外,各种资源、操作、引擎和数据存储之间的边界在某种程度 上是任意的,并且在特定的说明性配置的上下文中特定操作是说明性的。功能的其 他分配的设想可能属于本文的各种实施例的范围。一般而言,在示例性的配置中呈 现为单独资源的结构和功能可以实现为组合结构或资源。类似地,作为单个资源呈 现的结构和功能可以作为单独的资源来实现。这些和其他变化、修改、添加和改进 属于由所附权利要求书表示的本公开实施例的范围。因此,说明书和附图应被视为 是说明性的,而不是限制性的。
术语“包括”或“包含”用于表示随后声明的特征的存在,但不排除添加其他特征。除非另有明确说明或在所使用的上下文中以其他方式理解,否则条件语言(例如,“可 以”)通常旨在传达某些实施例包括而其他实施例不包括某些特征、元素和/或步骤。 因此,这种条件语言通常并不意味着一个或多个实施例以任何方式需要特征、元素 和/或步骤,或者一个或多个实施例必然包括用于在有或无用户输入或提示的情况下, 决定这些特征、元素和/或步骤是否包括在任何特定实施例中或将在其中执行的逻辑。

Claims (20)

1.一种系统,包括:
多个处理单元,用于执行图神经网络处理;和
多个存储扩展卡,用于存储用于图神经网络处理的图数据,其中,
所述多个处理单元中的每个处理单元通过一个或多个互连单元分别与其他处理单元通信耦合;
所述多个处理单元分别与所述多个存储扩展卡通信耦合;和
所述多个存储扩展卡中的每个存储扩展卡包括图访问引擎电路,所述图访问引擎电路用于加速图神经网络处理的存储器访问。
2.根据权利要求1所述的系统,其中,
所述多个处理单元包括第一处理单元、第二处理单元、第三处理单元和第四处理单元;
所述多个存储扩展卡包括第一存储扩展卡、第二存储扩展卡、第三存储扩展卡和第四存储扩展卡;
所述第一处理单元、所述第二处理单元、所述第三处理单元和所述第四处理单元中的每一个通过第一类型的互连单元分别与所述第一存储扩展卡、所述第二存储扩展卡、所述第三存储扩展卡和所述第四存储扩展卡中的每一个通信耦合;
所述第一处理单元通过所述第一类型的互连单元与所述第三处理单元和所述第四处理单元中的每一个通信耦合;
所述第二处理单元通过所述第一类型的互连单元与所述第三处理单元和所述第四处理单元中的每一个通信耦合;
所述第一处理单元通过两个第二类型的互连单元与所述第二处理单元通信耦合;
所述第三处理单元通过两个所述第二类型的互连单元与所述第四处理单元通信耦合;
所述第一存储扩展卡通过第三类型的互连单元与所述第二存储扩展卡和所述第三存储扩展卡中的每一个通信耦合;和
所述第四存储扩展卡通过所述第三类型的互连单元与所述第二存储扩展卡和所述第三存储扩展卡中的每一个通信耦合。
3.根据权利要求2所述的系统,其中,所述第二类型的互连单元的带宽是所述第一类型的互连单元的带宽的一半。
4.根据权利要求2所述的系统,其中,所述第一类型的互连单元的形状因子是两个QSFP-DD端口,所述两个QSFP-DD端口的带宽等于或大于100GB/s。
5.根据权利要求2所述的系统,其中,
所述第二类型的互连单元的形状因子是四个Mini-SAS端口,所述四个Mini-SAS端口的带宽等于或大于50GB/s;
所述第一处理单元通过两个所述第二类型的互连单元与所述第二处理单元并行地通信耦合;和
所述第三处理单元通过两个所述第二类型的互连单元与所述第四处理单元并行地通信耦合。
6.根据权利要求2所述的系统,其中,所述第三类型的互连单元的形状因子是一个QSFP-DD端口,所述QSFP-DD端口的带宽等于或大于50GB/s。
7.根据权利要求2所述的系统,其中,所述多个存储扩展卡中的每个存储扩展卡还用于在本地存储器操作和通过所述第一类型或第二类型的一个或多个互连单元进行的数据包传输之间执行数据转换。
8.根据权利要求2所述的系统,其中,所述多个存储扩展卡中的每个存储扩展卡包括交换机,所述交换机用于对通过一个或多个所述第三类型的互连单元从一个或多个存储扩展卡接收的数据执行数据旁路。
9.根据权利要求1所述的系统,其中,
所述多个处理单元包括第一处理单元、第二处理单元、第三处理单元和第四处理单元;
所述多个存储扩展卡包括第一存储扩展卡、第二存储扩展卡、第三存储扩展卡和第四存储扩展卡;
所述第一处理单元、所述第二处理单元、所述第三处理单元和所述第四处理单元中的每一个都通过第一类型的互连单元分别与所述第一存储扩展卡、所述第二存储扩展卡、所述第三存储扩展卡和第四存储扩展卡中的每一个通信耦合;
所述第一处理单元通过第一类型的互连单元与所述第三处理单元和所述第四处理单元中的每一个通信耦合;
所述第二处理单元通过所述第一类型的互连单元与所述第三处理单元和所述第四处理单元中的每一个通信耦合;
所述第一处理单元通过两个第二类型的互连单元与所述第二处理单元通信耦合;和
所述第三处理单元通过两个所述第二类型的互连单元与所述第四处理单元通信耦合。
10.根据权利要求9所述的系统,其中,
所述第一类型的互连单元的形状因子是两个QSFP-DD端口,所述两个QSFP-DD端口的带宽等于或大于100GB/s;
所述第二类型的互连单元的形状因子是四个Mini-SAS端口,所述四个Mini-SAS端口的带宽等于或大于50GB/s;
所述第一处理单元通过两个所述第二类型的互连单元与所述第二处理单元并行地通信耦合;和
所述第三处理单元通过两个所述第二类型的互连单元与所述第四处理单元并行地通信耦合。
11.根据权利要求9所述的系统,其中,所述第一处理单元、所述第二处理单元、所述第三处理单元和所述第四处理单元中的每一个都包括交换机,所述交换机用于对通过所述第一类型或所述第二类型的一个或多个互连单元从一个或多个其他处理单元接收的数据执行数据旁路。
12.根据权利要求1所述的系统,其中,所述图访问引擎电路还用于:
从所述多个存储扩展卡中的一个或多个存储扩展卡中提取图的部分结构数据;
使用提取到的所述图的部分结构数据执行节点采样,以选择一个或多个采样节点;
根据选定的一个或多个采样节点,从所述一个或多个存储扩展卡中提取所述图的部分属性数据;和
将提取到的所述图的部分属性数据发送给所述多个处理单元中的一个或多个处理单元。
13.根据权利要求1所述的系统,其中,所述多个存储扩展卡中的每个存储扩展卡在现场可编程门阵列上实现。
14.根据权利要求1所述的系统,其中,所述多个处理单元中的每个处理单元包括一个或多个中央处理单元、一个或多个图形处理单元、一个或多个张量处理单元、一个或多个神经网络处理单元或一个或多个图神经网络处理单元。
15.一种存储扩展卡,包括:
一个或多个存储器,用于存储用于图神经网络处理的图数据;
一个第一类型的互连单元,用于将所述存储扩展卡与用于执行图神经网络处理的处理单元连接;
两个第二类型的互连单元,用于将所述存储扩展卡与其他两个存储扩展卡连接;和
图访问引擎电路,用于:
从所述一个或多个存储器或所述其他两个存储扩展卡提取图的部分结构数据;
使用提取到的所述图的部分结构数据执行节点采样,以选择一个或多个采样节点;
根据所选的一个或多个采样节点,从所述一个或多个存储器或所述其他两个存储扩展卡提取所述图的部分属性数据;和
通过所述第一类型的互连单元将提取到的所述图的部分属性数据发送给所述处理单元,
其中,所述两个第二类型的互连单元的每一个的带宽是所述一个第一类型的互连单元的一半。
16.根据权利要求15所述的存储扩展卡,其中,所述处理单元通过所述第一类型的互连单元或两个第三类型的互连单元与其他处理单元通信耦合。
17.根据权利要求15所述的存储扩展卡,其中:
所述第一类型的互连单元的形状因子是两个QSFP-DD端口,所述两个QSFP-DD端口的带宽等于或大于100GB/s。
18.根据权利要求15所述的存储扩展卡,其中,
所述第二类型的互连单元的形状因子是一个QSFP-DD端口,所述一个QSFP-DD端口的带宽等于或大于50GB/s;和
第三类型的互连单元的形状因数是四个Mini-SAS端口,所述四个Mini-SAS端口的带宽等于或大于50GB/s。
19.根据权利要求15所述的存储扩展卡,其中,所述存储扩展卡在现场可编程门阵列上实现。
20.根据权利要求16所述的存储扩展卡,其中,所述存储扩展卡还用于在本地存储器操作和通过所述第一类型或第二类型的一个或多个互连单元的数据包传输之间执行数据转换。
CN202210773546.5A 2022-07-01 2022-07-01 一种存储扩展卡和系统 Pending CN117389921A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210773546.5A CN117389921A (zh) 2022-07-01 2022-07-01 一种存储扩展卡和系统
US18/070,418 US20240005127A1 (en) 2022-07-01 2022-11-28 Smart memory extension to processors

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210773546.5A CN117389921A (zh) 2022-07-01 2022-07-01 一种存储扩展卡和系统

Publications (1)

Publication Number Publication Date
CN117389921A true CN117389921A (zh) 2024-01-12

Family

ID=89433318

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210773546.5A Pending CN117389921A (zh) 2022-07-01 2022-07-01 一种存储扩展卡和系统

Country Status (2)

Country Link
US (1) US20240005127A1 (zh)
CN (1) CN117389921A (zh)

Also Published As

Publication number Publication date
US20240005127A1 (en) 2024-01-04

Similar Documents

Publication Publication Date Title
CN110520853B (zh) 直接存储器访问的队列管理
US11294599B1 (en) Registers for restricted memory
US20210295168A1 (en) Gradient compression for distributed training
CN110059793B (zh) 生成式对抗神经网络的逐步修改
CN113642734A (zh) 一种深度学习模型的分布式训练方法、装置以及计算设备
CN114008586A (zh) 使用处理元件阵列的转置运算
CN111191784A (zh) 转置的稀疏矩阵乘以稠密矩阵用于神经网络训练
CN111667542B (zh) 适用于人工神经网络的用于处理压缩数据的解压缩技术
CN113449839A (zh) 一种分布式训练方法、梯度通信方法、装置以及计算设备
US11494321B1 (en) State buffer memloc reshaping
US20230073154A1 (en) Semantic rearrangement of unknown objects from natural language commands
JP7492555B2 (ja) 複数の入力データセットのための処理
US20220391781A1 (en) Architecture-agnostic federated learning system
WO2023282847A1 (en) Detecting objects in a video using attention models
CN115797543A (zh) 单个图像逆向渲染
CN113822975B (zh) 用于对图像进行有效采样的技术
WO2023124304A1 (zh) 芯片的缓存系统、数据处理方法、设备、存储介质及芯片
US20220398283A1 (en) Method for fast and better tree search for reinforcement learning
CN109871260A (zh) 一种基于容器间共享内存的多维度服务限流方法及系统
CN117389921A (zh) 一种存储扩展卡和系统
US11830145B2 (en) Generation of differentiable, manifold meshes of arbitrary genus
CN116246062A (zh) 使用图像/文本对执行语义分割训练
CN116127685A (zh) 使用机器学习执行模拟
CN108494700A (zh) 跨链路数据传输方法、装置、计算机设备及存储介质
CN111178373B (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