CN114902181A - Gpu包聚合系统 - Google Patents
Gpu包聚合系统 Download PDFInfo
- Publication number
- CN114902181A CN114902181A CN202080085569.6A CN202080085569A CN114902181A CN 114902181 A CN114902181 A CN 114902181A CN 202080085569 A CN202080085569 A CN 202080085569A CN 114902181 A CN114902181 A CN 114902181A
- Authority
- CN
- China
- Prior art keywords
- packet
- output
- input
- input packet
- gpu
- 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
Links
- 238000012545 processing Methods 0.000 title claims abstract description 28
- 230000002776 aggregation Effects 0.000 title claims description 14
- 238000004220 aggregation Methods 0.000 title claims description 14
- 230000004044 response Effects 0.000 claims abstract description 63
- 239000000872 buffer Substances 0.000 claims abstract description 39
- 230000005540 biological transmission Effects 0.000 claims abstract description 24
- 238000000034 method Methods 0.000 claims description 47
- 238000001514 detection method Methods 0.000 claims description 21
- 230000004931 aggregating effect Effects 0.000 claims description 10
- 238000004891 communication Methods 0.000 description 14
- 230000008901 benefit Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 5
- 238000009877 rendering Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000008569 process Effects 0.000 description 1
Images
Classifications
-
- 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
-
- 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/17337—Direct connection machines, e.g. completely connected computers, point to point communication networks
-
- 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
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/625—Queue scheduling characterised by scheduling criteria for service slots or service orders
- H04L47/6255—Queue scheduling characterised by scheduling criteria for service slots or service orders queue load conditions, e.g. longest queue first
-
- 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/9057—Arrangements for supporting packet reassembly or resequencing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2212/00—Encapsulation of packets
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
图形处理单元(GPU)[100]包括自动聚合来自输入包[130]的数据的包管理组件[104]。响应于确定接收的第一输入包不指示发送条件,并且响应于确定生成的输出包[132]将小于输出大小阈值,包管理组件聚合对应于第一输入包的数据与对应于存储在包缓冲区处的第二输入包的数据。响应于确定接收的第三输入包指示发送条件,包管理组件将所述聚合数据在输出包中发送到计算单元并执行由所述发送条件指示的操作。
Description
背景技术
处理器通常采用称为计算单元(CU)的多个模块来并行执行操作。例如,处理器采用图形处理单元(GPU)来执行各种图像处理或其他通用处理应用程序。为了支持这些操作的高效执行,GPU包括并行执行操作的多个CU。然而,在某些情况下,用于执行这些操作的数据通信会影响处理器的整体效率。例如,在某些情况下,图形和矢量处理操作的索引通过诸如总线的通信结构发送到CU。在某些情况下,支持这些数据传输的通信流量消耗了通信结构的可用带宽的不期望的大部分,因此会降低GPU的整体处理效率。
附图说明
通过参考附图,更好地理解本公开,并且使得本领域技术人员容易明白其许多特征和优点。在不同附图中使用相同附图标记指示类似或相同项。
图1是根据一些实施方案的包括自动聚合来自输入包的数据的硬件的图形处理单元的框图。
图2是示出根据一些实施方案的聚合来自输入包的数据的方法的流程图。
图3是示出根据一些实施方案的处理输入和输出包的示例性时间线的示例性包管理组件的框图。
图4是示出根据一些实施方案的聚合来自输入包的索引并在输出包中发送所述索引的示例性包管理组件的框图。
具体实施方式
如本文所述,在各种实施方案中,响应于检测到输出波前将小于输出大小阈值,诸如图形处理单元(GPU)的处理单元的包聚合系统的包管理组件聚合来自传入包的数据。响应于检测到发送条件(例如,传入包指示上下文切换或数据已在包管理组件处存储或保持特定时间量)或其他输出条件,包管理组件将聚合数据作为波前输出。因此,与未聚合数据的系统相比,通信基础设施的使用效率更高。此外,在某些情况下,由于输入包的数量以及由于软件处理导致的时滞,软件系统(例如,驱动程序)难以及时检测到输出条件。在所描述的实施方案中,由于所描述的系统在接收到输入包时在硬件级检测输出条件,因此与软件驱动程序聚合数据的系统相比,所述系统更容易检测输出条件。
举例而言,GPU和其他多线程处理单元通常实施同时在多个数据集上执行指令或操作的集合的多个处理元件(也称为处理器核心或计算单元)。指令或操作的集合称为线程。线程的操作和程序数据由命令处理器经由称为包的通信发送到处理元件。在一些实施方案中,诸如图形系统,包是被称为波前的图形数据的集合。
在某些情况下,波前(或其他包)的通信是硬件效率低下的。例如,如果程序需要各自仅有几个索引(例如,一个或五个索引)的大量波前(例如,绘制),则生成的波前将各自低效地利用被设计为发送包括更多索引的波前的通信基础设施(例如,32-宽的基础设施或256-宽的通信基础设施)。在各种实施方案中,索引是指由用户生成的提供顶点坐标位置的值。在某些情况下,传入包包括的数据多于单个波前中可传送的数据,但没有足够的数据用于基于所述包生成的最后一个波前来有效使用通信基础设施。此外,在使用软件驱动程序来聚合波前数据的一些情况下,由于波前的数量,软件难以检测输出条件(例如,寄存器状态更新、流水线刷新或上下文切换)。
图1是根据一些实施方案的包括自动聚合来自输入包的数据的硬件的图形处理单元(GPU)100的框图。在所示实施方案中,GPU 100包括命令处理器102、包管理组件104和计算单元106。包管理组件104包括包缓冲区110、包聚合组件112和输出条件检测组件114。输出条件检测组件114包括发送条件检测组件120和超时检测组件122。然而,在其他实施方案中,可以设想其他结构布置(例如,额外的组件或更少的组件)。例如,在一些实施方案中,发送条件检测组件120包括超时检测组件122。在其他实施方案中,超时检测组件122与输出条件检测组件114分开。此外,尽管出于清楚的原因仅示出了单个计算单元106,但在各种实施方案中,GPU 100包括多个计算单元。
在一些实施方案中,GPU 100是诸如台式或膝上型计算机、服务器、智能手机、平板电脑、游戏控制台或其他电子装置之类的装置的一部分。该装置包括向GPU 100发送各种命令或指令(例如,绘制命令)的中央处理单元(CPU)。
在所示实施方案中,GPU 100执行各种操作。这些操作包括要求处理数据的程序调用。结果,命令处理器102将各种输入包130发送到包管理组件104,其中输入包基于程序调用指示来自GPU 100的各种命令集。在各种实施方案中,输入包130包括各种类型的数据,其包括绘制索引或对发送条件的指示(例如,对将导致包管理组件104将数据输出到一个或多个计算单元的事件的指示)。在一些实施方案中,输入包130在一段时间内被按顺序发送。包管理组件基于来自输入包130的数据生成输出包132。响应于输出包小于输出大小阈值(例如,因为输入包包括的数据少于用于生成具有输出大小阈值的包的量,或者因为输入包包括足够的数据以致多个输出包生成并且最后一个输出包将小于输出大小阈值),包管理组件104保存并聚合对应于输入包130中的一个或多个输入包的数据,并将聚合数据作为输出包132输出到一个或多个计算单元,诸如计算单元106。在一些实施方案中,输出包132被发送到多个计算单元中的每一个,或者不同的输出包被发送到相应的计算单元。在一些实施方案中,发送聚合输出包就好像它是包括在聚合输出包中的第一个接收的输入包(例如,包括与第一个接收的输入包相对应的各种报头和其他数据)。在其他实施方案中,发送聚合输出包就好像它是不同的接收的输入包,聚合输出包指示多个接收的输入包,或者聚合输出包指示没有任何接收的输入包。
更具体地,响应于接收到一个或多个输入包130,包管理组件104分析所接收的输入包。响应于基于发送条件检测组件120检测到输入包不指示发送条件,包管理组件104使用包聚合组件112在包缓冲区110中聚合对应于输入包的数据。例如,包聚合组件112将对应于传入输入包的数据与先前存储在包缓冲区110中的数据进行聚合。在一些实施方案中,数据是整个输入包。在其他实施方案中,数据是输入包的一部分、由输入包指示的数据(例如,作为由输入包指示的一个或多个计算的结果而生成的数据),或两者。响应于使用发送条件检测组件120检测到输入包指示发送条件,包管理组件104将聚合数据在输出包132中发送到一个或多个计算单元诸如计算单元106。因此,与针对每个输入包发送输出包的系统相比,更少的输出包132被发送到计算单元106。在一些实施方案中,输入包130是绘制命令的索引,并且输出包132是包括对应于输入包130中的多个输入包的索引的波前。在一些实施方案中,发送条件检测组件120仅响应于检测到输出包将小于输出大小阈值来确定输入包是否指示发送条件。在其他实施方案中,发送条件检测组件120与检测输出包是否将小于输出大小阈值并行地检测各种发送条件。
设想了导致包管理组件104将输出包132发送到计算单元106的各种输出条件。在一些实施方案中,输出条件包括发送条件(例如,由传入包指示的条件)、超时条件和大小条件。因此,输出条件检测组件114包括各种硬件,诸如缓冲区和读使能逻辑件以检测各种输出条件。在所示实施方案中,一些输出条件是由输入包130中的输入包指示的发送条件。举几个示例,在某些情况下,输入包的状态信息指示寄存器状态更新(例如,指定绘制拓扑、控制绘制工作负载的分布或指定索引类型的位数的包)或事件(例如,流水线刷新(流水线中的指令被移除的过程,例如,由于不正确的分支预测)或上下文切换(两个应用程序、任务或程序之间的切换))。此外,在某些情况下,输出条件包括改变绘制源(例如,从直接存储器访问到自动索引,反之亦然)、改变虚拟现实控制字段或改变绘制之间的索引大小。然而,也设想其他输出条件,包括通过各种其他方式检测到的那些。
在一些情况下,输出条件包括超时检测组件122指示超时检测组件122的包存储计时器超过超时阈值。例如,在一些实施方案中,包存储计时器跟踪至少一些数据已经存储在包缓冲区110处的时间量(例如,存储时间最长的数据)。响应于该时间量超过超时阈值(例如,50个时钟周期或1微秒),超时检测组件122指示输出条件。在某些情况下,超时阈值是用户指定的。在其他情况下,超时阈值由另一个实体指定,诸如在GPU 100上运行的应用程序。
在一些情况下,在包缓冲区110处存储或以其他方式保持的数据超过了包管理组件104和计算单元106之间的通信基础设施的容量。因此,输出包可以有效地利用通信基础设施。因此,在一些实施方案中,输出条件包括确定存储在包缓冲区110处的聚合数据的量超过输出大小阈值。在一些实施方案中,输出大小阈值是用户指定的。在一些实施方案中,输出大小阈值对应于用于将输出包132发送到计算单元106的通信基础设施的大小。举例而言,如果通信基础设施是32-宽的,则检测到包缓冲区存储多于31个索引会导致输出条件检测组件114指示输出条件得到满足。
设想了聚合输入包130的数据的各种方式。例如,在一个实施方案中,包聚合组件112使包缓冲区110存储由相应定界符分隔的输入包130的数据。作为另一个示例,在另一个实施方案中,聚合输入包130的数据包括更新存储在包缓冲区110中的头文件以指示对应于输入包130中的各个输入包的地址。在一些实施方案中,输入包130整体被存储或以其他方式保持在包缓冲区110中。在其他实施方案中,输入包130的仅一部分被存储或以其他方式保持在包缓冲区110中。
因此,公开了一种系统,其中包(例如,绘制索引)由硬件组件自动聚合(例如,没有关于包的特定软件指令)。在一些实施方案中,系统在没有软件管理的情况下对包进行聚合。此外,系统检测各种输出条件(例如,寄存器状态更新和事件)并响应于输出条件发送聚合包。通过自动检测输出条件,系统支持高效的包聚合,无需软件干预或重新设计遗产软件。
图2是示出根据一些实施方案的聚合来自输入包的数据的方法200的流程图。在一些实施方案中,方法200由图1的GPU 100的包管理组件104实施。在一些实施方案中,方法200由一个或多个处理器响应于由计算机可读存储介质存储的一个或多个指令而启动。
在202处,方法200包括从命令处理器接收输入包。例如,在某些情况下,包管理组件104从命令处理器102接收输入包130。
在204处,方法200包括确定输入包是否指示发送条件。例如,在一些情况下,包管理组件104确定所接收的输入包130是否指示(例如,经由状态信息)发送条件(例如,寄存器状态更新或事件)。响应于确定输入包指示发送条件,方法200进行到216。响应于确定输入包不指示发送条件,方法200进行到206。
在206处,响应于确定输入包不指示发送条件,方法200包括确定输出包是否打开。例如,在一些情况下,包管理组件104确定包缓冲区110是否包括打开的输出包。响应于确定输出包打开,方法200进行到210。响应于确定没有输出包打开,方法200进行到208。
在208处,响应于确定没有输出包打开,方法200包括创建新的输出包。例如,在一些情况下,包管理组件104在包缓冲区110中创建新的输出包。
在210处,响应于确定输出包打开或在创建新输出包之后,方法200包括将输入包的内容添加到输出包。例如,在一些情况下,包管理组件104在包缓冲区110中将对应于输入包130的数据与对应于一个或多个先前存储或以其他方式保持的输入包的数据聚合。作为另一示例,在一些情况下,包管理组件104将对应于输入包130的数据添加到包缓冲区110中新创建的输出包。
在212处,在将输入包内容添加到输出包之后或响应于没有对传入输入包的指示,方法200包括确定是否满足超时条件。例如,在一些情况下,超时检测组件122检查超时存储跟踪器,该跟踪器指示输出包的至少一部分已经被存储或以其他方式保持在包缓冲区110中的时间量。响应于超时存储跟踪器超过超时阈值,超时检测组件122确定满足超时条件。响应于确定满足超时条件,方法200进行到216。响应于超时存储跟踪器未超过超时阈值,超时检测组件122确定不满足超时条件。响应于确定不满足超时条件,方法200进行到214。在一些实施方案中,212进一步包括确定输出包的大小是否超过输出大小阈值,并且响应于确定输出包的大小超过输出大小阈值,进行到216。在一些实施方案中,确定输出包的大小超过输出大小阈值并进行到216是在方法200的其他部分中附加地或替代地执行,包括例如在202和204之间。
在214处,响应于确定不满足超时条件或在发送输出包并执行发送条件(如果指示一个发送条件)之后,方法200包括确定是否指示传入输入包。例如,在一些情况下,包管理组件104确定命令处理器102是否正在发送输入包。响应于检测到传入输入包,方法200进行到202。响应于未检测到输入包,方法200进行到212。
在216处,响应于确定输入包指示发送条件或响应于确定满足超时条件,方法200包括将输出包发送到计算单元。例如,在一些情况下,响应于输入包130指示发送条件,包管理组件104关闭输出包并将输出包作为输出包132发送到计算单元106。作为另一示例,在一些情况下,响应于超时检测组件122检测到满足超时条件,包管理组件104关闭输出包并将输出包作为输出包132发送到计算单元106。
在218处,在将输出包发送到计算单元106之后,方法200包括执行发送条件(如果指示发送条件的话)(例如,在204处)。例如,响应于输入包130指示发送条件,包管理组件104将输出包132发送到计算单元106并然后执行所指示的发送条件。因此,描述了一种聚合来自输入包的数据的方法。
图3是描绘时间线300的框图,该时间线示出根据一些实施方案的处理输入和输出包的示例性包管理组件。在所示示例中,输入包302-312和316接收在包管理组件(例如,包管理组件104)处。此外,在包管理组件处检测到事件314。
举例而言,响应于接收到输入包302,创建新的输出包并将由输入包302指示的绘制数据(draw1)添加到所述输出包。响应于接收到输入包304和306,由输入包304和306指示的绘制数据(draw2和draw3)与由输入包302指示的绘制数据聚合。输入包308指示上下文切换(发送条件)。在所示示例中,输入包308指示输入包302-306对应于与随后接收的输入包310和312不同的上下文。因此,响应于检测到发送条件,发送包括由输入包302-306指示的绘制数据的输出包,然后执行上下文切换。响应于接收到输入包310,创建新的输出包并将由输入包310指示的绘制数据(draw4)添加到所述输出包。响应于接收到输入包312,将由输入包312指示的绘制数据(draw5)添加到所述输出包。在所示示例中,在314处,超时检测组件检测到包存储计时器指示输出包中的至少一部分数据(例如,由输入包310指示的绘制数据)已被存储超过超时阈值。因此,在事件314处,满足超时条件并且发送包括由输入包310和312指示的绘制数据的输出包。响应于接收到输入包316,创建新的输出包并将由输入包316指示的绘制数据(draw6)添加到所述输出包。因此,示出了输入和输出包的示例性时间线300。
图4是示出根据一些实施方案的包括包管理组件104的示例性GPU 400的框图,所述包管理组件包括包缓冲区110。在该示例中,包管理组件104在包缓冲区110中聚合来自输入包402-406的索引410-414。结果,索引410-414被聚合并一起存储在包缓冲区110中。在该示例中,响应于来自输入包408的寄存器状态更新指示416,包管理组件104在输出包420中发送索引410-414。在一些实施方案中,输入包402-408对应于图1的输入包130并且输出包420对应于图1的输出包132。
如本文所公开的,在一些实施方案中,一种方法包括:由包管理组件从图形处理单元(GPU)的命令处理器接收指示第一组命令的第一输入包;响应于确定第一输入包不指示发送条件,将对应于第一输入包的数据与存储在包管理组件的包缓冲区处的先前接收的包数据自动聚合。在一个方面,该方法包括接收指示从GPU接收的第二组命令的第二输入包;响应于确定第二输入包指示发送条件,将聚合数据在输出包中发送到计算单元;并执行由发送条件指示的操作。在另一方面,所述第一输入包包括第一多个绘制索引,所述先前接收的包数据包括第二多个绘制索引,并且所述聚合数据包括所述第一多个绘制索引和所述第二多个绘制索引。
在一个方面,所述输出包是包括将由所述GPU的所述计算单元执行的一组操作的波前。在另一方面,所述第二输入包指示寄存器状态更新、上下文切换或流水线刷新中的至少一者。在另一方面,该方法包括:在执行操作之后,接收指示从GPU接收的第三组命令的第三输入包;将对应于第三输入包的数据存储在包缓冲区处;并且响应于检测到已经满足超时条件,将第三输入包在第二输出包中发送到计算单元。在又一方面,该方法包括:在执行操作之后,接收指示从GPU接收的第三组命令的第三输入包;将对应于第三输入包的数据存储在包缓冲区处;并且响应于检测到存储在包缓冲区处的第二聚合数据的量超过输出大小阈值,将第三输入包在第二输出包中发送到计算单元。在又一方面,输出大小阈值是用户可编程的。
在一些实施方案中,一种图形处理单元(GPU)包括:命令处理器,所述命令处理器被配置为发送指示从所述GPU接收的命令的输入包;包管理组件,所述包管理组件包括:包缓冲区,所述包缓冲区被配置为存储与从所述命令处理器接收的所述输入包相对应的数据;包聚合组件,所述包聚合组件被配置为:识别传入的第一输入包的状态信息;响应于指示所述状态信息聚合条件,将对应于所述第一输入包的数据与对应于存储在所述包缓冲区处的第二输入包的数据聚合;以及响应于所述状态信息指示发送条件,发送输出包以供计算单元处理,其中所述输出包包括存储在所述包缓冲区处的聚合数据。在一个方面,所述包聚合组件包括超时检测组件,所述超时检测组件被配置为响应于与所述第二输入包相对应的所述数据的至少一部分已经被存储的时间量超过超时阈值而使所述输出包被发送。在另一方面,超时阈值是用户指定的。
在一个方面,输出包是波前。在另一方面,所述聚合数据包括所述第一输入包的一部分和所述第二输入包的一部分。在另一方面,所述聚合数据包括所述第一输入包和所述第二输入包。
在一些实施方案中,一种方法包括:由包管理组件从命令处理器接收指示从图形处理单元(GPU)接收的第一组命令的第一输入包;将对应于第一输入包的数据存储在包管理组件的包缓冲区处;接收指示从GPU接收的第二组命令的第二输入包;响应于确定尚未满足输出条件,自动聚合对应于第二输入包的数据与对应于第一输入包的数据;并且响应于确定已经满足输出条件,将聚合数据在一个或多个输出包中发送到一个或多个计算单元。在一个方面,响应于确定存储在所述包缓冲区处的所述聚合数据的量超过输出大小阈值来执行确定已经满足所述输出条件。
在一个方面,确定已经满足所述输出条件包括确定第三输入包指示发送条件。在另一方面,该方法包括:响应于接收到所述第一输入包,在所述包管理组件的超时检测组件处起动包存储计时器。在一个方面,确定已经满足所述输出条件包括确定所述包存储计时器超过超时阈值。在另一方面,超时阈值是用户指定的。
在一些实施方案中,计算机可读存储介质包括在使用期间可由计算机系统访问以将指令和/或数据提供给计算机系统的任何非暂时性存储介质或非暂时性存储介质的组合。在各种实施方案中,此类存储介质包括但不限于光学介质(例如,压缩光盘(CD)、数字通用光盘(DVD)、蓝光光盘)、磁性介质(例如,软盘、磁带或磁性硬盘)、易失性存储器(例如,随机存取存储器(RAM)或高速缓存)、非易失性存储器(例如,只读存储器(ROM)或快闪存储器)或基于微机电系统(MEMS)的存储介质。在一些实施方案中,计算机可读存储介质嵌入在计算系统中(例如,系统RAM或ROM)、固定地附接到计算系统(例如,磁性硬盘驱动器)、可移除地附接到计算系统(例如,光盘或基于通用串行总线(USB)的快闪存储器),或者经由有线或无线网络耦合到计算机系统(例如,网络可访问存储装置(NAS))。
在一些实施方案中,上文所描述的技术的某些方面由执行软件的处理系统的一个或多个处理器实施。软件包括存储或以其他方式有形地体现在非暂时性计算机可读存储介质上的一个或多个可执行指令集。在一些实施方案中,软件包括在由一个或多个处理器执行时操纵一个或多个处理器来执行上文所描述的技术的一个或多个方面的指令和某些数据。例如,在一些情况下,非暂时性计算机可读存储介质包括磁盘或光盘存储装置、固态存储装置(诸如快闪存储器、高速缓存、随机存取存储器(RAM)或一个或多个其他非易失性存储器装置)等。在一些实施方案中,存储在非暂时性计算机可读存储介质上的可执行指令为源代码、汇编语言代码、对象代码或者由一个或多个处理器解译或可以其他方式执行的其他指令格式。
应注意,并不需要上文在一般描述中所描述的所有活动或元件,特定活动或装置的一部分是不需要的,并且进行一个或多个其他活动,或者包括除所述的那些元件之外的元件。此外,列出活动的顺序不一定是执行活动的顺序。另外,已经参考特定实施方案描述了各概念。然而,本领域普通技术人员应了解,在不脱离如所附权利要求书中所阐述的本公开范围的情况下,可作出各种修改和改变。因此,本说明书和附图将被视为说明性而非限制性的,并且所有此类修改都意图被包括在本公开的范围内。
上文已经参考具体实施方案描述了益处、其他优点以及问题的解决方案。然而,所述益处、优点、问题的解决方案以及使任何益处、优点或问题的解决方案出现或变得更突出的任何特征都不应被解释为是任何或所有权利要求的关键、必需或必要特征。此外,以上所公开的特定实施方案只是说明性的,因为所公开的主题可以按受益于本文教导的本领域的技术人员显而易知的不同但等效的方式来修改和实践。除了如所附权利要求中所描述的之外,并不意图限制本文所示的构造或设计的细节。因此,明显的是,上文所公开的特定实施方案可被更改或修改,并且所有此类变化都被认为是在所公开的主题的范围内。因此,本文所寻求的保护正如在所附权利要求书中阐述的那般。
Claims (20)
1.一种方法,其包括:
由包管理组件[104]从图形处理单元(GPU)[100]的命令处理器[102]接收指示第一组命令的第一输入包[404];
响应于确定所述第一输入包不指示发送条件,将对应于所述第一输入包的数据[412]与存储在所述包管理组件的包缓冲区[110]处的先前接收的包数据[410]自动聚合。
2.如权利要求1所述的方法,其还包括:
接收指示从所述GPU接收的第二组命令的第二输入包[416];
响应于确定所述第二输入包指示发送条件,将所述聚合数据在输出包中发送到计算单元;以及
执行由所述发送条件指示的操作。
3.如权利要求2所述的方法,其中所述第一输入包包括第一多个绘制索引,其中所述先前接收的包数据包括第二多个绘制索引,并且其中所述聚合数据包括所述第一多个绘制索引和所述第二多个绘制索引。
4.如权利要求2或权利要求3所述的方法,其中所述输出包是包括将由所述GPU的所述计算单元执行的一组操作的波前。
5.如权利要求2至4中任一项所述的方法,其中所述第二输入包指示寄存器状态更新、上下文切换或流水线刷新中的至少一者。
6.如权利要求2至5中任一项所述的方法,其还包括:
在执行所述操作之后,接收指示从所述GPU接收的第三组命令的第三输入包[406];
将对应于所述第三输入包的数据[414]存储在所述包缓冲区处;以及
响应于检测到已经满足超时条件,将所述第三输入包在第二输出包中发送到所述计算单元。
7.如权利要求2至5中任一项所述的方法,其还包括:
在执行所述操作之后,接收指示从所述GPU接收的第三组命令的第三输入包;
将对应于所述第三输入包的数据存储在所述包缓冲区处;以及
响应于检测到存储在所述包缓冲区处的第二聚合数据的量超过输出大小阈值,将所述第三输入包在第二输出包中发送到所述计算单元。
8.如权利要求7所述的方法,其中所述输出大小阈值是用户可编程的。
9.一种图形处理单元(GPU)[100],其包括:
命令处理器[102],所述命令处理器被配置为发送指示从所述GPU接收的命令的输入包[120];
包管理组件[104],所述包管理组件包括:
包缓冲区[110],所述包缓冲区被配置为存储与从所述命令处理器接收的所述输入包相对应的数据;
包聚合组件[112],所述包聚合组件被配置为:
识别传入的第一输入包的状态信息;
响应于所述状态信息指示聚合条件,将对应于所述第一输入包的数据与对应于存储在所述包缓冲区处的第二输入包的数据聚合;以及
响应于所述状态信息指示发送条件,发送输出包[132]以供计算单元处理,其中所述输出包包括存储在所述包缓冲区处的聚合数据。
10.如权利要求9所述的GPU,其中所述包聚合组件包括超时检测组件[122],所述超时检测组件被配置为响应于与所述第二输入包相对应的所述数据的至少一部分已经被存储的时间量超过超时阈值而使所述输出包被发送。
11.如权利要求10所述的GPU,其中所述超时阈值是用户指定的。
12.如权利要求9或权利要求10所述的GPU,其中所述输出包是波前。
13.如任何前述权利要求所述的GPU,其中所述聚合数据包括所述第一输入包的一部分和所述第二输入包的一部分。
14.如任何前述权利要求所述的GPU,其中所述聚合数据包括所述第一输入包和所述第二输入包。
15.一种方法,其包括:
由包管理组件[104]从命令处理器[102]接收指示从图形处理单元(GPU)[100]接收的第一组命令的第一输入包;
将对应于所述第一输入包的数据存储在所述包管理组件的包缓冲区[110]处;
接收指示从所述GPU接收的第二组命令的第二输入包;
响应于确定尚未满足输出条件,将对应于所述第二输入包的数据与对应于所述第一输入包的所述数据自动聚合;以及
响应于确定已满足输出条件,将所述聚合数据在一个或多个输出包中发送到一个或多个计算单元。
16.如权利要求15所述的方法,其中响应于确定存储在所述包缓冲区处的所述聚合数据的量超过输出大小阈值来执行确定已经满足所述输出条件。
17.如权利要求15或权利要求16所述的方法,其中确定已经满足所述输出条件包括确定第三输入包指示发送条件。
18.如任何前述权利要求所述的方法,其还包括:响应于接收到所述第一输入包,在所述包管理组件的超时检测组件处起动包存储计时器。
19.如权利要求18所述的方法,其中确定已经满足所述输出条件包括确定所述包存储计时器超过超时阈值。
20.如权利要求19所述的方法,其中所述超时阈值是用户指定的。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/713,472 | 2019-12-13 | ||
US16/713,472 US11210757B2 (en) | 2019-12-13 | 2019-12-13 | GPU packet aggregation system |
PCT/US2020/063923 WO2021119072A1 (en) | 2019-12-13 | 2020-12-09 | Gpu packet aggregation system |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114902181A true CN114902181A (zh) | 2022-08-12 |
Family
ID=76316977
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080085569.6A Pending CN114902181A (zh) | 2019-12-13 | 2020-12-09 | Gpu包聚合系统 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11210757B2 (zh) |
EP (1) | EP4073639A4 (zh) |
JP (1) | JP2023505783A (zh) |
KR (1) | KR20220113710A (zh) |
CN (1) | CN114902181A (zh) |
WO (1) | WO2021119072A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210117202A1 (en) * | 2020-12-03 | 2021-04-22 | Intel Corporation | Methods and apparatus to generate graphics processing unit long instruction traces |
CN113626369B (zh) * | 2021-08-14 | 2023-05-26 | 苏州浪潮智能科技有限公司 | 一种多节点集群环形通信的方法、装置、设备及可读介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7209139B1 (en) * | 2005-01-07 | 2007-04-24 | Electronic Arts | Efficient rendering of similar objects in a three-dimensional graphics engine |
CN101471826A (zh) * | 2007-12-27 | 2009-07-01 | 华为技术有限公司 | 命令行接口的测试方法及装置 |
US7839876B1 (en) * | 2006-01-25 | 2010-11-23 | Marvell International Ltd. | Packet aggregation |
CN102323917A (zh) * | 2011-09-06 | 2012-01-18 | 中国人民解放军国防科学技术大学 | 一种基于共享内存实现多进程共享gpu的方法 |
CN103003838A (zh) * | 2010-07-19 | 2013-03-27 | 超威半导体公司 | 在多处理单元中使用片上存储器的数据处理 |
US20130162661A1 (en) * | 2011-12-21 | 2013-06-27 | Nvidia Corporation | System and method for long running compute using buffers as timeslices |
US20160283416A1 (en) * | 2015-03-23 | 2016-09-29 | Samsung Electronics Co., Ltd. | Bus interface device, semiconductor integrated circuit device including the same, and method of operating the same |
US20160379336A1 (en) * | 2015-04-01 | 2016-12-29 | Mediatek Inc. | Methods of a graphics-processing unit for tile-based rendering of a display area and graphics-processing apparatus |
CN109643460A (zh) * | 2016-08-29 | 2019-04-16 | 超威半导体公司 | 使用推迟图元批量合并和分类的混合渲染器 |
CN110223216A (zh) * | 2019-06-11 | 2019-09-10 | 西安博图希电子科技有限公司 | 一种基于并行plb的数据处理方法、装置及计算机存储介质 |
CN110415161A (zh) * | 2019-07-19 | 2019-11-05 | 龙芯中科技术有限公司 | 图形处理方法、装置、设备及存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005053216A2 (en) * | 2003-11-25 | 2005-06-09 | Dg2L Technologies | Methods and systems for reliable distribution of media over a network |
US8374986B2 (en) | 2008-05-15 | 2013-02-12 | Exegy Incorporated | Method and system for accelerated stream processing |
US20130155077A1 (en) * | 2011-12-14 | 2013-06-20 | Advanced Micro Devices, Inc. | Policies for Shader Resource Allocation in a Shader Core |
US9509616B1 (en) * | 2014-11-24 | 2016-11-29 | Amazon Technologies, Inc. | Congestion sensitive path-balancing |
US10320695B2 (en) | 2015-05-29 | 2019-06-11 | Advanced Micro Devices, Inc. | Message aggregation, combining and compression for efficient data communications in GPU-based clusters |
US20170300361A1 (en) * | 2016-04-15 | 2017-10-19 | Intel Corporation | Employing out of order queues for better gpu utilization |
US10572258B2 (en) * | 2017-04-01 | 2020-02-25 | Intel Corporation | Transitionary pre-emption for virtual reality related contexts |
-
2019
- 2019-12-13 US US16/713,472 patent/US11210757B2/en active Active
-
2020
- 2020-12-09 WO PCT/US2020/063923 patent/WO2021119072A1/en unknown
- 2020-12-09 JP JP2022534186A patent/JP2023505783A/ja active Pending
- 2020-12-09 EP EP20899498.8A patent/EP4073639A4/en active Pending
- 2020-12-09 CN CN202080085569.6A patent/CN114902181A/zh active Pending
- 2020-12-09 KR KR1020227019998A patent/KR20220113710A/ko not_active Application Discontinuation
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7209139B1 (en) * | 2005-01-07 | 2007-04-24 | Electronic Arts | Efficient rendering of similar objects in a three-dimensional graphics engine |
US7839876B1 (en) * | 2006-01-25 | 2010-11-23 | Marvell International Ltd. | Packet aggregation |
CN101471826A (zh) * | 2007-12-27 | 2009-07-01 | 华为技术有限公司 | 命令行接口的测试方法及装置 |
CN103003838A (zh) * | 2010-07-19 | 2013-03-27 | 超威半导体公司 | 在多处理单元中使用片上存储器的数据处理 |
CN102323917A (zh) * | 2011-09-06 | 2012-01-18 | 中国人民解放军国防科学技术大学 | 一种基于共享内存实现多进程共享gpu的方法 |
US20130162661A1 (en) * | 2011-12-21 | 2013-06-27 | Nvidia Corporation | System and method for long running compute using buffers as timeslices |
US20160283416A1 (en) * | 2015-03-23 | 2016-09-29 | Samsung Electronics Co., Ltd. | Bus interface device, semiconductor integrated circuit device including the same, and method of operating the same |
US20160379336A1 (en) * | 2015-04-01 | 2016-12-29 | Mediatek Inc. | Methods of a graphics-processing unit for tile-based rendering of a display area and graphics-processing apparatus |
CN109643460A (zh) * | 2016-08-29 | 2019-04-16 | 超威半导体公司 | 使用推迟图元批量合并和分类的混合渲染器 |
CN110223216A (zh) * | 2019-06-11 | 2019-09-10 | 西安博图希电子科技有限公司 | 一种基于并行plb的数据处理方法、装置及计算机存储介质 |
CN110415161A (zh) * | 2019-07-19 | 2019-11-05 | 龙芯中科技术有限公司 | 图形处理方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
KR20220113710A (ko) | 2022-08-16 |
WO2021119072A1 (en) | 2021-06-17 |
EP4073639A1 (en) | 2022-10-19 |
EP4073639A4 (en) | 2024-01-10 |
JP2023505783A (ja) | 2023-02-13 |
US20210183004A1 (en) | 2021-06-17 |
US11210757B2 (en) | 2021-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11144323B2 (en) | Independent mapping of threads | |
US10198377B2 (en) | Virtual machine state replication using DMA write records | |
KR102506605B1 (ko) | 고성능 ssd들을 사용하여 롱 테일 레이턴시를 감소시키기 위한 랙-레벨의 스케줄링 | |
CN102866971B (zh) | 传输数据的装置、系统及方法 | |
CN107046508B (zh) | 报文接收方法及网络设备 | |
CN108647104B (zh) | 请求处理方法、服务器及计算机可读存储介质 | |
US10216517B2 (en) | Clearing specified blocks of main storage | |
US10896001B1 (en) | Notifications in integrated circuits | |
AU2020214661B2 (en) | Handling an input/output store instruction | |
CN114902181A (zh) | Gpu包聚合系统 | |
US20180329628A1 (en) | Memory transaction prioritization | |
EP3918474A1 (en) | Engine pre-emption and restoration | |
US20160128077A1 (en) | Packet drop based dynamic receive priority for network devices | |
CN104104705A (zh) | 分布式存储系统的接入方法和设备 | |
JP6614373B1 (ja) | 推論処理システム、推論処理装置及びプログラム | |
US11436123B2 (en) | Application execution path tracing for inline performance analysis | |
CN105808391A (zh) | 一种热替换cpu节点的方法及装置 | |
WO2014120222A1 (en) | Pausing virtual machines using api signaling | |
JP6653786B2 (ja) | I/o制御方法およびi/o制御システム | |
US11977907B2 (en) | Hybrid push and pull event source broker for serverless function scaling | |
US10545790B2 (en) | Method and system for processing data | |
EP4109255A1 (en) | Scheduling in a container orchestration system utilizing hardware topology hints | |
JP2013200805A (ja) | 信号振り分けシステム、信号振り分け方法及びコンピュータ・プログラム |
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 |