CN109690512B - 具有触发操作的gpu远程通信 - Google Patents
具有触发操作的gpu远程通信 Download PDFInfo
- Publication number
- CN109690512B CN109690512B CN201780056487.7A CN201780056487A CN109690512B CN 109690512 B CN109690512 B CN 109690512B CN 201780056487 A CN201780056487 A CN 201780056487A CN 109690512 B CN109690512 B CN 109690512B
- Authority
- CN
- China
- Prior art keywords
- command
- gpu
- generated network
- data
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9063—Intermediate storage in different physical parts of a node or terminal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Computer And Data Communications (AREA)
- Information Transfer Systems (AREA)
- Bus Control (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
公开了用于通过计算机通信网络来发射数据的方法、装置和系统。可以使用中央处理单元(CPU)预先生成通信命令队列并将其存储在网络接口控制器(NIC)的装置存储器中。此后,如果图形处理单元(GPU)有数据要传送到远程GPU,那么它可以将所述数据存储在发送缓冲器中,其中在所述缓冲器中的位置由预先生成的命令指向。所述GPU随后可以用信号向所述接口装置通知所述命令已就绪,从而触发所述预先生成的命令的执行以发送所述数据。
Description
相关申请的交叉引用
本申请要求2016年10月18日提交的美国非临时专利申请号15/297,079的权益,该专利申请的内容通过引用并入本文。
政府权利
本发明是在政府支持下根据由美国能源部资助的劳伦斯伯克利国家实验室设计先锋2系统集成项目(主合同号DE-AC02-05CH11231,分包合同号7216338)进行的。政府享有本发明的某些权利。
背景技术
直接存储器存取(DMA)是计算机系统的主存储器可以被某些外围硬件直接存取而无需由中央处理单元(CPU)执行单独读/写操作的技术。此类外围硬件可以包括图形处理器(GPU)、网络接口控制器(NIC)或其他装置,诸如其他种类的输入/输出(I/O)装置。
远程直接存储器存取(RDMA)是一个计算机或处理装置可以通过网络存取另一计算机或处理装置的主存储器而不涉及任一计算机的CPU或操作系统的技术。DMA和RDMA两者都可以具有允许CPU在主存储器与硬件子系统之间或在两个计算机系统的主存储器之间的数据传送期间执行其他功能的优点。DMA和RDMA两者还可以具有比需要来自CPU的更多介入的技术提高数据传送速率的优点,并且可以减少或消除缓冲。
GPU通常无法控制网络装置。基于CPU的通信库或在CPU上运行的其他软件可以被要求在分布式GPU之间通信。使用GPU构建诸如读和写请求包或者put和get命令等通信网络命令导致性能较差,因为这个操作本质上是串行的并且无法在GPU上有效地并行化。
附图说明
可以从结合附图以举例的方式给出的以下描述中获得更详细的理解,在附图中:
图1是可以实现一个或多个公开的实施方案的示例性装置的框图;
图2是示出示例性拓扑的系统图;
图3是示出可以使用图2的示例性拓扑和/或图1的示例性装置来采用的示例性方法的流程图;
图4是示出可以使用图2的示例性拓扑和/或图1的示例性装置中的GPU来采用的示例性方法的流程图;
图5是示出可以使用图2的示例性拓扑和/或图1的示例性装置中的NIC来采用的示例性方法的流程图;以及
图6是示出可以使用图2的示例性拓扑和/或图1的示例性装置中的CPU来采用的示例性方法的流程图。
具体实施方式
多节点GPU集群是计算机集群,其中连接的计算机中的每一者包括一个或多个GPU。GPU集群的各种操作可能需要集群中的一个GPU的输出的RDMA通信,以便由集群的不同节点中的GPU消耗。GPU当前在没有在CPU上运行的关键路径软件的帮助下无法发起RDMA通信,并且无法有效地生成通信网络命令。因此,GPU-GPU RDMA通常低效,并且通常需要CPU来开始通信。这可能是不合期望的,因为RDMA的一个潜在优点就是释放CPU以用于其他任务。
因此,本文中论述两个GPU之间的RDMA的策略,所述策略通过使用CPU预先生成通信命令包队列来解决这些缺点。此后,如果GPU有数据要传送到远程GPU,那么它可以将所述数据存储在发送缓冲器中,诸如系统存储器或本地GPU存储器的一部分,其中在所述缓冲器中的位置由预先生成的命令指向。所述GPU随后可以用信号向接口装置通知所述命令在所述缓冲器中已就绪,从而触发所述预先生成的命令的执行以发送所述数据。通过这种方式,GPU不需要生成通信命令,并且CPU不需要在通信操作的关键路径期间生成命令。
一些实施方案提供一种用于发射数据的方法。接口装置可以从中央处理单元(CPU)接收预先生成的网络命令。所述接口装置可以从图形处理单元(GPU)接收指示数据在存储器中已就绪的信号。所述接口装置可以基于所述信号来执行所述预先生成的网络命令,以通过网络将所述数据发射到目标装置。
在一些实施方案中,所述预先生成的网络命令包括put命令。所述信号可以指示计数器变量的值的变化。所述预先生成的网络命令可以包括所述存储器中的地址的指针。所述预先生成的网络命令可以包括指示所述目标装置的信息。所述预先生成的网络命令可以包括指示需要多少信号来开始远程put操作的阈值。所述信息可以包括元数据。所述接口装置可以包括网络接口控制器(NIC)。
一些实施方案提供一种用于发射数据的装置。所述装置可以包括被配置成从中央处理单元接收预先生成的网络命令的接收器电路系统。所述接收器电路系统可以被配置成从图形处理单元接收指示数据在存储器中已就绪的信号。所述装置可以包括被配置成基于所述信号来执行所述预先生成的网络命令的处理器电路系统。所述装置可以包括被配置成基于所述预先生成的网络命令通过网络将所述数据发射到目标装置的发射器电路系统。
在一些实施方案中,所述预先生成的网络命令包括put命令。所述信号可以指示计数器变量的值的变化。所述预先生成的网络命令可以包括所述存储器中的地址的指针。所述预先生成的网络命令可以包括指示所述目标装置的信息。所述信息可以包括元数据。所述接口装置可以包括网络接口控制器(NIC)。
一些实施方案提供一种用于发射数据的系统。所述系统可以包括一个或多个中央处理单元(CPU)和一个或多个图形处理单元(GPU)。所述CPU可以包括:处理电路系统,所述处理电路系统被配置成生成多个预先生成的网络命令;以及发射器电路系统,所述发射器电路系统被配置成将所述预先生成的网络命令发射到接口装置。所述GPU可以包括:处理电路系统,所述处理电路系统被配置成生成数据以用于通过网络发射到目标装置;存储电路系统,所述存储电路系统被配置成将所述数据存储在缓冲器中;以及发射器电路系统,所述发射器电路系统被配置成用信号向所述接口装置通知所述数据存储在所述缓冲器中,使得所述接口装置执行所述多个预先生成的网络命令中的一者。
在一些实施方案中,所述CPU和所述GPU位于单个管芯上。所述CPU和所述GPU可以位于同一封装内。所述接口装置可以包括网络接口控制器(NIC)。
图1是可以实现一个或多个公开的实施方案的示例性装置100的框图。装置100可以包括例如计算机、游戏装置、手持式装置、机顶盒、电视机、移动电话或平板计算机。装置100包括处理器102、存储器104、存储设备106、一个或多个输入装置108,以及一个或多个输出装置110。装置100还可以任选地包括输入驱动器112和输出驱动器114。应理解,装置100可以包括图1中未示出的附加部件。
处理器102可以包括中央处理单元(CPU)、图形处理单元(GPU)、位于同一管芯上的CPU和GPU,或者一个或多个处理器核心,其中每个处理器核心可以是CPU或GPU。存储器104可以与处理器102位于同一管芯上,或可以与处理器102分开定位。存储器104可以包括易失性或非易失性存储器,例如随机存取存储器(RAM)、动态RAM或高速缓存。
存储设备106可以包括固定存储设备或可移动存储设备,例如硬盘驱动器、固态驱动器、光盘或闪存驱动器。输入装置108可以包括键盘、小键盘、触摸屏、触摸板、检测器、麦克风、加速计、陀螺仪、生物识别扫描器或网络连接(例如,用于发射和/或接收无线IEEE802信号的无线局域网卡)。输出装置110可以包括显示器、扬声器、打印机、触觉反馈装置、一个或多个灯、天线或网络连接(例如,用于发射和/或接收无线IEEE 802信号的无线局域网卡)。
输入驱动器112与处理器102和输入装置108通信,并且容许处理器102接收来自输入装置108的输入。输出驱动器114与处理器102和输出装置110通信,并且容许处理器102向输出装置110发送输出。应注意,输入驱动器112和输出驱动器114是任选部件,并且如果输入驱动器112和输出驱动器114不存在,则装置100将以相同方式操作。
图2是示出示例性拓扑200的系统图,所述示例性拓扑200示出了GPU远程通信的各方面。拓扑200包括CPU 210、GPU 220、系统存储器230、NIC 240、本地互连250,以及计算机通信网络260。
CPU 210包括任何合适的通用处理单元或处理器核心。GPU 220包括任何合适的图形处理单元或图形处理器核心。CPU 210和GPU 220可以设置在单独的管芯或封装上,或者可以是同一管芯上的核心,诸如在加速处理单元(APU)中。CPU 210和GPU 220可以例如在单个管芯上实现为处理器102(相对于图1示出并描述)。
系统存储器230包括任何合适的非暂时性计算机可读存储器,诸如随机存取存储器(RAM)。系统存储器230可以例如实现为存储器104(相对于图1示出并描述)。系统存储器230通过本地互连250与CPU 210和CPU 220通信。本地互连250可以包括用于将计算机内的外围装置互连的任何合适的总线或另一介质,诸如外围部件互连高速(PCIe)总线。
网络260包括用于使用RDMA与远程系统通信的任何合适的计算机通信网络,诸如InfiniBand网络和/或互联网或其部分。在这个示例中,RDMA目标可以是包括另一GPU的系统中的存储器。RDMA目标也可以是来自GPU 220的输出数据的任何消费者。
NIC 240耦合到本地互连230,并且经由本地互连250来为CPU 210、GPU 220和系统存储器230向网络260提供通信。示例性拓扑200将NIC用于这些通信。对网络260的通信也可以由任何其他合适的I/O装置提供。NIC 240包括装置存储器245。
CPU 210生成一个或多个远程put命令215并且通过本地互连250将它们存储在NIC240的装置存储器245中。在这个示例中,远程put命令215存储在NIC 240的装置存储器245中。远程put命令还可以存储在任何合适的存储器中,诸如系统存储器230。远程put命令用于这个示例以及本文中的其他示例。还可以使用支持触发语义的其他网络消息或通信操作,包括但不限于,集体操作、远程get命令,和/或双边发送/接收对。远程put命令215包括与RDMA目标目的地和将要发送的数据相关的信息。例如,远程put命令215’包括元数据216’,所述元数据216’指定RDMA目标目的地,使得数据被NIC适当地引导到所述目标。元数据216’还可以包括与put命令215’的触发条件相关的计数器值或其他信息(如本文中将进一步描述),并且还可以包括其他信息。远程put命令215’还可以包括缓冲器指针217’,所述缓冲器指针217’指向系统存储器230中的发送缓冲器235中的地址或地址范围。
每个远程put命令215还与触发条件相关联,NIC 240可以通过所述触发条件来确定何时执行所述命令。在这个示例中,远程put命令215’与计数器值218’相关联。远程put命令215”可以与不同的缓冲器值218”以及缓冲器指针217”和元数据216”相关联。在这个示例中,将计数器值用作触发条件。所述触发条件还可以是装置存储器245或系统存储器230中的任何合适的预定义事件,诸如GPU设置标记或其他寄存器,其对应于期望未决put命令或队列中的下一未决put命令,具体取决于期望的实现方式。
在一些实现方式中,CPU 210预先生成远程put命令215,所述远程put命令215可以包括指示目标的元数据、指示源的指针、指示在发送消息之前要等待的触发条件的数量的阈值,和/或将网络消息发送到远程目标所需的任何其他协议具体信息。这个命令包可以经由命令接口传送到NIC并且可以存储在内部NIC存储器中或存储在全局系统存储器中。NIC可以将来自本地存储器池或来自本地系统存储器的计数器分配到每个消息,以跟踪从GPU接收的触发条件的数量。
GPU 220在它的操作期间执行内核,这可以产生数据以便通过网络260传送到远程GPU。如果此类数据变得可用,那么GPU 220将所述数据写入系统存储器230的发送缓冲器235。在这个示例中,发送缓冲器在系统存储器中实现。发送缓冲器还可以在任何合适的存储器中实现,诸如在GPU 220的本地存储器中,可能取决于特定实现方式中的此类存储器的可用性。
在发送缓冲器235中的数据对NIC 240可见之后,GPU 220用信号通知NIC 240执行未决put命令215中的一者。GPU可以使用适当的存储器栅栏,以确保所有修改后的数据已经刷新到发送缓冲器并且对NIC可见。在这个示例中,GPU 220执行用信号通知NIC 240使与put命令215”相关联的计数器218”递减的操作。所述操作可以是全局原子存储器更新、存储器映射寄存器写入,或任何其他合适的触发机制。计数器变量可以存储在装置存储器245中或任何其他合适的位置。如果在递减之后计数器218”的当前值匹配例如未决远程put命令215”的元数据216”中含有的阈值,那么NIC 240执行远程put命令215”并且通过网络260将在发送缓冲器235中的由缓冲器指针217”指向的位置处的数据发射到由元数据216”指示的RDMA目标。
GPU触发NIC的一个可能的实现方式由下表1中的伪代码示出:
表1
表1的伪代码使用全局原子以通过GPU激活NIC的put操作。在这个示例中,NIC可以使用类似mwait的语义有效地等待计数器,其中NIC不需要轮询存储器地址并且可以在存储器值改变时接收通知。这可以具有避免对NIC高速缓存与GPU高速缓存之间的高速缓存行进行不必要传送控制的优点。这个示例假定统一的类似HSA的地址空间。
GPU触发NIC的另一可能的实现方式由下表2中的伪代码示出:
表2
表2的伪代码使用具有本地LDS同步的两级通知和全局标记。这种方法在通过写入全局信号使单个工作项触发消息之前,使用本地计数器在工作组内同步。这种方法可能会遭受控制分歧。这种方法还简化了使用标记的NIC的设计,所述标记可以被实现为简单的存储器映射门铃寄存器。
图3是示出示例性方法300的流程图,所述示例性方法300示出了GPU远程通信的各方面并且可以例如使用示例性拓扑200和/或示例性装置100来采用。
在步骤310中,计算机系统的CPU(诸如CPU 210)生成一个或多个通信命令,诸如远程put命令(诸如远程put命令215),并且以队列将这些命令存储在NIC(诸如NIC 240)或其他接口装置上。每个通信命令包括对发送缓冲器的指针。在这个示例中,发送缓冲器是存储器系统的系统存储器(诸如系统存储器230)的一部分。在其他实现方式中,发送缓冲器也可以是GPU本地存储器或另一存储器的一部分。
在步骤320中,计算机系统的GPU(诸如GPU 220)生成数据以用于传送到另一计算机系统的GPU。例如,GPU可以执行内核,所述内核产生数据以供远程GPU消耗。在步骤330中,GPU将生成的数据存储在发送缓冲器中。在步骤340中,GPU用信号向NIC通知数据在发送缓冲器中已就绪。在这个示例中,GPU通过使存储在诸如NIC的装置存储器或系统存储器等存储器中的计数器变量递减来用信号通知数据已准备好发送。在其他实现方式中,GPU可以通过任何其他合适的方式,诸如通过设置NIC的装置存储器或主系统存储器中的寄存器的值来用信号向NIC或另一接口装置通知数据在发送存储器中已就绪。
在步骤350中,接口装置基于来自GPU的信号而执行通信命令中的一者。例如,如果信号是与预先生成的put命令相关联的递减计数器变量,那么接口装置可以将计数器变量与通信命令中包括的阈值进行比较。如果计数器变量匹配多个命令中的一者的存储阈值的值,那么NIC执行所述命令。执行通信命令可以导致NIC通过计算机通信网络将发送缓冲器中的数据(例如,在由通信命令中的指针指向的位置处)发射到通信命令中指定的目标(例如,远程GPU的存储器)。
应注意,按顺序示出了步骤310与步骤320至350。CPU创建通信命令也可以在其他步骤之前的任何合适时间进行,并且独立于其他步骤。这可以具有从RDMA操作的关键路径中移除CPU的优点。
图4是示出示例性方法400的流程图,所述示例性方法400示出了GPU远程通信的各方面并且可以例如使用示例性拓扑200和/或示例性装置100中的GPU来采用。
在步骤410中,GPU(诸如GPU 220)执行内核并且生成数据,以用于通过计算机通信网络发射到远程存储器位置。远程存储器位置可以是远程GPU的装置存储器、远程GPU可访问的远程装置的系统存储器,或者任何合适的RDMA目标。
在数据可用的条件420下(例如,GPU已经完成执行内核或特定工作组,从而产生用于发射到远程存储器的数据),在步骤430中,GPU将所述数据写入发送缓冲器。在这个示例中,发送缓冲器在系统存储器中实现。发送缓冲器还可以在任何合适的存储器中实现,诸如GPU的装置存储器。在步骤440中,GPU触发接口装置以使用诸如本文中所述的那些等任何合适的信令技术通过计算机通信网络将发送缓冲器中的数据发射到远程GPU或其他目标。例如,GPU可以使计数器变量递减,以用信号通知接口装置执行具有匹配递减计数器变量的相关联阈值的预先存储的远程put命令。
图5是示出示例性方法500的流程图,所述示例性方法500示出了GPU远程通信的各方面并且可以例如使用示例性拓扑200和/或示例性装置100中的NIC来采用。
在NIC接收到来自CPU的预先生成的远程put命令的条件510下,在步骤520中,NIC将远程put命令存储在它的装置存储器中。否则,或者在存储远程put命令之后,NIC确定是否已经从GPU接收到数据就绪信号。例如,NIC可以将系统存储器中的可以被GPU递减的计数器变量的值与远程put命令中的一者或多者的阈值进行比较,或者可以测试能够由GPU设置的标记或门铃缓冲器的值。在从GPU接收到就绪信号的条件530下,并且假定对应预先存储的put命令存储在本地装置存储器中,NIC执行预先存储的远程put命令,以通过计算机通信网络将存储在发送缓冲器中的由远程put命令中的指针指示的地址处的数据发射到远程系统中的存储器,诸如,GPU存储器、系统存储器或其他合适的RDMA目标。NIC随后可以重新开始监测来自GPU的新就绪信号或来自CPU的预先生成的通信命令。
如图5所示,步骤510和520不一定与步骤530和540按顺序执行。例如,在步骤520中存储通信命令之后,在步骤510中没有接收到任何附加预先生成的put命令的情况下,在步骤530中NIC可以无限期地监测来自GPU的就绪信号。因此,CPU创建通信命令可以在其他步骤之前的任何合适时间进行,并且独立于其他步骤。这可以具有从RDMA操作的关键路径中移除CPU的优点。
图6是示出示例性方法600的流程图,所述示例性方法600示出了GPU远程通信的各方面并且可以例如使用示例性拓扑200和/或示例性装置100中的CPU来采用。
在步骤610中,确定或预测GPU的输出的未来通信模式。在步骤620中,CPU基于通信模式而生成一个或多个通信命令。例如,通信命令可以是远程put命令,并且可以包括对将存储来自GPU的数据的发送缓冲器的指针、指示数据的目的地的信息,以及可能地计数器值或其他触发信息。在步骤630中,CPU将通信命令发射到NIC或其他合适的接口装置,以用于存储在NIC的装置存储器或其他合适的存储器中。
应理解,基于本文的公开内容,许多变型是可能的。尽管上文以特定组合描述了特征和元件,但是每个特征或元件可以在没有其他特征和元件的情况下单独使用,或者以具有或没有其他特征和元件的各种组合使用。
所提供的方法可以在通用计算机、处理器或处理器核心中实现。合适的处理器包括例如通用处理器、专用处理器、常规处理器、数字信号处理器(DSP)、多个微处理器、与DSP核心相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)电路、任何其他类型的集成电路(IC)和/或状态机。可以通过使用经处理的硬件描述语言(HDL)指令的结果和包括网表的其他中间数据(此类指令能够存储在计算机可读介质上)配置制造过程来制造此类处理器。这种处理的结果可以是掩模件,所述掩模件随后在半导体制造过程中用来制造实现实施方案的各方面的处理器。
本文提供的方法或流程图可以用并入非暂时性计算机可读存储介质中以供通用计算机或处理器执行的计算机程序、软件或固件来实现。非暂时性计算机可读存储介质的示例包括只读存储器(ROM)、随机存取存储器(RAM)、寄存器、高速缓存存储器、半导体存储器装置、诸如内部硬盘和可移动磁盘的磁性介质、磁光介质以及诸如CD-ROM盘和数字通用盘(DVD)的光学介质。
Claims (20)
1.一种用于发射数据的方法,所述方法包括:
由接口装置从中央处理单元接收预先生成的网络远程通信命令,其中所述预先生成的网络远程通信命令包括阈值,所述阈值指示在发送由未决的put命令指定的消息之前要等待的触发条件的数量;
由所述接口装置从图形处理单元接收指示数据在存储器中已就绪的信号,其中所述信号包括触发条件;
在从所述图形处理单元接收到所述触发条件之后,确定所述接口装置经历的触发条件的数量与存储在所述预先生成的网络远程通信命令中的所述阈值相匹配;以及
响应于所述确定,由所述接口装置基于所述信号来执行所述预先生成的网络命令,以通过网络将所述数据发射到目标装置。
2.如权利要求1所述的方法,其中所述预先生成的网络远程通信命令包括put命令。
3.如权利要求1所述的方法,其中所述信号指示计数器变量的值的变化。
4.如权利要求1所述的方法,其中所述预先生成的网络远程通信命令包括计数器变量阈值。
5.如权利要求1所述的方法,其中所述预先生成的网络远程通信命令包括所述存储器中的地址的指针。
6.如权利要求1所述的方法,其中所述预先生成的网络远程通信命令包括指示所述目标装置的信息。
7.如权利要求6所述的方法,其中所述信息包括元数据。
8.如权利要求1所述的方法,其中所述接口装置包括网络接口控制器(NIC)。
9.一种用于发射数据的装置,所述装置包括:
接收器电路系统,所述接收器电路系统被配置成从中央处理单元接收预先生成的网络远程通信命令,其中所述预先生成的网络远程通信命令包括阈值,所述阈值指示在发送由未决的put命令指定的消息之前要等待的触发条件的数量;
所述接收器电路系统还被配置成从图形处理单元接收指示数据在存储器中已就绪的信号,其中所述信号包括触发条件;
处理器电路系统,所述处理器电路系统被配置成在从所述图形处理单元接收到所述触发条件之后,确定所述接收器电路系统经历的触发条件的数量与存储在所述预先生成的网络远程通信命令中的所述阈值相匹配;并且响应于所述确定,基于所述信号来执行所述预先生成的网络命令;以及
发射器电路系统,所述发射器电路系统被配置成基于所述预先生成的网络命令通过网络将所述数据发射到远程目标装置。
10.如权利要求9所述的装置,其中所述预先生成的网络远程通信命令包括put命令。
11.如权利要求9所述的装置,其中所述信号指示计数器变量的值的变化。
12.如权利要求9所述的装置,其中所述预先生成的网络远程通信命令包括计数器变量阈值。
13.如权利要求9所述的装置,其中所述预先生成的网络远程通信命令包括所述存储器中的地址的指针。
14.如权利要求9所述的装置,其中所述预先生成的网络远程通信命令包括指示所述目标装置的信息。
15.如权利要求14所述的装置,其中所述信息包括元数据。
16.如权利要求9所述的装置,其中所述装置包括网络接口控制器(NIC)。
17.一种用于发射数据的系统,所述系统包括:
中央处理单元(CPU);以及
图形处理单元(GPU);
所述CPU包括:处理电路系统,所述处理电路系统被配置成生成多个预先生成的网络远程通信命令;以及发射器电路系统,所述发射器电路系统被配置成将所述预先生成的网络远程通信命令发射到接口装置,其中所述预先生成的网络远程通信命令包括阈值,所述阈值指示在发送由未决的put命令指定的消息之前要等待的触发条件的数量;
所述GPU包括:处理电路系统,所述处理电路系统被配置成生成数据以用于通过网络发射到远程目标装置;存储电路系统,所述存储电路系统被配置成将所述数据存储在缓冲器中;以及发射器电路系统,所述发射器电路系统被配置成用信号向所述接口装置通知所述数据存储在所述缓冲器中,使得所述接口装置执行所述多个预先生成的网络远程通信命令中的一者。
18.如权利要求17所述的系统,其中所述CPU和所述GPU设置在单个管芯上。
19.如权利要求17所述的系统,其中所述CPU和所述GPU设置在同一封装内。
20.如权利要求17所述的系统,其中所述接口装置包括网络接口控制器(NIC)。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/297,079 US10936533B2 (en) | 2016-10-18 | 2016-10-18 | GPU remote communication with triggered operations |
US15/297,079 | 2016-10-18 | ||
PCT/US2017/052250 WO2018075182A1 (en) | 2016-10-18 | 2017-09-19 | Gpu remote communication with triggered operations |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109690512A CN109690512A (zh) | 2019-04-26 |
CN109690512B true CN109690512B (zh) | 2023-07-18 |
Family
ID=61904564
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780056487.7A Active CN109690512B (zh) | 2016-10-18 | 2017-09-19 | 具有触发操作的gpu远程通信 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10936533B2 (zh) |
EP (1) | EP3529706B1 (zh) |
JP (1) | JP6961686B2 (zh) |
KR (1) | KR102245247B1 (zh) |
CN (1) | CN109690512B (zh) |
WO (1) | WO2018075182A1 (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10534606B2 (en) | 2011-12-08 | 2020-01-14 | Oracle International Corporation | Run-length encoding decompression |
US11113054B2 (en) | 2013-09-10 | 2021-09-07 | Oracle International Corporation | Efficient hardware instructions for single instruction multiple data processors: fast fixed-length value compression |
US10599488B2 (en) | 2016-06-29 | 2020-03-24 | Oracle International Corporation | Multi-purpose events for notification and sequence control in multi-core processor systems |
US10380058B2 (en) | 2016-09-06 | 2019-08-13 | Oracle International Corporation | Processor core to coprocessor interface with FIFO semantics |
US10783102B2 (en) | 2016-10-11 | 2020-09-22 | Oracle International Corporation | Dynamically configurable high performance database-aware hash engine |
US10459859B2 (en) | 2016-11-28 | 2019-10-29 | Oracle International Corporation | Multicast copy ring for database direct memory access filtering engine |
US10725947B2 (en) | 2016-11-29 | 2020-07-28 | Oracle International Corporation | Bit vector gather row count calculation and handling in direct memory access engine |
US20190044809A1 (en) * | 2017-08-30 | 2019-02-07 | Intel Corporation | Technologies for managing a flexible host interface of a network interface controller |
US11429413B2 (en) * | 2018-03-30 | 2022-08-30 | Intel Corporation | Method and apparatus to manage counter sets in a network interface controller |
US10740163B2 (en) * | 2018-06-28 | 2020-08-11 | Advanced Micro Devices, Inc. | Network packet templating for GPU-initiated communication |
US10795840B2 (en) | 2018-11-12 | 2020-10-06 | At&T Intellectual Property I, L.P. | Persistent kernel for graphics processing unit direct memory access network packet processing |
WO2020236277A1 (en) * | 2019-05-23 | 2020-11-26 | Cray Inc. | System and method for facilitating tracer packets in a data-driven intelligent network |
US11182221B1 (en) * | 2020-12-18 | 2021-11-23 | SambaNova Systems, Inc. | Inter-node buffer-based streaming for reconfigurable processor-as-a-service (RPaaS) |
US11960813B2 (en) | 2021-08-02 | 2024-04-16 | Advanced Micro Devices, Inc. | Automatic redistribution layer via generation |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007316859A (ja) * | 2006-05-24 | 2007-12-06 | Sony Computer Entertainment Inc | マルチグラフィックスプロセッサシステム、グラフィックスプロセッサおよびデータ転送方法 |
CN101539902A (zh) * | 2009-05-05 | 2009-09-23 | 中国科学院计算技术研究所 | 多计算机系统中节点的dma设备及通信方法 |
US8131814B1 (en) * | 2008-07-11 | 2012-03-06 | Hewlett-Packard Development Company, L.P. | Dynamic pinning remote direct memory access |
CN102804156A (zh) * | 2009-06-17 | 2012-11-28 | 超威半导体公司 | 动态随机存取存储器通道控制器的并行训练 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5278956A (en) | 1990-01-22 | 1994-01-11 | Vlsi Technology, Inc. | Variable sized FIFO memory and programmable trigger level therefor for use in a UART or the like |
US8766993B1 (en) | 2005-04-06 | 2014-07-01 | Teradici Corporation | Methods and apparatus for enabling multiple remote displays |
US8269782B2 (en) | 2006-11-10 | 2012-09-18 | Sony Computer Entertainment Inc. | Graphics processing apparatus |
US20100013839A1 (en) * | 2008-07-21 | 2010-01-21 | Rawson Andrew R | Integrated GPU, NIC and Compression Hardware for Hosted Graphics |
US9645866B2 (en) | 2010-09-20 | 2017-05-09 | Qualcomm Incorporated | Inter-processor communication techniques in a multiple-processor computing platform |
US8902228B2 (en) * | 2011-09-19 | 2014-12-02 | Qualcomm Incorporated | Optimizing resolve performance with tiling graphics architectures |
US9830288B2 (en) | 2011-12-19 | 2017-11-28 | Nvidia Corporation | System and method for transmitting graphics rendered on a primary computer to a secondary computer |
CN104025065B (zh) * | 2011-12-21 | 2018-04-06 | 英特尔公司 | 用于存储器层次察觉的生产者‑消费者指令的装置和方法 |
US9171348B2 (en) * | 2012-01-23 | 2015-10-27 | Google Inc. | Rendering content on computing systems |
ITRM20120094A1 (it) * | 2012-03-14 | 2013-09-14 | Istituto Naz Di Fisica Nuclea Re | Scheda di interfaccia di rete per nodo di rete di calcolo parallelo su gpu, e relativo metodo di comunicazione internodale |
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 |
US9582402B2 (en) | 2013-05-01 | 2017-02-28 | Advanced Micro Devices, Inc. | Remote task queuing by networked computing devices |
US10134102B2 (en) * | 2013-06-10 | 2018-11-20 | Sony Interactive Entertainment Inc. | Graphics processing hardware for using compute shaders as front end for vertex shaders |
WO2015130282A1 (en) * | 2014-02-27 | 2015-09-03 | Hewlett-Packard Development Company, L. P. | Communication between integrated graphics processing units |
US10218645B2 (en) * | 2014-04-08 | 2019-02-26 | Mellanox Technologies, Ltd. | Low-latency processing in a network node |
US10331595B2 (en) * | 2014-10-23 | 2019-06-25 | Mellanox Technologies, Ltd. | Collaborative hardware interaction by multiple entities using a shared queue |
US9582463B2 (en) | 2014-12-09 | 2017-02-28 | Intel Corporation | Heterogeneous input/output (I/O) using remote direct memory access (RDMA) and active message |
US9779466B2 (en) * | 2015-05-07 | 2017-10-03 | Microsoft Technology Licensing, Llc | GPU operation |
US10248610B2 (en) * | 2015-06-23 | 2019-04-02 | Mellanox Technologies, Ltd. | Enforcing transaction order in peer-to-peer interactions |
US10445850B2 (en) * | 2015-08-26 | 2019-10-15 | Intel Corporation | Technologies for offloading network packet processing to a GPU |
US10210593B2 (en) * | 2016-01-28 | 2019-02-19 | Qualcomm Incorporated | Adaptive context switching |
US10331590B2 (en) * | 2016-06-30 | 2019-06-25 | Intel Corporation | Graphics processing unit (GPU) as a programmable packet transfer mechanism |
US10410313B2 (en) * | 2016-08-05 | 2019-09-10 | Qualcomm Incorporated | Dynamic foveation adjustment |
-
2016
- 2016-10-18 US US15/297,079 patent/US10936533B2/en active Active
-
2017
- 2017-09-19 JP JP2019517022A patent/JP6961686B2/ja active Active
- 2017-09-19 EP EP17862965.5A patent/EP3529706B1/en active Active
- 2017-09-19 WO PCT/US2017/052250 patent/WO2018075182A1/en unknown
- 2017-09-19 KR KR1020197007796A patent/KR102245247B1/ko active IP Right Grant
- 2017-09-19 CN CN201780056487.7A patent/CN109690512B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007316859A (ja) * | 2006-05-24 | 2007-12-06 | Sony Computer Entertainment Inc | マルチグラフィックスプロセッサシステム、グラフィックスプロセッサおよびデータ転送方法 |
US8131814B1 (en) * | 2008-07-11 | 2012-03-06 | Hewlett-Packard Development Company, L.P. | Dynamic pinning remote direct memory access |
CN101539902A (zh) * | 2009-05-05 | 2009-09-23 | 中国科学院计算技术研究所 | 多计算机系统中节点的dma设备及通信方法 |
CN102804156A (zh) * | 2009-06-17 | 2012-11-28 | 超威半导体公司 | 动态随机存取存储器通道控制器的并行训练 |
Also Published As
Publication number | Publication date |
---|---|
EP3529706A4 (en) | 2020-03-25 |
EP3529706B1 (en) | 2023-03-22 |
EP3529706A1 (en) | 2019-08-28 |
JP6961686B2 (ja) | 2021-11-05 |
US10936533B2 (en) | 2021-03-02 |
US20180107627A1 (en) | 2018-04-19 |
KR20190058483A (ko) | 2019-05-29 |
CN109690512A (zh) | 2019-04-26 |
WO2018075182A1 (en) | 2018-04-26 |
KR102245247B1 (ko) | 2021-04-27 |
JP2019532427A (ja) | 2019-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109690512B (zh) | 具有触发操作的gpu远程通信 | |
US11249647B2 (en) | Suspend, restart and resume to update storage virtualization at a peripheral device | |
CN107077441B (zh) | 用于提供使用rdma和主动消息的异构i/o的方法和装置 | |
US9582402B2 (en) | Remote task queuing by networked computing devices | |
US9881680B2 (en) | Multi-host power controller (MHPC) of a flash-memory-based storage device | |
CN110119304B (zh) | 一种中断处理方法、装置及服务器 | |
CN115934625B (zh) | 一种用于远程直接内存访问的敲门铃方法、设备及介质 | |
KR20190098146A (ko) | 바이트 어드레스 지정 가능한 메모리로서 비-휘발성 메모리에 액세스하는 방법 및 장치 | |
JP2021530022A (ja) | Gpu主導の通信のためのネットワークパケットテンプレーティング | |
US10534737B2 (en) | Accelerating distributed stream processing | |
CN106933646B (zh) | 一种创建虚拟机的方法及装置 | |
CN111857546A (zh) | 用于处理数据的方法、网络适配器和计算机程序产品 | |
US10284501B2 (en) | Technologies for multi-core wireless network data transmission | |
WO2017011021A1 (en) | Systems and methods facilitating reduced latency via stashing in systems on chips | |
US11552899B2 (en) | Automatic scaling for consumer servers in a data processing system | |
US10951537B1 (en) | Adjustable receive queue for processing packets in a network device | |
US10459776B2 (en) | Transmission of large messages in computer systems | |
US9880748B2 (en) | Bifurcated memory management for memory elements | |
CN114610661B (zh) | 数据处理装置、方法和电子设备 | |
US20240111705A1 (en) | System and method for supporting communications between management controllers and devices | |
KR20240041971A (ko) | 다양한 전력 상태를 갖는 디바이스에 대한 계층적 상태 저장 및 복원 | |
CN115297169A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |