CN117795495A - 通过图形处理单元的网络接口的直接存储器写入 - Google Patents

通过图形处理单元的网络接口的直接存储器写入 Download PDF

Info

Publication number
CN117795495A
CN117795495A CN202280040550.9A CN202280040550A CN117795495A CN 117795495 A CN117795495 A CN 117795495A CN 202280040550 A CN202280040550 A CN 202280040550A CN 117795495 A CN117795495 A CN 117795495A
Authority
CN
China
Prior art keywords
gpu
integrated
memory
communication system
network interface
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
CN202280040550.9A
Other languages
English (en)
Inventor
T·里默
S·苏
M·德巴奇
B·G·沃伦
N·A·苏塔尔
A·杜尔格
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN117795495A publication Critical patent/CN117795495A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • 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/38Universal adapter
    • G06F2213/3808Network interface controller

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Multi Processors (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Abstract

本文描述的示例涉及具有至少一个集成通信系统的第一图形处理单元(GPU),其中所述至少一个集成通信系统将应用可靠性协议来与关联于第二GPU的第二至少一个集成通信系统通信,以将数据从第一存储器区域复制到第二存储器区域,并且其中所述第一存储器区域与所述第一GPU相关联,且所述第二存储器区域与所述第二GPU相关联。

Description

通过图形处理单元的网络接口的直接存储器写入
优先权的要求
本申请要求2021年7月6日提交的名为“GRAPHICS PROCESSING UNIT WITHNETWORK INTERFACES”的美国临时申请号63/218,832的优先权,该申请进而要求2022年6月29日提交的题为“DIRECT MEMORY WRITES BY NETWORK INTERFACE OF AGRAPHICSPROCESSING UNIT”的美国申请号17/853,711在35U.S.C.§365(c)下的优先权,它们以其整体而被结合于此。
背景技术
在数据中心中,图形处理单元(GPU)、中央处理单元(CPU)、现场可编程门阵列(FPGA)、存储器和其它装置由应用共享,作为基础设施即服务(IaaS)的一部分或可组成数据中心(DC)的一部分。数据中心中的共享资源用于高性能计算(HPC)、机器学习(ML)以及人工智能(AI)训练和推理应用。HPC、ML和AI训练可能利用大量的计算和通信资源。
附图说明
图1描绘了示例系统。
图2描绘了示例系统。
图3描绘了示例软件堆栈。
图4示出了示例系统。
图5描绘了示例系统。
图6描绘了示例系统。
图7描绘了示例GPU。
图8描绘了GPU的示例。
图9描绘了示例控制平面软件堆栈。
图10A-图10D描绘了示例GPU计算组件。
图11描绘了示例网络接口装置。
图12描绘了示例过程。
图13描绘了示例系统。
图14描绘了示例系统。
具体实施方式
AI训练模型复杂度和规模的增加已为其带来训练时间的显著增加。具有模型的全部或部分副本的多个平台可以以HPC方式紧密合作,从而以并行分布式方式执行AI训练算法。因此,这些平台通过高速、低时延的网络相互通信。
图1描绘了示例AI训练解决方案。AI训练平台(例如,系统节点)包括使用以太网、InfiniBand、Omni-Path等进行通信的8个高速网络接口控制器(NIC)以及2个CPU和8个GPU。但是,CPU、GPU和NIC的数量和比例可能变化。CPU、GPU和NIC可以经由本地平台输入输出(IO)总线(例如,快速外围组件互连(PCIe)、快速计算链接(CXL)或超路径互连(UPI))进行通信。IO总线的设计可以提供CPU、NIC或GPU可能到平台内的另一个CPU、NIC或GPU。然而,IO总线的吞吐量性能可能取决于哪对装置正进行交互而变化。因此,GPU可以在物理上靠近NIC,诸如以用于频繁的通信。一个或多个集成NIC可以通过专有协议或标准化远程直接存储器访问(RDMA)协议(例如,InfiniBand、聚合以太网上的远程直接存储器访问(RDMA)(RoCE)、RoCEv2等)通信。
在AI训练工作负荷期间,AI模型可在平台内的多个GPU上以分布式方式执行。GPU可以利用多个高速连接(为了简洁起见,示出了两个,但是可以使用1-10个或更多个)。连接可以布置在平台上GPU到GPU连接拓扑中。连接可以包括直接GPU到GPU链接(例如,点对点、多对多、或全对全拓扑),或者它可以利用各种其它拓扑(例如,CLOS、torus、mesh等)中的内部或外部交换机。这种GPU到GPU的一个现有示例是nvLink
系统节点平台可经由交换结构100与其它系统节点平台连接。交换结构100可以提供系统节点到系统节点通信以用于分布式AI训练应用、对存储装置的访问、以及对控制功能(例如,作业调度、供应等)的访问以用于集群和数据中心。此外,一些部署可以利用控制网络102的网络连接性。控制网络102可以是CPU平台控制器中枢(PCH)和基板管理控制器(BMC)集成NIC或分立NIC(未示出),其用于管理平台操作,诸如功率利用、环境(例如电压、功率、冷却、加热器)、服务器关机、服务器启动、服务器重启等。控制平面网络也可以连接到交换结构中的交换机(未示出)上的低速控制平面接口。
图2描绘了用于AI训练或HPC的平台的现场部署。高性能计算(HPC)集群可以包括计算、存储和控制平面。存储、计算和控制可以虚拟地或物理地分离。例如,计算可以利用人工智能(AI)通信库或消息传递接口(MPI)。存储可以包括并行文件系统(filesys)、filesys路由或桥接。控制平面可以执行作业管理、操作系统(OS)供应、结构管理、以及服务器和IO装置管理。诸如文件系统(FS服务器)、启动/供应、登录(例如,来自广域网(WAN)或局域网(LAN)的最终用户访问)、管理(Mgmt)节点之类的服务可以执行结构管理、作业调度和其它功能或服务。Mgmt节点可以利用不具有GPU的CPU,但可以利用GPU。
在数据中心或跨数据中心的云部署中,节点可经由可重新配置的超大规模交换结构(例如,交换结构100)进行通信。在数据中心中,服务器(例如,启动、文件系统、管理(mgmt)节点等)可以与虚拟集群交互。服务器可以利用通过装置接口连接到单个结构的分离NIC以用于存储、计算和控制业务。一些NIC支持聚合以太网RDMA(RoCE),具有安全性、虚拟化等的互联网协议上传输控制协议(TCP/IP)支持。一个或多个计算节点是图1中所示的系统节点的实例。
图3描绘了控制平面软件堆栈。系统节点NIC的控制可以使用交换结构100或专用控制网络102来实现。管理或服务节点可以执行集中式软件定义网络(SDN)控制应用,并利用控制网络(例如,100或102)及其以太网交换机经由一个或多个控制平面NIC进行通信。
在系统节点中,套接字堆栈向控制平面代理递送控制平面命令。控制平面代理通过NIC驱动器API访问PCIe总线上的NIC寄存器和固件,以执行控制平面操作,诸如查询遥测数据、配置端口属性、配置服务质量(QoS)、安全规范等。如图3中所示,控制平面命令可以经由网络接口控制器(NIC)300(其经由交换结构100或控制网络102连接到控制平面)递送到控制平面代理,并且控制平面代理可以执行控制平面操作以配置平台中的其它NIC 302(例如,集成到一个或多个GPU中的NIC)。控制平面操作可以包括拓扑查询、交换机状态和交换机配置。主网络交换机的控制平面操作可以经由主网络或经由控制网络来传递。
至少为了减少GPU之间的通信时延,可以将一个或多个NIC集成到GPU中,使得同一半导体管芯或片上系统(SoC)可以包括GPU和用于GPU到GPU通信的一个或多个集成NIC。在一些示例中,不使用装置接口来提供NIC和GPU之间的通信,而是使用总线或其它通信介质。注意,对GPU的引用也可以代替地指代XPU或加速器。集成NIC可以使用可靠性协议与其它集成NIC通信,以通过远程直接存储器访问(RDMA)将数据从第一存储器复制到第二存储器。本文描述了可靠性协议的示例。
一些示例集成NIC执行拓扑发现以发现其它集成NIC。管理节点可以经由结构来管理集成NIC。可能会出现集成NIC的带外配置。集成NIC可被配置成使用装置接口(诸如PCIe或CXL)或甚至不同的专有接口,以便使控制平面代理访问寄存器并控制集成NIC内的操作。
图4描绘了示例系统。外扩结构(scale out fabric)或网络520提供计算节点之间的通信。节点可以经由智能NIC或其它类型的NIC装置与数据中心通信。外扩网络可用于与POD中的节点通信。POD的大小取决于数据中心设计,但通常可能是数十到数千个计算节点,而数据中心的规模可能是数十万个节点。
租用资源以在云中运行AI训练作业的租户可被指派单个POD内的计算节点子集连同数据中心内的其它服务节点(文件系统、作业管理等)。
图5描绘了示例系统。系统节点500-0可以包括一个或多个CPU 502-0至502-P(其中P是整数)和一个或多个GPU 504-0,它们与一个或多个其它系统节点500-1至500-N(其中N是整数)的一个或多个CPU 502-0至502-P和一个或多个GPU 504-0通信。本文至少关于图10A、图10B、图10C、图10D和/或图13描述了一个或多个GPU 504-0的各种示例。
智能NIC或其它网络接口装置508-0可使用链路和特征(诸如RDMA和卸载,包括硬件和可编程引擎)来提供连接性。智能NIC或其它网络接口装置508-0可以用于系统节点500-0和其它系统节点500-1至500-N或非计算节点(例如,存储、启动、管理、控制节点等)之间的数据中心通信。例如,网络接口装置508-0可以包括以下一个或多个:网络接口控制器(NIC)、启用远程直接存储器访问(RDMA)的NIC、路由器、交换机、转发元件、基础设施处理单元(IPU)、或数据处理单元(DPU)。至少关于图11描述了网络接口装置的各种示例。系统节点500-0的描述可以适用于系统节点500-1至500-N中的一个或多个。
GPU到GPU连接506-0可用于GPU 504-0中的GPU之间的通信。外扩结构520可以提供一个或多个GPU 504-0和另一系统节点的一个或多个GPU之间的通信。一个或多个GPU 504-0可以通过到GPU到GPU连接506-0和外扩结构520的一个或多个接口或NIC而被耦合到一个或多个GPU 504-0。一个或多个GPU 504-0可以包括多个接口或NIC。内置于GPU中的一个或多个接口或NIC的第一集合可以连接到GPU到GPU连接506-0。GPU到GPU连接506-0可以以符合以下一种或多种协议的方式传送和接收通信:Omni-Path、以太网、/>NVLink、CXL、InfiniBand或其它协议。
内置于GPU中的一个或多个接口或NIC的第二集合可连接到外扩结构520。关于图7和图8描述了连接到GPU到GPU连接506-0和外扩结构520的接口或NIC的各种示例。外扩结构520可以以符合以下一种或多种协议的方式传送和接收通信:Omni-Path、以太网、NVLink、CXL、InfiniBand或其它协议。
如GPU 504-0中的至少一个GPU的示例透视图中所示,GPU可包括GPU计算电路模块540和至少NIC 0和NIC 1。本文至少关于图7、图8和/或图11描述了NIC 0和NIC 1的各种示例。
NIC 0和NIC 1可在存储器装置之间执行远程直接存储器读取或写入操作。例如,NIC 0可用于在单个系统节点的GPU之间读取或写入数据,而NIC 1可用于在系统节点内或不同系统节点之间的GPU之间读取或写入数据。NIC 0可以利用比NIC 1的安全性要求更低的安全性要求,例如,对于使用NIC 0和NIC 1的事务,可以在存储器管理单元(MMU)中执行虚拟地址保护。NIC 1可以利用虚拟局域网(VLAN)标记和认证来限制源和目标、VxLAN、访问控制列表(ACL)等。NIC 0和1可以成为系统节点内PCIe(或CXL)拓扑的一部分,并且可以由系统节点中的CPU和GPU使用。
作为减少GPU NIC管芯空间和功率使用的一部分,可减少集成到GPU中的NIC 0和/或NIC 1对带内控制平面协议的支持。这样,为了保持控制平面协议的灵活性和性能,智能NIC 508-0(或连接到控制网络530的可选平台NIC)可以为系统节点500-0提供安全性和控制功能。智能NIC 508-0可以基于来自存储和控制网络512的通信,用存储协议、安全性、控制操作来配置系统节点NIC、CPU、GPU和其它装置。软件定义联网(SDN)控制器可以通过执行针对系统节点500-0到500-N的控制操作来配置存储协议、安全性(例如,虚拟局域网(VLAN)、虚拟可扩展局域网(VXLAN)、多租户分区、数据加密等)。
外扩结构520的交换机的带外管理端口可连接到存储和控制网络512和/或控制平面网络530以用于控制平面操作,诸如拓扑查询、交换机状态和交换机配置。在拓扑查询的情况下,发现GPU NIC的拓扑的带内查询可以由GPU NIC的控制平面分组带内传输来执行,如至少关于图9所描述的。通过减少外扩结构520中的控制平面业务,可以减少外扩结构520上的开销和时延抖动。
例如,外扩结构520可支持非标准协议,以减少开销并增加消息吞吐量。例如,外扩结构520可以利用一个或多个协议无关分组处理器(P4)可编程交换机来实现对以太网报头和协议的改变,以移除用于提高的消息速率或减少的开销的字段。
外扩结构520的交换机不需要使用控制平面安全性特征,诸如分组加密和认证。相反,诸如虚拟局域网(VLAN)或经由路由的隔离之类的低开销方法可以阻止云租户访问未指派给它们的节点。然而,外扩结构520的交换机可以使用控制平面安全性特征,诸如分组加密和认证。
通过在同一集成电路芯片或不同集成电路芯片、同一管芯或不同管芯、或者同一封装或不同封装上形成,可将一个或多个接口或NIC内置于GPU中。GPU和NIC可以使用芯片到芯片通信、管芯到管芯通信、基于分组的通信、装置接口上的通信、基于结构的通信等而被通信地耦合。管芯到管芯通信可以符合嵌入式多管芯互连桥接器(EMIB),或者利用内插器。GPU到GPU连接506-0可以与GPU在平台上,由此GPU到GPU连接和可选的相关交换机可以是系统节点500-0的板和卡的集合的一部分。
控制网络530可提供涉及以下一项或多项的通信:PCH、BMC、电压控制、温度控制(例如,加热、风扇或冷却)、系统管理员业务、系统控制(例如,关机、启动、重启)。可以使用集成到CPU 502-0至502-P中的NIC来进行对外扩网络530的访问。
通过使用网络和结构,至少对于分布式多GPU应用(诸如HPC或Al训练),GPU可经由外扩结构520以低开销、低时延和高带宽进行通信。
图6描绘了示例系统。系统节点600类似于系统节点500,并且包括直接耦合到GPU504-0的至少一个分立NIC 610-0。本文至少关于图10A、图10B、图10C、图10D和/或图13描述了一个或多个GPU 604-0的各种示例。GPU可以被灵活配置成使用各种类型的NIC或连接(例如,分立NIC、集成NIC、以太网NIC、Omnipath等)和各种类型的接口。要使用的NIC或连接的类型的配置可以在以下一个或多个时发生:硬件设计时间、硬件制造、系统配置时间、运行时间、或其它。
NIC 610-0可通过外扩结构520向系统节点600-0的一个或多个GPU 604-0和其它系统节点的其它GPU提供通信。NIC 610-0可以被配置有来自第三方供应商的特征,并且此类特征可以包括RDMA、低时延存储器访问、低时延消息传递、优化的集合操作、用于高速低时延通信的专有或标准协议等。NIC 610-0可以经由装置接口连接到一个或多个GPU 604-0,或者可以经由装置接口以供CPU 502-0至502-P访问。NIC 610-0可以被实现为网络接口装置,并且提供通过除NIC 0和NIC 1可用的协议之外的协议的通信,并且执行除NIC 0和NIC 1的操作之外的附加操作,诸如加速器操作或卸载操作。例如,NIC 610-0可以使用TCP、RDMA或专有协议进行通信,并且可以执行数据加密、数据解密、数据压缩、数据解压缩、消息标签匹配、集体卸载、或本文描述的其它加速器操作等。
图7描绘了GPU的电路模块。例如,GPU计算718可以利用通信子系统700,其作为NIC或接口而被集成到GPU中。GPU计算718的一些示例可以包括至少图10A、图10B、图10C、图10D和/或图13的元素。GPU可以具有多于两个或更多个子系统700,以增加GPU到GPU连接的数量和通信带宽。
通信子系统700可配置成传送和接收GPU到GPU通信(例如,经由外扩结构506)或外扩结构通信(例如,经由外扩结构520)的混合。GPU到GPU通信或外扩结构通信的混合比例可以在运行时间或平台设计时间进行配置,从而允许为特定应用集合设计和部署平台的灵活性。通信子系统700可以在启动时利用桥接器706或以太网桥接器708进行配置。
例如,桥接器706可经由用于GPU到多个GPU连接的结构提供通信。例如,桥接器706可以提供网络连接,诸如XeLink、/>Omni-Path、以太网、/>NVLink、CXL、InfiniBand或其它协议。
以太网桥接器708可经由外扩网络在GPU计算718和一个或多个GPU之间提供至少一个以太网连接。以太网桥接器708可以执行针对所传送和接收的分组的以太网分组处理。外扩网络可以符合以下一种或多种协议:以太网、Omni-Path、/>XeLink、NVLink、CXL、InfiniBand或其它协议。以太网桥接器708可以传送GPU到GPU连接业务(例如,506-0)和来自端口的外扩结构业务(例如,520)的混合,并且交换机710可以转发业务以将GPU业务提供给一个或多个接口722、经由以太网桥接器708提供给外扩结构、或者提供给可靠性和拥塞管理电路模块712。交换机也可以将业务从一个接口722转发到接口724。接口724可以类似于接口722。虽然仅示出了接口722和724,但是GPU计算718可以利用多于两个接口。GPU到GPU业务可由交换机710接收,并经由与其它GPU相关联的交换机710或经由外扩结构提供给另一GPU。交换机710可以提供到另一个GPU计算装置的连接。
串行解串器(Serdes)702可从外扩结构接收分组,并向外扩结构传送分组。物理层协议块704可以对来自桥接器706和/或以太网桥接器708的以太网分组执行以太网媒体访问控制(MAC)和物理编码子层(PCS)操作。在一些示例中,使用多个串行解串器,从而允许子系统700的每个实例有多个连接。
可靠性和拥塞管理电路模块712可包括用于去往或来自GPU计算718或存储器720的通信的一个或多个可靠性和拥塞管理电路模块。通信可以发生在同一存储器装置的不同可寻址存储器区域之间或者不同存储器装置的不同可寻址存储器区域之间。例如,同一系统的GPU的GPU到GPU通信可在同一存储器装置的不同可寻址存储器区域或不同存储器装置的不同可寻址存储器区域之间读取或写入数据。
接下来描述,可靠性和拥塞管理电路模块712可使用GPU到GPU连接(例如,GPU到GPU连接506-0)和/或外扩结构(例如,外扩结构520)执行通信的可靠传输。例如,可靠传输可以利用可靠传输协议,该可靠传输协议使用位图来跟踪所接收的分组序列号中的一个或多个间隙,并且向分组的发送方指示未递送分组,以标识已递送分组的范围。位图可以标识一个或多个连接的已递送分组和未递送分组。向分组的发送方指示未递送分组以标识已递送分组的范围可以包括提供指示未递送分组的开始和结束的否定确认序列范围。可以通过提供指示未递送分组的开始和结束的序列范围来指示已递送分组的范围。可以通过提供指示确认的序列范围来标识已递送分组的范围,该序列范围直到并包括序列号。重传一个或多个分组可以基于接收未递送分组的范围或超时的指示而发生。对于可靠性和拥塞管理电路模块712的示例操作,参见例如题为“SCALABLE PROTOCOL-AGNOSTIC RELIABLETRANSPORT”的美国专利申请公开2022/0085916。
可靠性和拥塞管理电路模块712可提供可靠通信,包括执行分组丢失恢复和拥塞管理。可靠传输技术可以包括以下一项或多项:聚合以太网上的RDMA(RoCE)、传输控制协议(TCP)、用户数据报协议(UDP)、快速UDP互联网连接(QUIC)、高精度拥塞控制(HPCC)(例如,李等人的“HPCC:High Precision Congestion Control”SIGCOMM(2019))、或其它可靠传输协议。
桥接器和直接存储器访问(DMA)电路模块714可使用加载或存储存储器语义将数据复制到GPU计算718和/或存储器720或从GPU计算718和/或存储器720复制数据(经由互连716),并执行控制功能(诸如防护和转储清除)。结合来自存储器720的数据读取和对存储器720的写入,桥接器和DMA电路模块714可以执行直接存储器访问操作,并应用所配置的存储器访问许可和存储器地址转换表(例如,虚拟到物理地址转换)。
互连716可为GPU计算718提供接口。互连可以包括多管芯结构接口(MDFI)、CXL、PCIe或GPU内部的其它专有IO总线等。GPU可以被形成在与互连的硅管芯相同或不同的硅管芯上。互连716可以提供到GPU计算电路模块718和存储器720、到桥接器和DMA电路模块714的接口。
图8描绘了GPU的示例。GPU计算718和存储器720可以利用通信子系统700和/或PCIe交换机800以用于与一个或多个其它GPU通信。例如,GPU计算718利用PCIe交换机800来访问分立NIC(例如,NIC 610-0)以与一个或多个其它GPU通信。例如,GPU插槽的通信引脚可以向直接到GPU的分立NIC提供PCIe连接。图8示出了可以在通信子系统700和交换机800之间复用的通信引脚。交换机800可以经由通信引脚802提供到分立PCIe NIC的连接,导致分立NIC经由该连接成为整个平台拓扑的一部分。例如,在交换机800和通信引脚802符合PCIe的情况下,分立NIC可以是整个平台拓扑的一部分,使得分立NIC 610-0可以如至少关于图6所讨论的那样使用。图8描绘了PCIe接口的使用。然而,其它示例可以利用CXL、专有接口或其它IO/存储器总线及其对应的交换机。
图9描绘了类似于图3的示例控制平面软件堆栈。如在图3的堆栈中,控制操作和查询可以经由连接到控制平面(例如,网络512或530)的以太网NIC 901而被递送到控制平面代理。此外,外扩结构520的交换机904可以使用带内分组(诸如链路层发现协议(LLDP))来标识哪个GPU NIC 906被连接到给定的外扩交换机904端口。这种拓扑查询操作可以准许集中式SDN控制平面应用900标识外扩结构520的网络拓扑和连接性(例如,哪个主机名称和MAC地址被连接到给定的外扩结构交换机904端口)。SDN应用900可以经由直接发送到外扩交换机904的操作和/或经由控制平面代理发送到NIC驱动器908,使用网络拓扑和连接性来进一步执行遥测收集、路由确定、对网络中的变化做出反应等。
在不在具有集成NIC 906的GPU上执行完整的标准TCP/IP网络堆栈的情况下,可执行拓扑发现。相反,GPU和/或具有集成NIC 906的GPU可以执行LLDP协议,并执行和管理RDMA通信,并且CPU可以针对控制平面以太网NIC 901执行完整的TCP/IP堆栈(例如,IP转发、TCP协议、UDP协议等)。在一些示例中,对于集成NIC 906,GPU仅需要支持LLDP协议和RDMA通信。
图10A-图10D描绘了示例GPU计算组件。图10A示出了并行处理器1000。并行处理器1000可以是GPU、GPGPU或诸如此类,如本文所描述的。并行处理器1000的各种组件可使用一个或多个集成电路装置来实现,诸如可编程处理器、专用集成电路(ASIC)或现场可编程门阵列(FPGA)。
并行处理器1000包括并行处理单元1002。所述并行处理单元包括I/O单元1004,所述I/O单元能够实现与其它装置(包括并行处理单元1002的其它实例)的通信。I/O单元1004可直接连接到其它装置。例如,I/O单元1004经由使用中枢或交换机接口(诸如,存储器中枢)来与其它装置连接。存储器中枢105与I/O单元1004之间的连接形成通信链路。在并行处理单元1002内,I/O单元1004与主机接口1006和存储器交叉开关(memory crossbar)1016连接,其中,主机接口1006接收涉及执行处理操作的命令,并且存储器交叉开关1016接收涉及执行存储器操作的命令。
当主机接口1006经由I/O单元1004接收命令缓冲时,主机接口1006可以将用于执行那些命令的工作操作导引至前端1008。在一个实施例中,前端1008与调度器1010耦合,该调度器1010被配置成将命令或其它工作项目分布至处理集群阵列1012的处理集群。调度器1010配置在任务被分布至处理集群阵列1012的处理集群之前,处理集群阵列1012被适当地配置且处于有效状态。调度器1010可以经由在微控制器上执行的固件逻辑实现。微控制器实现的调度器1010可配置用于以粗粒度和细粒度执行复杂的调度和工作分布操作,从而实现在处理集群阵列1012上执行的线程的快速抢占和上下文切换。优选地,主机软件可以经由多个图像处理门铃中的一个为工作负荷证明以在处理集群阵列1012上调度。在其它示例中,轮询新的负荷或中断可用于标识或指示要执行的工作的可用性。随后工作负荷可以由调度器微控制器内的调度器1010逻辑跨处理集群阵列1012自动地分布。
处理集群阵列1012可以包括多达“N”个处理集群(例如,集群1014A、集群1014B、直到集群1014N)。处理集群阵列1012的至少一个集群1014A-1014N都可以执行大量的并发线程。调度器1010可以使用各种调度和/或工作分布算法来将工作分配给处理集群阵列1012的集群1014A-1014N,各种调度和/或工作分布算法取决于为某个类型的程序或计算而产生的工作负荷而变化。调度可以由调度器1010动态地处理,或者可以在配置用于由处理集群阵列1012执行的程序逻辑的编译期间部分地由编译器逻辑辅助。可选地,可以将处理集群阵列1012的不同集群1014A-1014N分配用于处理不同类型的程序,或用于执行不同类型的计算。
可以将处理集群阵列1012配置成执行各种类型的并行处理操作。例如,将处理集群阵列1012配置成执行通用并行计算操作。例如,处理集群阵列1012可以包括用于执行处理任务的逻辑,处理任务包括过滤视频和/或音频数据、执行建模操作(包括物理操作)、以及执行数据转换。
处理集群阵列1012被配置成执行并行的图形处理操作。在其中并行处理器1000被配置成执行图形处理操作的此类实施例中,处理集群阵列1012可以包括用于支持执行这样的图形处理操作的附加逻辑,包括但不限于用于执行纹理操作的纹理采样逻辑、以及曲面细分逻辑和其它顶点处理逻辑。另外,处理集群阵列1012可以被配置成执行与图形处理有关的着色器程序,诸如但不限于顶点着色器、曲面细分着色器、几何着色器和像素着色器。并行处理单元1002可以经由I/O单元1004传递来自系统存储器的数据以供处理。在处理期间,可以将所传递的数据在处理期间存储到芯片上存储器(例如,并行处理器存储器1022),然后将其写回到系统存储器。
在其中并行处理单元1002用于执行图形处理的实施例中,调度器1010可以被配置成将处理工作负荷划分成近似等规模的任务,以更好地使得能够将图形处理操作分布到处理集群阵列1012中的多个集群1014A至1014N。在这些实施例中的一些实施例中,处理集群阵列1012的多个部分可以被配置成执行不同类型的处理。例如,第一部分可被配置成执行顶点着色和拓扑生成,第二部分可被配置成执行曲面细分和几何着色,并且第三部分可被配置成执行像素着色或其它屏幕空间操作,以产生供显示的渲染图像。由集群1014A至1014N中的一个或多个产生的中间数据可存储在缓冲器中以允许在集群1014A至1014N之间发射所述中间数据以供进一步处理。
在操作期间,处理集群阵列1012可以经由调度器1010来接收待执行的处理任务,所述调度器从前端1008接收定义处理任务的命令。针对图形处理操作,处理任务可以包括待处理的数据(例如,表面(补丁)数据、图元数据(primitive data)、顶点数据和/或像素数据)的索引以及状态参数和定义要如何处理数据(例如,要执行什么程序)的命令。调度器1010可被配置成获取与任务相对应的索引,或可从前端1008接收这些索引。前端1008可以在发起由进入的命令缓冲(例如,分批缓冲、推动缓冲等)指定的工作负荷之前将处理集群阵列1012配置成有效状态。
并行处理单元1002的一个或多个实例中的至少一个可以与并行处理器存储器1022耦合。并行处理器存储器1022可以经由存储器交叉开关1016来访问,存储器交叉开关1016可以从处理集群阵列1012以及I/O单元1004接收存储器请求。存储器交叉开关1016可以经由存储器接口1018访问并行处理器存储器1022。存储器接口1018可以包括多个分区单元(例如,分区单元1020A、分区单元1020B、直到分区单元1020N),每一个分区单元都可以耦合至并行处理器存储器1022的一部分(例如,存储器单元)的。可以将分区单元1020A-1020N的数量配置成等于存储器单元的数量,使得第一分区单元1020A具有对应的第一存储器单元1024A,第二分区单元1020B具有对应的第二存储器单元1024B,并且第N分区单元1020N具有对应的第N存储器单元1024N。在其它实施例中,分区单元1020A-1020N的数量可以不等于存储器装置的数量。
存储器单元1024A至1024N可以包括各种类型的存储器装置,包括动态随机存取存储器(DRAM)或图形随机存取存储器(诸如,同步图形随机存取存储器(SGRAM),包括图形双数据速率(GDDR)存储器)。可选地,存储器单元1024A至1024N还可包括3D堆叠式存储器,包括但不限于高带宽存储器(HBM)。本领域技术人员将认识到,存储器单元1024A至1024N的具体的实现可以变化,并且可以选自各种常规设计中的一个。渲染目标(诸如,帧缓冲器或纹理贴图)可跨越存储器单元1024A至1024N存储,从而允许分区单元1020A至1020N并行写入渲染目标的多个部分以有效地使用并行处理器存储器1022的可用带宽。在一些实施例中,可排除并行处理器存储器1022的局部实例,以有利于结合局部高速缓存存储器来利用系统存储器的统一的存储器设计。
可选地,处理集群阵列1012的集群1014A-1014N中的一个或多个有能力处理将被写入并行处理器存储器1022内的存储器单元1024A-1024N中的一个或多个的数据。可以将存储器交叉开关1016配置成将集群1014A-1014N中的至少一个的输出传输到可以对输出执行附加的处理操作的分区单元1020A-1020N中的一个或多个或另一集群1014A-1014N。集群1014A-1014N中的至少一个可以通过存储器交叉开关1016与存储器接口1018通信,以便从各种外部存储器装置读取或向各种外部存储器装置写入。在具有存储器交叉开关1016的实施例之一中,存储器交叉开关1016具有到存储器接口1018的连接以与I/O单元1004通信,并具有到并行处理器存储器1022的本地实例的连接,从而使不同的处理集群1014A-1014N内的处理单元能够与系统存储器或不在并行处理单元1002本地的其它存储器通信。通常,存储器交叉开关1016可以例如能够使用虚拟通道以分离集群1014A-1014N与分区单元1020A-1020N之间的业务流。
虽然在并行处理器1000内示出了并行处理单元1002的单个实例,但是可以包括并行处理单元1002的其它数量的实例。例如,可以在单个插入式卡上提供并行处理单元1002的多个实例,或可以将多个插入式卡互连。例如,并行处理器1000可为附加装置,其可为图形卡,诸如包括一个或多个GPU、一个或多个存储器装置、和装置到装置或网络或结构接口的分立图形卡。并行处理单元1002的所述不同实例可以被配置成,即使这些不同实例具有不同数量的处理核、不同量的局部并行处理器存储器和/或其它配置差异而仍互操作。可选地,并行处理单元1002的一些实例可以相对于其它实例包括更高精度浮点单元。包括并行处理单元1002或并行处理器1000的一个或多个实例的系统可以以多种配置和形状因数来实现,包括但不限于台式、膝上型或手持式个人计算机、服务器、工作站、游戏控制台和/或嵌入式系统。协调器可以使用以下一项或多项来形成工作负荷性能的复合节点:解聚的处理器资源、高速缓存资源、存储器资源、存储资源、和联网资源。
图10B是分区单元1020的框图。分区单元1020可以是图10A的分区单元1020A至1020N中的一个的实例。如所示出,分区单元1020包括L2高速缓存1021、帧缓冲器接口1025和ROP 1026(光栅操作单元)。L2高速缓存1021是读/写高速缓存,其被配置成执行负荷并存储从存储器交叉开关1016和ROP 1026接收的操作。由L2高速缓存1021将读漏和紧急回写请求输出到帧缓冲器接口1025以供处理。也可以经由帧缓冲器接口1025将更新发送到帧缓冲器以供处理。在一个实施例中,帧缓冲器接口1025与并行处理器存储器中的存储器单元(诸如,图10A的存储器单元1024A至1024N(例如,在并行处理器存储器1022内))中的一个通过接口连接。分区单元1020还可以附加地或备选地经由存储器控制器(未示出)与并行处理器存储器中的存储器单元之一通过接口连接。
在图形应用中,ROP 1026是执行诸如模板(stencil)、z测试、混合等等的光栅操作的处理单元。随后ROP 1026输出存储在图形存储器中的处理过的图形数据。在一些实施例中,ROP 1026包括编解码器1027或与其耦合,编解码器1027包括压缩逻辑,该压缩逻辑用于压缩写入到存储器或L2高速缓存1021的深度或颜色数据,并且解压缩从存储器或L2高速缓存1021读取的深度或颜色数据。压缩逻辑可以是利用多种压缩算法的一种或多种的无损压缩逻辑。由编解码器1027执行的压缩的类型可以基于待压缩的数据的统计特性而变化。例如,在一个实施例中,增量颜色压缩在逐片(per-tile)基础上对深度和颜色数据来执行。在一个实施例中,编解码器1027包括压缩和解压缩逻辑,其可以压缩和解压缩与机器学习操作相关联的计算数据。编解码器1027可以例如压缩稀疏矩阵数据以用于稀疏机器学习操作。编解码器1027还可以压缩以稀疏矩阵格式(例如,坐标列表编码(COO)、压缩稀疏行(CSR)、压缩稀疏列(CSC)等)编码的稀疏矩阵数据来生成经压缩和编码的稀疏矩阵数据。经压缩和编码的稀疏矩阵数据可在被处理元件处理之前被解压缩和/或解码,或者处理元件可被配置成消耗经压缩、经编码、或经压缩和编码的数据以用于处理。
ROP 1026可被包括在至少一个处理集群(例如,图10A的集群1014A至1014N)内而非包括在分区单元1020内。在这样的实施例中,经由存储器交叉开关1016来发射针对像素数据的读和写请求而非像素片段数据。已处理的图形数据可在显示装置(诸如,一个或多个显示装置中的一个)上显示、被路由以供由(一个或多个)处理器进一步处理、或被路由以供由并行处理器1000内的处理实体中的一个进一步处理。
图10C是并行处理单元内的处理集群1014的框图。例如,处理集群是图10A的处理集群1014A至1014N中的一个的实例。处理集群1014可以被配置成并行执行许多线程,其中,术语“线程”是指在一组特定的输入数据上执行的特定程序的实例。可选地,在不提供多个独立的指令单元的情况下,可以使用单指令多数据(SIMD)指令下发技术以支持对大量线程的并行执行。备选地,在使用共同指令单元的情况下,可以使用单指令多线程(SIMT)技术以支持对大量一般为同步的线程的并行执行,所述共同指令单元被配置成将指令下发到处理集群中的至少一个内的一组处理引擎。不同于SIMD执行制度(其中,所有处理引擎通常执行相同的指令),SIMT执行允许不同的线程更容易沿着发散式执行路径通过给定的线程程序。本领域技术人员将理解,SIMD处理制度表示SIMT处理制度的功能性子集。
可以经由管线管理器1032来控制处理集群1014的操作,所述管线管理器将处理任务分布到SIMT并行处理器。管线管理器1032从图10A的调度器1010接收指令,并且经由图形多处理器1034和/或纹理单元1036来管理对那些指令的执行。所示出的图形多处理器1034是SIMT并行处理器的示例性实例。然而,具有不同架构的各种类型的SIMT并行处理器可被包括在处理集群1014内。图形多处理器1034的一个或多个实例可以被包括在处理集群1014内。图形多处理器1034可以处理数据,并且数据交叉开关(data crossbar)1040可以用于将已处理的数据分布到多个可能的目的地(包括其它着色器单元)中的一个。管线管理器1032可以通过指定待经由数据交叉开关1040分布的已处理的数据的目的地来促进已处理的数据的分布。
处理集群1014内的至少一个图形微处理器1034都可以包括完全相同的一组功能执行逻辑(例如,算术逻辑单元、加载-存储单元等)。能以管线方式配置功能执行单元,在管线方式中,在先前的指令完成之前,可发布新指令。功能执行逻辑支持多种多样的操作,包括整数和浮点算术、比较操作、布尔操作、位移动和各种代数函数的计算。可以利用同一功能性单元硬件来执行不同的操作,并且可以存在功能单元的其它组合。
传输至处理集群1014的指令构成线程。跨一组并行处理引擎而执行的一组线程是线程组。线程组对不同的输入数据执行同一程序。可以将线程组内的至少一个线程指派给图形微处理器1034内的不同的处理引擎。线程组可包括比图形微处理器1034内的处理引擎的数量少的线程。当线程组包括比处理引擎的数量少的线程时,处理引擎中的一个或多个在线程组正在被处理的周期期间可以是空闲的。线程组也可包括比图形微处理器1034内的处理引擎的数量多的线程。当线程组包括比图形微处理器1034内的处理引擎的数量多的线程时,处理可以在连续的时钟周期上执行。可选地,可在图形微处理器1034上并发地执行多个线程组。
图形多处理器1034可包括内部高速缓存存储器以执行加载和存储操作。可选地,图形多处理器1034可以放弃内部高速缓存,并且使用处理集群1014内的高速缓存存储器(例如,1级(L1)高速缓存1048)。至少一个图形多处理器1034还有权访问在所有处理集群1014当中共享并且可用于在线程之间转移数据的分区单元(例如,图10A的分区单元1020A至1020N)内的2级(L2)高速缓存。图形多处理器1034还可访问芯片外全局存储器,所述芯片外全局存储器可以包括局部并行处理器存储器和/或系统存储器中的一个或多个。可将在并行处理单元1002外部的存储器用作全局存储器。多个实施例(其中处理集群1014包括图形多处理器1034的多个实例)可以共享共同的指令和数据,这些指令和数据可存储在L1高速缓存1048中。
至少一个处理集群1014可包括MMU 1045(存储器管理单元),所述MMU被配置成将虚拟地址映射到物理地址中。在其它实施例中,MMU 1045的一个或多个实例可驻留在图10A的存储器接口1018内。MMU 1045包括:一组页表条目(PTE),用于将片(tile)的虚拟地址映射到物理地址;以及可选地高速缓存行索引。MMU 1045可包括可驻留在图形多处理器1034或处理集群1014的L1高速缓存1048内的地址转换后备缓冲器(TLB)或高速缓存。物理地址经处理以分布表面数据存取局部性,从而允许在分区单元当中实现有效的请求交错。高速缓存行索引可用于确定针对高速缓存行的请求是命中还是未命中。
在图形和计算应用中,处理集群1014可被配置成使得至少一个图形多处理器1034耦合至纹理单元1036以用于执行纹理映射操作,例如确定纹理样本位置、读取纹理数据和对纹理数据滤波。根据需要,从内部纹理L1高速缓存(未示出)或在一些实施例中从图形多处理器1034内的L1高速缓存读取纹理数据,并且从L2高速缓存、局部并行处理器存储器或系统存储器获取所述纹理数据。至少一个图形多处理器1034将已处理的任务输出到数据交叉开关1040以将已处理的任务提供给另一个处理集群1014,以供进一步处理或以经由存储器交叉开关1016将已处理的任务存储在L2高速缓存、局部并行处理器存储器或系统存储器中。preROP 1042(例如,预光栅操作单元)被配置成从图形多处理器1034接收数据、将数据导引到ROP单元,这些ROP单元可与如本文描述的分区单元(例如,图10A的分区单元1020A至1020N)位于一起。preROP 1042单元可以执行针对颜色混合的优化、组织像素颜色数据和执行地址转换。
将认识到的是,本文描述的核架构是说明性的,并且变型和修改是有可能的。其它数量的处理单元(例如,图形多处理器1034、纹理单元1036、preROP 1042等)可被包括在处理集群1014内。此外,虽然仅示出了一个处理集群1014,但是如本文描述的并行处理单元可包括处理集群1014的其它数量的实例。可选地,至少一个处理集群1014可以被配置成使用单独的且截然不同的处理单元、L1高速缓存、L2高速缓存等独立于其它处理集群1014来操作。
图10D示出了图形多处理器1034的示例,其中,图形多处理器1034与处理集群1014的管线管理器1032耦合。图形多处理器1034具有执行流失线,包括但不限于:指令高速缓存1052、指令单元1054、地址映射单元1056、寄存器堆1058、一个或多个通用图形处理单元(GPGPU)核1062和一个或多个加载/存储单元1066。GPGPU核1062和加载/存储单元1066经由存储器和高速缓存互连1068与高速缓存存储器1072和共享存储器1070耦合。图形多处理器1034可以另外包括张量和/或光线追踪核1063,其包括用于加速矩阵和/或光线追踪操作的硬件逻辑。
指令高速缓存1052可从管线管理器1032接收待执行的指令流。这些指令被缓存在指令高速缓存1052中,并且由指令单元1054分派以供执行。指令单元1054可以将指令分派为线程组(例如,线程束),其中线程组的至少一个线程被指派给GPGPU核1062内的一不同执行单元。指令可以通过指定统一地址空间内的地址来访问局部、共享或全局地址空间。地址映射单元1056可以用于将统一地址空间中的地址转换成可以由加载/存储单元1066访问的截然不同的存储器地址。
寄存器堆1058为图形多处理器1034的功能单元提供一组寄存器。寄存器堆1058为连接到图形多处理器1034的功能单元(例如,GPGPU核1062、加载/存储单元1066)的数据路径的操作数提供临时存储。可以在这些功能单元中的至少一个之间划分寄存器堆1058,使得至少一个功能单元分配有寄存器堆1058的专用部分。例如,可以在由图形多处理器1034执行的不同线程束之间划分寄存器堆1058。
GPGPU核1062可以各自包括浮点单元(FPU)和/或整数算术逻辑单元(ALU),这些FPU和整数ALU用于执行图形多处理器1034的指令。在一些实现中,GPGPU核1062可以包括硬件逻辑,该硬件逻辑可以以其它方式驻留在张量和/或光线追踪核1063内。GPGPU核1062可以在架构上是类似的,或可以在架构上是不同的。例如且在一个实施例中,GPGPU核1062的第一部分包括单精度FPU和整数ALU,而GPGPU核的第二部分包括双精度FPU。可选地,FPU可以针对浮点算术实现IEEE 754-2008标准,或可以实现可变精度浮点算术。图形多处理器1034可以另外包括一个或多个固定功能或专用功能单元以执行具体的功能(诸如,复制矩形或像素混合操作)。GPGPU核中的一个或多个也可以包括固定或专用功能逻辑。
GPGPU核1062可包括能够对多组数据执行单条指令的SIMD逻辑。可选地,GPGPU核1062可以物理地执行SIMD4、SIMD8和SIMD16指令,并且逻辑地执行SIMD1、SIMD2和SIMD32指令。用于GPGPU核的SIMD指令可以由着色器编译器在编译时生成,或者可以在执行为单程序多数据(SPMD)或SIMT架构编写和编译的程序时自动生成。为SIMT执行模型而配置的程序的多个线程可以经由单条SIMD指令而执行。例如,在一个实施例中,执行相同或类似操作的八个SIMT线程可以经由单个SIMD8逻辑单元并行地执行。
存储器和高速缓存互连1068是互连网络,该互连网络将图形微处理器1034的功能单元中的至少一个连接到寄存器堆1058,并连接到共享存储器1070。例如,存储器和高速缓存互连1068是交叉开关互连,该交叉开关互连允许加载/存储单元1066在共享存储器1070与寄存器堆1058之间实现加载和存储操作。寄存器堆1058能以与GPGPU核1062相同的频率操作,由此在GPGPU核1062与寄存器堆1058之间的数据传输是非常低等待时间的。共享存储器1070可以用来启用在图形微处理器1034内的功能单元上执行的线程之间的通信。高速缓存存储器1072可以用作例如数据高速缓存,以便对功能单元与纹理单元1036之间传递的纹理数据进行高速缓存。共享存储器1070也可以用作程序管理的高速缓存。共享存储器1070和高速缓存存储器1072可以与数据交叉开关1040耦合,以能够实现与处理集群的其它组件的通信。在GPGPU核1062上执行的线程能以程序方式还将除了存储在高速缓存存储器1072内的经自动高速缓存的数据之外的数据存储在共享存储器内。
图11描绘了示例网络接口装置。如本文所述,网络接口中的各种硬件和软件资源可以位于GPU集成的NIC、网络接口装置或智能NIC中。在一些示例中,网络接口1100可以被实现为网络接口控制器、网络接口卡、主机结构接口(HFI)、或者主机总线适配器(HBA),并且此类示例可以是可互换的。网络接口1100可以使用总线、PCIe、CXL或DDR耦合到一个或更多个服务器。网络接口1100可以被实施为包括一个或更多个处理器的片上系统(SoC)的一部分,或者被包括在也包含一个或更多个处理器的多芯片封装上。
网络装置1100的一些示例是基础设施处理单元(IPU)或数据处理单元(DPU)的一部分,或者被IPU或DPU利用。xPU可以至少指代IPU、DPU、GPU、GPGPU、或者其它处理单元(例如,加速器装置)。IPU或DPU可以包括具有一个或更多个可编程管线或固定功能处理器的网络接口,以执行可能本来由CPU执行的操作的卸载。IPU或DPU可以包括一个或更多个存储器装置。在一些示例中,IPU或DPU可以执行虚拟交换机操作,管理存储事务(例如,压缩、加密、虚拟化),以及管理在其它IPU、DPU、服务器或装置上执行的操作。
网络接口1100可以包括收发器1102、处理器1104、传送队列1106、接收队列1108、存储器1110和总线接口1112以及DMA引擎1152。收发器1102可以能够按照诸如IEEE 802.3中所描述的以太网之类的适用协议接收和传送分组,然而也可使用其它协议。收发器1102可以经由网络媒体(未描绘)从网络接收分组和向网络传送分组。收发器1102可以包括PHY电路模块1114和媒体接入控制(MAC)电路模块1116。PHY电路模块1114可以包括编码和解码电路模块(未示出),以根据适用的物理层规范或标准对数据分组编码和解码。MAC电路模块1116可以被配置成对所接收分组执行MAC地址过滤,通过验证数据完整性来处理所接收分组的MAC信头,移除前导码和补码,并且提供分组内容以由更高层处理。MAC电路模块1116可以被配置成将要传送的数据组装成分组,分组包括目的地和源地址连同网络控制信息和检错散列值。
处理器1104可以是以下项的组合:处理器、核心、图形处理单元(GPU)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、或者允许对网络接口1100编程的其它可编程硬件装置。例如,“智能网络接口”或SmartNIC可以使用处理器1104在网络接口中提供分组处理能力。
处理器1104可以包括可通过以下一项或多项来编程的可编程处理管线:协议无关分组处理器(P4)、云中开放联网软件(SONiC)、网络编程语言(NPL)、/>DOCATM、基础设施程序员开发工具包(IPDK)、或x86可兼容可执行二进制文件或其它可执行二进制文件。可编程处理管线可以包括一个或更多个匹配-动作单元(MAU),MAU可以使用一个或多个粒度列表来调度分组以用于传输,如本文所述的。处理器、FPGA、其它专用处理器、控制器、装置和/或电路可以用于分组处理或分组修改。三元内容可寻址存储器(TCAM)可以用于对分组信头内容的并行匹配-动作或查找操作。
分组分配器1124可以使用接收侧缩放(RSS)来提供所接收分组的分派,以由多个CPU或核心处理。当分组分配器1124使用RSS时,分组分配器1124可以基于所接收分组的内容计算散列或做出另一确定,以确定哪个CPU或核心将会处理分组。
中断合并1122可以执行中断节制,由此,网络接口中断合并1122在向处理(一个或多个)所接收分组的主机系统生成中断之前,等待多个分组到达,或者等待超时到期。接收段合并(RSC)可以由网络接口1100执行,由此,若干输入分组的若干部分被组合成一分组的若干段。网络接口1100将这个合并的分组提供给应用。
直接存储器存取(DMA)引擎1152可以将分组信头、分组净荷和/或描述符直接从主机存储器复制到网络接口,或者反之亦然,而不是将分组复制到主机处的中间缓冲器,且然后从中间缓冲器到目的地缓冲器使用另一复制操作。
存储器1110可以是某种类型的易失性或非易失性存储器装置,并且可以存储任何队列或用于对网络接口1100编程的指令。传送队列1106可以包括用于通过网络接口传输的数据或对数据的引用。接收队列1108可以包括由网络接口从网络接收到的数据或对数据的引用。描述符队列1120可以包括引用传送队列1106或接收队列1108中的数据或分组的描述符。总线接口1112可以提供与主机装置(未描绘)的接口。例如,总线接口1112可以与PCI、PCI Express、PCI-x、串行ATA和/或USB或其专有变体兼容或至少部分基于它们(然而也可使用其它互连标准)。
图12描绘了示例过程。在1202,具有至少一个图形处理单元(其具有集成网络接口控制器)的系统可以被连接到至少三个网络。所述至少两个网络中的第一网络可以包括GPU到GPU连接,其用于将系统的GPU连接到系统中的其它GPU。所述至少两个网络中的第二网络可以包括外扩结构。外扩结构可用于提供系统的CPU、GPU或其它装置(例如,加速器)与一个或多个其它系统的CPU、GPU或其它装置(例如,加速器)之间的通信。经由第一和/或第二网络的通信可以利用可靠性协议。
在1204,具有至少一个图形处理单元(其具有集成网络接口控制器)的系统的网络接口装置可被连接至第二交换网络。例如,网络接口装置可以包括分立网络接口装置,其被通信地耦合到至少一个GPU,并且经由第二交换网络来提供系统的CPU、GPU或其它装置(例如,加速器)与一个或多个其它系统的CPU、GPU或其它装置(例如,加速器)之间的通信。
在1206,具有至少一个图形处理单元(其具有集成网络接口控制器)的系统的第二网络接口装置可被连接至第三网络。第三网络可以包括存储和控制网络。存储和控制网络可以提供用于配置CPU、GPU、装置(例如加速器)、网络接口装置和/或一个或多个集成网络接口控制器的操作的通信。操作可以包括存储协议或安全性特征(例如,VLAN、VxLAN、分区、加密等)。例如,存储和控制网络可以提供CPU、GPU、装置(例如,加速器)、网络接口装置和/或一个或多个集成网络接口控制器以及一个或多个其它系统节点的CPU、GPU、装置(例如,加速器)、网络接口装置和/或一个或多个集成网络接口控制器之间的通信。
图13描绘了示例计算系统。如本文所述,系统1300的组件(例如,处理器1310、加速器1342、网络接口1350、存储器子系统1320等等)可用于系统节点中。系统1300包括处理器1310,处理器1310为系统1300提供处理、操作管理、以及指令的执行。处理器1310可以包括任何类型的微处理器、中央处理单元(CPU)、图形处理单元(GPU)、处理核心、或者为系统1300提供处理的其它处理硬件、或者处理器的组合。处理器1310控制系统1300的整体操作,并且可以是或者可以包括一个或更多个可编程通用或专用微处理器、数字信号处理器(DSP)、可编程控制器、专用集成电路(ASIC)、可编程逻辑器件(PLD)等、或者此类装置的组合。
在一个示例中,系统1300包括耦合到处理器1310的接口1312,所述接口可以表示用于需要更高带宽连接的系统组件(诸如存储器子系统1320或图形接口组件1340或加速器1342)的更高速接口或高吞吐量接口。接口1312表示可以是独立组件或者被集成到处理器管芯上的接口电路。若存在的话,图形接口1340与图形组件对接,以用于向系统1300的用户提供视觉显示。在一个示例中,图形接口1340可以驱动向用户提供输出的高清晰度(HD)显示器。高清晰度可以指具有近似100PPI(每英寸的像素数)或更大的像素密度的显示器,并且可以包括诸如全HD(例如,1080p)、视网膜显示器、4K(超高清或UHD)或其它格式之类的格式。在一个示例中,显示器可以包括触摸屏显示器。在一个示例中,图形接口1340基于存储在存储器1330中的数据或者基于处理器1310执行的操作或者基于这二者来生成显示。在一个示例中,图形接口1340基于存储在存储器1330中的数据或者基于处理器1310执行的操作或者基于这二者来生成显示。
加速器1342可以是处理器1310可以访问或使用的固定功能或可编程卸载引擎。例如,加速器1342当中的某一加速器可以提供:压缩(DC)能力;诸如公钥加密(PKE)、密码术、散列/认证能力、解密之类的密码服务;或者其它能力或服务。在一些实施例中,附加地或备选地,加速器1342当中的某一加速器提供如本文中所描述的字段选择控制器能力。在一些情况下,加速器1342可以被集成到CPU插槽(例如,到包括CPU并且提供与CPU的电气接口的母板或电路板的连接器)中。例如,加速器1342可以包括单核心或多核心处理器、图形处理单元、逻辑执行单元、单级或多级高速缓存、可用于独立执行程序或线程的功能单元、专用集成电路(ASIC)、神经网络处理器(NNP)、可编程控制逻辑、以及诸如现场可编程门阵列(FPGA)或可编程逻辑器件(PLD)之类的可编程处理元件。加速器1342可以提供多个神经网络、CPU、处理器核心、通用图形处理单元,或者可以使图形处理单元可供人工智能(AI)或机器学习(ML)模型使用。例如,AI模型可以使用或者包括以下的一项或更多项:强化学习方案、Q-学习方案、深度-Q学习、或者异步优势行动者-评论家(A3C)、组合神经网络、循环组合神经网络、或者其它AI或ML模型。可以使多个神经网络、处理器核心或图形处理单元可供AI或ML模型使用。
存储器子系统1320表示系统1300的主存储器,并且为要由处理器1310执行的代码或要在执行例程期间使用的数据值提供存储。存储器子系统1320可以包括一个或更多个存储器装置1330,诸如只读存储器(ROM)、闪速存储器、一种或多种随机存取存储器(RAM)(诸如DRAM)、或者其它存储器装置、或者这类装置的组合。除其它事情之外,存储器1330还存储和托管操作系统(OS)1332,从而为系统1300中指令的执行提供软件平台。此外,应用1334可以在来自存储器1330的OS 1332的软件平台上执行。应用1334表示具有它们自己的操作逻辑以完成一个或更多个功能的执行的程序。进程1336表示向OS1332或者一个或更多个应用1334或者组合提供辅助功能的代理或例程。OS1332、应用1334和进程1336提供软件逻辑来为系统1300提供功能。在一个示例中,存储器子系统1320包括存储器控制器1322,所述存储器控制器1322是用来生成命令并且向存储器1330发出命令的存储器控制器。将会理解,存储器控制器1322可以是处理器1310的物理部分或接口1312的物理部分。例如,存储器控制器1322可以是集成到具有处理器1310的电路上的集成存储器控制器。
虽然没有具体示出,但是将会理解,系统1300可以包括装置之间的一个或更多个总线或总线系统,诸如存储器总线、图形总线、接口总线、或者其它的总线。总线或其它信号线可以将组件在通信上或者在电气上耦合在一起,或者即在通信上又在电气上耦合这些组件。总线可以包括物理通信线、点对点连接、桥、适配器、控制器、或者其它电路模块或组合。总线可以包括例如以下的一项或更多项:系统总线、外围组件互连(PCI)总线、超传输或行业标准架构(ISA)总线、小型计算机系统接口(SCSI)总线、通用串行总线(USB)、或者电气和电子工程师协会(IEEE)标准1394总线(火线)。
在一个示例中,系统1300包括接口1314,接口1314可以被耦合到接口1312。在一个示例中,接口1314表示接口电路,该接口电路可以包括独立组件和集成电路模块。在一个示例中,多个用户接口组件或外围组件或这二者耦合到接口1314。网络接口1350向系统1300提供通过一个或更多个网络与远程装置(例如,服务器或其它计算装置)通信的能力。网络接口1350可以包括以太网适配器、无线互连组件、蜂窝网络互连组件、USB(通用串行总线)、或者其它基于有线或无线标准的或专有的接口。网络接口1350可以将数据传送到相同数据中心或机架中的装置或者远程装置,这可以包括发送存储在存储器中的数据。
网络接口1350可包括以下一项或多项:网络接口控制器(NIC)、启用远程直接存储器访问(RDMA)的NIC、智能NIC、路由器、交换机或网络附加设备。网络接口1350的一些示例是基础设施处理单元(IPU)或数据处理单元(DPU)的一部分,或者由IPU或DPU利用。xPU至少可以指代IPU、DPU、GPU、GPGPU或其它处理单元(例如,加速器装置)。IPU或DPU可以包括具有一个或多个可编程管线或固定功能处理器的网络接口,以执行本来可以由CPU执行的操作的卸载。
在一个示例中,系统1300包括一个或更多个输入/输出(I/O)接口1360。I/O接口1360可以包括一个或更多个接口组件,用户通过一个或更多个接口组件与系统1300交互(例如,音频的、字母数字的、触觉的/触摸、或者其它的交流)。外围设备接口1370可以包括上面没有具体提到的任何硬件接口。外围设备一般是指从属地连接到系统1300的装置。从属连接是如下的一种:其中系统1300提供软件平台或硬件平台或这二者(操作在其上执行),并且用户与其交互。
在一个示例中,系统1300包括以非易失性方式存储数据的存储装置子系统1380。在一个示例中,在某些系统实现中,存储装置1380的至少某些组件可以与存储器子系统1320的组件重叠。存储装置子系统1380包括(一个或多个)存储装置1384,存储装置1384可以是或者可以包括用于以非易失性方式存储大量数据的任何常规介质,诸如一个或更多个基于磁、固态或光的盘或者组合。存储装置1384将代码或指令以及数据1386保持在持久状态(例如,尽管中断给系统1300的电力,但是值被保留)。尽管存储器1330通常是向处理器1310提供指令的执行或操作存储器,存储装置1384仍可以一般地视为“存储器”。存储装置1384是非易失性的,然而存储器1330可以包括易失性存储器(例如,如果给系统1300的电力被中断,则数据的值或状态是不确定的)。在一个示例中,存储装置子系统1380包括控制器1382以与存储装置1384对接。在一个示例中,控制器1382是接口1314或处理器1310的物理部分,或者可以包括处理器1310和接口1314这二者中的电路或逻辑。
易失性存储器是当给装置的电力被中断时其状态(以及因此其中存储的数据)不确定的存储器。动态易失性存储器采用刷新装置中存储的数据以维持状态。动态易失性存储器的一个示例包括DRAM(动态随机存取存储器)、或者诸如同步DRAM(SDRAM)之类的一些变体。易失性存储器的示例包括高速缓存。如本文中所描述的存储器子系统可兼容许多存储器技术,诸如符合来自JEDEC(联合电子装置工程委员会)的规范的那些技术、或者其它存储器技术、或者存储器技术的组合、以及基于这类规范的派生或扩展的技术。
非易失性存储器(NVM)装置是即使中断给装置的电力、其状态也确定的存储器。在一个实施例中,NVM装置可以包括块可寻址存储器装置,诸如NAND技术,或者更具体地说,多阈值级NAND闪速存储器(例如,单级单元(“SLC”)、多级单元(“MLC”)、四级单元(“QLC”)、三级单元(“TLC”)、或者某种其它的NAND)。NVM装置还可以包括字节可寻址就地写入三维交叉点存储器装置、或者其它字节可寻址就地写入NVM装置(也称为持久存储器),诸如单级或多级相变存储器(PCM)或者具有开关的相变存储器(PCMS)、OptaneTM存储器、使用硫属化物相变材料(例如,硫属化物玻璃)的NVM装置、或者以上的一项或更多项的组合、或者其它存储器。
电源(未描绘)向系统1300的组件提供电力。更具体地说,电源通常对接系统1300中的一个或多个电力供应以向系统1300的组件提供电力。在一个示例中,电力供应包括插入墙壁电源插座中的AC到DC(交流到直流)适配器。这类AC电力可以是可再生能源(例如,太阳能)电源。在一个示例中,电源包括DC电源,诸如外部AC到DC转换器。在一个示例中,电源或电力供应包括无线充电硬件以经由靠近充电场来充电。在一个示例中,电源可以包括内部电池、交流电供应、基于运动的电力供应、太阳能电力供应、或者燃料电池源。
在示例中,可以使用处理器、存储器、存储装置、网络接口和其它组件的互连计算橇板来实现系统1300。可以使用高速互连,诸如:以太网(IEEE 802.3)、远程直接存储器存取(RDMA)、InfiniBand、互联网广域RDMA协议(iWARP)、传输控制协议(TCP)、用户数据报协议(UDP)、快速UDP互联网连接(QUIC)、基于汇聚以太网的RDMA(RoCE)、快速外围组件互连(PCIe)、Intel快速路径互连(QPI)、超路径互连(UPI)、Intel片上系统结构(IOSF)、Omni-Path、计算快速链路(CXL)、快速通用芯粒互连(UCIe)、超传输、高速结构、NVLink、高级微控制器总线架构(AMBA)互连、OpenCAPI、Gen-Z、无限结构(IF)、用于加速器的高速缓存相干互连(CCIX)、3GPP长期演进(LTE)(4G)、3GPP 5G、以及这些项的变体。可以使用诸如基于结构的NVMe(NVMe-oF)或NVMe之类的协议将数据复制或存储到虚拟化存储节点,或者存取数据。
装置之间的通信可使用提供管芯到管芯通信、芯片到芯片通信、电路板到电路板通信、和/或封装到封装通信的网络进行。
本文中的实施例可被实现于各种类型的计算、智能电话、平板、个人计算机和联网设备中,诸如交换机、路由器、机架和刀片服务器(诸如数据中心和/或服务器场环境中采用的那些)。在数据中心和服务器场中使用的服务器包括诸如基于机架的服务器或刀片服务器之类的阵列化服务器配置。这些服务器经由各种网络规定而在通信上互连,诸如将服务器集合划分成局域网(LAN),在LAN之间具有适当的交换和路由选择设施以形成专有内联网。例如,云托管设施通常可采用具有众多服务器的大型数据中心。刀片包括被配置成执行服务器类型功能的分开的计算平台,即,“卡上的服务器”。因此,每个刀片包括常规服务器所共有的组件,包括提供内部布线(例如总线)以用于耦合适当的集成电路(IC)和安装到板上的其它组件的主印刷电路板(主板)。
在一些示例中,本文中所描述的GPU和网络接口装置的各种系统可以结合基站(例如,3G、4G、5G等)、宏基站(例如,5G网络)、微微站(例如,IEEE 802.11兼容接入点)、纳米站(例如,用于点到多点(PtMP)应用)、微数据中心、内部数据中心、外部数据中心、边缘网络元件、边缘网络计算元件、多址边缘计算(MEC)、云游戏服务器、雾网络元件和/或混合数据中心(例如,使用虚拟化、云和软件定义的联网来跨物理数据中心和分布式多云环境输送应用工作负载的数据中心)来使用。
图14描绘了示例网络接口装置。网络接口装置1400使用处理器1406、处理器1410、加速器1420、存储器池1430或服务器1440-0至1440-N中的一个或多个来管理一个或多个进程的性能,其中N是1或更大的整数。在一些示例中,网络接口装置1400的处理器1406可以执行一个或多个进程、应用、VM、容器、微服务等,其请求由以下一个或多个来执行工作负荷:处理器1410、加速器1420、存储器池1430和/或服务器1440-0至1440-N。网络接口装置1400可以利用网络接口1402或一个或多个装置接口以与处理器1410、加速器1420、存储器池143和/或服务器1440-0至1440-N通信。网络接口装置1400可以利用可编程管线1404来处理要从网络接口1402传输的分组或从网络接口1402接收的分组。
可编程管线1404和/或处理器1406可使用基于以下一项或多项的语言来配置或编程:P4、云中开放联网软件(SONiC)、C、Python、Broadcom网络编程语言(NPL)、DOCATM、基础设施程序员开发工具包(IPDK)、或x86可兼容可执行二进制文件或其它可执行二进制文件。
可使用硬件元件、软件元件或二者的组合来实现各种示例。在一些示例中,硬件元件可包括装置、组件、处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等等)、集成电路、ASIC、PLD、DSP、FPGA、存储器单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等等。在一些示例中,软件元件可包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任何组合。确定是否使用硬件元件和/或软件元件来实现示例可根据如对于给定实现所期望的任何数量的因素而变化,诸如期望的计算速率、功率级别、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度以及其它设计或性能约束。处理器可以是硬件状态机、数字控制逻辑、中央处理单元、或者任何硬件、固件和/或软件元件的一个或更多个组合。
可使用制品或至少一个计算机可读介质来实现一些示例,或者一些示例可被实现为制品或至少一个计算机可读介质。计算机可读介质可包括用来存储逻辑的非暂态存储介质。在一些示例中,非暂态存储介质可包括能够存储电子数据的一种或更多种类型的计算机可读存储介质,包括易失性存储器或非易失性存储器、可移除或不可移除存储器、可擦除或不可擦除存储器、可写或可重写存储器等等。在一些示例中,逻辑可包括各种软件元件,诸如软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任何组合。
根据一些示例,计算机可读介质可包括用来存储或维护指令的非暂态存储介质,所述指令在被机器、计算装置或系统执行时,致使机器、计算装置或系统执行根据所描述示例的方法和/或操作。指令可包括任何合适类型的代码,诸如源代码、编译代码、解译代码、可执行代码、静态代码、动态代码等等。可根据预定义的计算机语言、方式或语法来实现指令,以用于命令机器、计算装置或系统执行某个功能。可使用任何合适的高级、低级、面向对象、可视、编译和/或解译编程语言来实现指令。
可通过存储在至少一个机器可读介质上的表示性指令来实现至少一个示例的一个或更多个方面,表示性指令表示处理器内的各种逻辑,其在被机器、计算装置或系统读取时,致使机器、计算装置或系统制造逻辑以执行本文中所描述的技术。称为“IP核心”的这类表示可被存储在有形的机器可读介质上,并且被提供给各种客户或制造设施以加载到实际制作逻辑或处理器的制造机器中。
短语“一个示例”或“示例”的出现不一定都是指同一示例或实施例。可以将本文中所描述的任何方面与本文中所描述的任何其它方面或类似方面组合,而不管所述方面是否是关于同一附图或元件来描述的。附图中描绘的块功能的划分、省略或包含并不暗示用于实现这些功能的硬件组件、电路、软件和/或元件将必然被划分、省略或包括在实施例中。
可使用表述“耦合”和“连接”连同其派生词来描述一些示例。这些术语不一定意在作为彼此的同义词。例如,使用术语“连接”和/或“耦合”的描述可指示两个或更多个元件彼此直接物理或电接触。然而,术语“耦合”也可能意味着两个或更多个元件彼此并不直接接触,但是仍然彼此协作或交互。
在本文中,术语“第一”、“第二”等不表示任何顺序、数量或重要性,而是用来将一个元件与另一元件区分开。在本文中,术语“一”和“某一”不表示数量的限制,而是表示存在至少一个所提及的项目。本文中关于信号所使用的术语“断言”表示信号的某一状态,其中信号是有效的,并且其可以通过将或者逻辑0或者逻辑1的任何逻辑电平施加于信号来实现。术语“跟随”或“在……之后”可以指紧随某一或某些其它事件或者跟随在某一或某些其它事件之后。根据备选实施例,也可执行步骤的其它序列。此外,取决于具体应用,可添加或去除附加的步骤。可以使用变化的任何组合,并且受益于本公开的本领域普通技术人员将会理解其许多的变化、修改和备选实施例。
除非另外特意说明,否则,诸如短语“X、Y或Z中的至少一个”之类的析取语言在如一般所用的上下文内理解成表示项目、术语等可以是X或Y或Z、或者其任何组合(例如,X、Y和/或Z)。因此,这类析取语言一般并不意在、并且不应当、暗示某些实施例要求X中的至少一个、Y中的至少一个、或者Z中的至少一个每个都存在。此外,除非另外特意说明,否则,诸如短语“X、Y和Z中的至少一个”之类的关联语言也应当理解为意指X、Y、Z或其任何组合,包括“X、Y和/或Z”。
下面提供本文中所公开的装置、系统和方法的说明性示例。装置、系统和方法的实施例可包括下面描述的示例中的任何一个或更多个示例以及其任何组合。
示例1包括一个或多个示例,并且包括一种设备,所述设备包括:具有至少一个集成通信系统的第一图形处理单元(GPU),其中所述至少一个集成通信系统将应用可靠性协议来与关联于第二GPU的第二至少一个集成通信系统通信,以将数据从第一存储器区域复制到第二存储器区域,并且其中所述第一存储器区域与所述第一GPU相关联,且所述第二存储器区域与所述第二GPU相关联。
示例2包括一个或多个示例,其中所述至少一个集成通信系统包括集成到与所述第一GPU的集成电路或片上系统(SoC)相同的集成电路或SoC中的通信系统,并且所述第二至少一个集成通信系统包括集成到与所述第二GPU和所述第一GPU的集成电路或SoC相同的集成电路或SoC中的通信系统。
示例3包括一个或多个示例,其中所述至少一个集成通信系统包括:直接存储器访问(DMA)电路模块;可靠传输电路模块;以及网络接口控制器。
示例4包括一个或多个示例,其中,所述至少一个集成通信系统将执行拓扑发现,以发现所述第二至少一个集成通信系统。
示例5包括一个或多个示例,包括装置接口,所述装置接口用于将所述至少一个集成通信系统通信地耦合到所述第一GPU的一个或多个执行单元。
示例6包括一个或多个示例,包括与所述第一GPU相关联的第一存储器和与所述第二GPU相关联的第二存储器,其中所述第一存储器包括数据的源,并且所述第二存储器包括数据的目的地。
示例7包括一个或多个示例,包括:网络接口装置,所述网络接口装置用于接收和应用所述至少一个集成通信系统和所述第二至少一个集成通信系统的控制配置。
示例8包括一个或多个示例,其中,所述至少一个集成通信系统和所述第二至少一个集成通信系统将与另一系统的至少一个GPU进行通信。
示例9包括一个或多个示例,包括:网络接口装置,所述网络接口装置用于提供所述第一GPU、所述第二GPU和另一系统的至少一个GPU之间的通信。
示例10包括一个或多个示例,包括:至少一个中央处理单元,所述至少一个中央处理单元通信地耦合到所述第一GPU和所述第二GPU,其中所述至少一个中央处理单元将使用所述至少一个集成通信系统和所述第二至少一个集成通信系统与另一系统的至少一个GPU通信。
示例11包括一个或多个示例,包括:GPU到GPU连接,所述GPU到GPU连接用于提供所述至少一个集成通信系统和所述第二至少一个集成通信系统之间的通信。
示例12包括一个或多个示例,包括:用于提供所述第一GPU和所述第二GPU以及另一系统的至少一个GPU之间的通信的结构。
示例13包括一个或多个示例,并且包括至少一个非暂态计算机可读介质,其包括存储在其上的指令,所述指令如果被执行,则使一个或多个处理器:配置第一图形处理单元(GPU)的至少一个网络接口装置以配置一个或多个其它网络接口装置的数据平面,其中所述至少一个网络接口装置将使用可靠性协议来与关联于第二GPU的另一至少一个网络接口装置通信,以将数据从第一存储器复制到第二存储器,并且其中所述第一存储器与所述第一GPU相关联,且所述第二存储器与所述第二GPU相关联。
示例14包括一个或多个示例,包括存储在其上的指令,所述指令如果被执行,则使一个或多个处理器:执行拓扑发现以发现至少一个网络接口装置。
示例15包括一个或多个示例,其中:第一GPU的所述至少一个网络接口装置包括集成到与所述第一GPU的集成电路或片上系统(SoC)相同的集成电路或SoC中的通信系统,并且与第二GPU相关联的所述另一至少一个网络接口装置包括集成到与所述第二GPU的集成电路或SoC相同的集成电路或SoC中的通信系统。
示例16包括一个或多个示例,并且包括一种方法,所述方法包括:在具有多个图形处理单元(GPU)的集成电路中:通过集成到所述多个GPU中的通信系统和GPU到GPU连接来提供所述多个GPU之间的通信,通过集成到所述多个GPU中的通信系统和交换网络来提供所述多个GPU和另一集成电路的至少一个GPU之间的通信,通过耦合到控制网络的网络接口装置来配置集成到所述多个GPU中的所述通信系统。
示例17包括一个或多个示例,其中:集成到所述多个GPU中的所述通信系统的第一通信系统被集成到与所述多个GPU中的第一GPU的集成电路或片上系统(SoC)相同的集成电路或SoC中,并且集成到所述多个GPU中的所述通信系统的第二通信系统被集成到与所述多个GPU中的第二GPU的集成电路或SoC相同的集成电路或SoC中。
示例18包括一个或多个示例,其中,所述多个GPU之间的所述通信利用可靠传输。
示例19包括一个或多个示例,包括:外扩网络中的一个或多个交换机,所述一个或多个交换机执行拓扑发现以发现所述多个GPU中的至少一个GPU。
示例20包括一个或多个示例,包括:通过在集成到所述多个GPU或网络接口装置中的所述通信系统中的至少一个通信系统中进行选择,来提供中央处理单元、加速器和GPU之间的通信。

Claims (20)

1.一种设备,包括:
具有至少一个集成通信系统的第一图形处理单元(GPU),其中所述至少一个集成通信系统将应用可靠性协议来与关联于第二GPU的第二至少一个集成通信系统通信,以将数据从第一存储器区域复制到第二存储器区域,并且其中所述第一存储器区域与所述第一GPU相关联,且所述第二存储器区域与所述第二GPU相关联。
2.如权利要求1所述的设备,其中
所述至少一个集成通信系统包括集成到与所述第一GPU的集成电路或片上系统(SoC)相同的集成电路或SoC中的通信系统,并且
所述第二至少一个集成通信系统包括集成到与所述第二GPU和所述第一GPU的集成电路或SoC相同的集成电路或SoC中的通信系统。
3.如权利要求1所述的设备,其中,所述至少一个集成通信系统包括:
直接存储器访问(DMA)电路模块;
可靠传输电路模块;以及
网络接口控制器。
4.如权利要求1所述的设备,其中,所述至少一个集成通信系统将执行拓扑发现,以发现所述第二至少一个集成通信系统。
5.如权利要求1所述的设备,包括装置接口,所述装置接口用于将所述至少一个集成通信系统通信地耦合到所述第一GPU的一个或多个执行单元。
6.如权利要求1所述的设备,包括与所述第一GPU相关联的第一存储器和与所述第二GPU相关联的第二存储器,其中所述第一存储器包括数据的源,并且所述第二存储器包括数据的目的地。
7.如权利要求1所述的设备,其中,所述至少一个集成通信系统和所述第二至少一个集成通信系统将与另一系统的至少一个GPU进行通信。
8.如权利要求1所述的设备,包括:
网络接口装置,所述网络接口装置用于提供所述第一GPU、所述第二GPU和另一系统的至少一个GPU之间的通信。
9.如权利要求1所述的设备,包括:
至少一个中央处理单元,所述至少一个中央处理单元通信地耦合到所述第一GPU和所述第二GPU,其中所述至少一个中央处理单元将使用所述至少一个集成通信系统和所述第二至少一个集成通信系统与另一系统的至少一个GPU通信。
10.如权利要求1所述的设备,包括:
GPU到GPU连接,所述GPU到GPU连接用于提供所述至少一个集成通信系统和所述第二至少一个集成通信系统之间的通信。
11.如权利要求1所述的设备,包括:
用于提供所述第一GPU和所述第二GPU以及另一系统的至少一个GPU之间的通信的结构。
12.如权利要求1-11中任一项所述的设备,包括:
网络接口装置,所述网络接口装置用于接收和应用所述至少一个集成通信系统和所述第二至少一个集成通信系统的控制配置。
13.至少一个非暂态计算机可读介质,包括存储在其上的指令,所述指令如果被执行,则使一个或多个处理器:
配置第一图形处理单元(GPU)的至少一个网络接口装置以配置一个或多个其它网络接口装置的数据平面,其中所述至少一个网络接口装置将使用可靠性协议来与关联于第二GPU的另一至少一个网络接口装置通信,以将数据从第一存储器复制到第二存储器,并且其中所述第一存储器与所述第一GPU相关联,且所述第二存储器与所述第二GPU相关联。
14.如权利要求13所述的计算机可读介质,包括存储在其上的指令,所述指令如果被执行,则使一个或多个处理器:
执行拓扑发现以发现至少一个网络接口装置。
15.如权利要求13-14中任一项所述的计算机可读介质,其中:
第一GPU的所述至少一个网络接口装置包括集成到与所述第一GPU的集成电路或片上系统(SoC)相同的集成电路或SoC中的通信系统,并且
与第二GPU相关联的所述另一至少一个网络接口装置包括集成到与所述第二GPU的集成电路或SoC相同的集成电路或SoC中的通信系统。
16.一种方法,包括:
在具有多个图形处理单元(GPU)的集成电路中:
通过集成到所述多个GPU中的通信系统和GPU到GPU连接来提供所述多个GPU之间的通信,
通过集成到所述多个GPU中的通信系统和交换网络来提供所述多个GPU和另一集成电路的至少一个GPU之间的通信,
通过耦合到控制网络的网络接口装置来配置集成到所述多个GPU中的所述通信系统。
17.如权利要求16所述的方法,其中:
集成到所述多个GPU中的所述通信系统的第一通信系统被集成到与所述多个GPU中的第一GPU的集成电路或片上系统(SoC)相同的集成电路或SoC中,并且
集成到所述多个GPU中的所述通信系统的第二通信系统被集成到与所述多个GPU中的第二GPU的集成电路或SoC相同的集成电路或SoC中。
18.如权利要求17所述的方法,其中,所述多个GPU之间的所述通信利用可靠传输。
19.如权利要求17所述的方法,包括:
外扩网络中的一个或多个交换机,所述一个或多个交换机执行拓扑发现以发现所述多个GPU中的至少一个GPU。
20.如权利要求17-19中任一项所述的方法,包括:
通过在集成到所述多个GPU或网络接口装置中的所述通信系统中的至少一个通信系统中进行选择,来提供中央处理单元、加速器和GPU之间的通信。
CN202280040550.9A 2021-07-06 2022-07-07 通过图形处理单元的网络接口的直接存储器写入 Pending CN117795495A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202163218832P 2021-07-06 2021-07-06
US63/218832 2021-07-06
US17/853,711 US20220351326A1 (en) 2021-07-06 2022-06-29 Direct memory writes by network interface of a graphics processing unit
US17/853711 2022-06-29
PCT/US2022/036397 WO2023283365A1 (en) 2021-07-06 2022-07-07 Direct memory writes by network interface of a graphics processing unit

Publications (1)

Publication Number Publication Date
CN117795495A true CN117795495A (zh) 2024-03-29

Family

ID=83602495

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280040550.9A Pending CN117795495A (zh) 2021-07-06 2022-07-07 通过图形处理单元的网络接口的直接存储器写入

Country Status (4)

Country Link
US (2) US20220335563A1 (zh)
EP (1) EP4416600A1 (zh)
CN (1) CN117795495A (zh)
WO (1) WO2023283365A1 (zh)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10474458B2 (en) 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
JP7107482B2 (ja) 2019-03-15 2022-07-27 インテル・コーポレーション ハイブリッド浮動小数点フォーマットのドット積累算命令を有するグラフィックスプロセッサ及びグラフィックス処理ユニット
EP3938890A1 (en) 2019-03-15 2022-01-19 Intel Corporation Architecture for block sparse operations on a systolic array
US11934342B2 (en) 2019-03-15 2024-03-19 Intel Corporation Assistance for hardware prefetch in cache access
EP4130988A1 (en) 2019-03-15 2023-02-08 INTEL Corporation Systems and methods for cache optimization
US11962518B2 (en) 2020-06-02 2024-04-16 VMware LLC Hardware acceleration techniques using flow selection
US12021759B2 (en) 2020-09-28 2024-06-25 VMware LLC Packet processing with hardware offload units
US11792134B2 (en) 2020-09-28 2023-10-17 Vmware, Inc. Configuring PNIC to perform flow processing offload using virtual port identifiers
US11875172B2 (en) 2020-09-28 2024-01-16 VMware LLC Bare metal computer for booting copies of VM images on multiple computing devices using a smart NIC
US11736566B2 (en) 2020-09-28 2023-08-22 Vmware, Inc. Using a NIC as a network accelerator to allow VM access to an external storage via a PF module, bus, and VF module
US11909851B2 (en) * 2021-10-04 2024-02-20 Nxp B.V. Coalescing interrupts based on fragment information in packets and a network controller for coalescing
US11863376B2 (en) * 2021-12-22 2024-01-02 Vmware, Inc. Smart NIC leader election
US11995024B2 (en) 2021-12-22 2024-05-28 VMware LLC State sharing between smart NICs
US20230300089A1 (en) * 2022-01-26 2023-09-21 Dell Products L.P. Serial console transport offload with smart network interface controller
US11928062B2 (en) 2022-06-21 2024-03-12 VMware LLC Accelerating data message classification with smart NICs
US11928367B2 (en) 2022-06-21 2024-03-12 VMware LLC Logical memory addressing for network devices
US11899594B2 (en) 2022-06-21 2024-02-13 VMware LLC Maintenance of data message classification cache on smart NIC
US11991073B1 (en) * 2023-05-22 2024-05-21 Mellanox Technologies, Ltd. Dual software interfaces for multiplane devices to separate network management and communication traffic

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6393483B1 (en) * 1997-06-30 2002-05-21 Adaptec, Inc. Method and apparatus for network interface card load balancing and port aggregation
US7325086B2 (en) * 2005-12-15 2008-01-29 Via Technologies, Inc. Method and system for multiple GPU support
JP4439491B2 (ja) * 2006-05-24 2010-03-24 株式会社ソニー・コンピュータエンタテインメント マルチグラフィックスプロセッサシステム、グラフィックスプロセッサおよびデータ転送方法
US20100013839A1 (en) * 2008-07-21 2010-01-21 Rawson Andrew R Integrated GPU, NIC and Compression Hardware for Hosted Graphics
US9602437B1 (en) * 2012-10-03 2017-03-21 Tracey M. Bernath System and method for accelerating network applications using an enhanced network interface and massively parallel distributed processing
US9971710B2 (en) * 2013-02-07 2018-05-15 Microsoft Technology Licensing, Llc Optimizing data transfers between heterogeneous memory arenas
US10237355B2 (en) * 2015-05-12 2019-03-19 Equinix, Inc. Software-controlled cloud exchange
US10540318B2 (en) * 2017-04-09 2020-01-21 Intel Corporation Graphics processing integrated circuit package
US11687460B2 (en) * 2017-04-26 2023-06-27 Advanced Micro Devices, Inc. Network cache injection for coherent GPUs
US10198219B2 (en) * 2017-05-30 2019-02-05 Ati Technologies Ulc Method and apparatus for en route translation in solid state graphics systems
US11531752B2 (en) * 2018-09-26 2022-12-20 Intel Corporation Technologies for control plane separation in a network interface controller
US11150963B2 (en) * 2019-02-28 2021-10-19 Cisco Technology, Inc. Remote smart NIC-based service acceleration
JP7107482B2 (ja) * 2019-03-15 2022-07-27 インテル・コーポレーション ハイブリッド浮動小数点フォーマットのドット積累算命令を有するグラフィックスプロセッサ及びグラフィックス処理ユニット
WO2020172692A2 (en) * 2020-04-27 2020-08-27 Futurewei Technologies, Inc. Dynamic resource tuning cloud service
US10997106B1 (en) * 2020-09-22 2021-05-04 Pensando Sytems Inc. Inter-smartNIC virtual-link for control and datapath connectivity
US20220100491A1 (en) * 2020-09-28 2022-03-31 Vmware, Inc. Integrated installation of resource sharing software on computer and connected network interface card
US11645104B2 (en) * 2020-12-22 2023-05-09 Reliance Jio Infocomm Usa, Inc. Intelligent data plane acceleration by offloading to distributed smart network interfaces
US20210203704A1 (en) * 2021-03-15 2021-07-01 Intel Corporation Cloud gaming gpu with integrated nic and shared frame buffer access for lower latency
US20230041806A1 (en) * 2021-08-04 2023-02-09 Oracle International Corporation Location-independent programming data plane for packet processing
US11863376B2 (en) * 2021-12-22 2024-01-02 Vmware, Inc. Smart NIC leader election
US11995024B2 (en) * 2021-12-22 2024-05-28 VMware LLC State sharing between smart NICs

Also Published As

Publication number Publication date
WO2023283365A1 (en) 2023-01-12
US20220335563A1 (en) 2022-10-20
US20220351326A1 (en) 2022-11-03
WO2023283365A8 (en) 2023-11-16
EP4416600A1 (en) 2024-08-21

Similar Documents

Publication Publication Date Title
US20220351326A1 (en) Direct memory writes by network interface of a graphics processing unit
US11934330B2 (en) Memory allocation for distributed processing devices
EP3754498B1 (en) Architecture for offload of linked work assignments
CN110915173B (zh) 用于计算节点和存储节点的数据处理单元
EP3706394B1 (en) Writes to multiple memory destinations
US20220103530A1 (en) Transport and cryptography offload to a network interface device
CN115210693A (zh) 具有可预测时延的存储事务
WO2022119620A1 (en) Network device intermediary for memory access requests
WO2022169519A1 (en) Transport and crysptography offload to a network interface device
US11880710B2 (en) Adaptive data shipment based on burden functions
WO2022271239A1 (en) Queue scaling based, at least, in part, on processing load
US20220138021A1 (en) Communications for workloads
CN116266827A (zh) 对分组处理管道进行编程
US20200358721A1 (en) Buffer allocation for parallel processing of data
US20220210097A1 (en) Data access technologies
US20220321491A1 (en) Microservice data path and control path processing
US20220224605A1 (en) Simulating network flow control
CN117529904A (zh) 分组格式调整技术
US20200133367A1 (en) Power management for workload offload engines
US20230082780A1 (en) Packet processing load balancer
EP4134804A1 (en) Data access technologies
WO2023075930A1 (en) Network interface device-based computations
US20210328945A1 (en) Configurable receive buffer size
US20220113913A1 (en) Target offload for scale-out storage
US20230045114A1 (en) Buffer management

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