CN101025821B - 不对称多gpu处理 - Google Patents
不对称多gpu处理 Download PDFInfo
- Publication number
- CN101025821B CN101025821B CN200710080282.0A CN200710080282A CN101025821B CN 101025821 B CN101025821 B CN 101025821B CN 200710080282 A CN200710080282 A CN 200710080282A CN 101025821 B CN101025821 B CN 101025821B
- Authority
- CN
- China
- Prior art keywords
- media processor
- video data
- data frame
- buffer zone
- order
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 144
- 239000000872 buffer Substances 0.000 claims abstract description 135
- 238000012805 post-processing Methods 0.000 claims abstract description 14
- 238000000034 method Methods 0.000 claims description 49
- 230000005540 biological transmission Effects 0.000 claims 1
- 230000008901 benefit Effects 0.000 abstract description 4
- 230000008569 process Effects 0.000 description 22
- 238000004364 calculation method Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 9
- 230000001360 synchronised effect Effects 0.000 description 5
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000002708 enhancing effect Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000000007 visual effect 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
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Image Processing (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
本发明提供一种用于处理视频数据的系统,其包括:一主处理器;一第一媒体处理装置,其耦合到一第一缓冲区,所述第一媒体处理装置经配置以对一视频数据帧执行一第一处理任务;和一第二媒体处理装置,其耦合到一第二缓冲区,所述第二媒体处理装置经配置以对所述经处理的视频数据帧执行一第二处理任务。所述结构允许所述两个装置具有不对称的视频处理能力。因此,根据每个装置的各自能力,所述第一装置可有利地执行一第一任务(例如解码),而所述第二装置执行一第二任务(例如后处理),从而相对于现有技术系统来说增加了处理效率。另外,一个驱动程序可用于两个装置,使得应用程序能利用所述系统的加速处理能力而不需要代码变化。
Description
技术领域
本发明实施例一般来说涉及计算机图形,且更具体地说,涉及不对称多GPU处理。
背景技术
计算机图形图像数据通常在被显示于显示装置上之前经历若干处理步骤。每个处理步骤进一步细化图像数据,然而,每个处理步骤也增加了每个数据帧所需的处理时间。举例来说,典型的处理步骤包括二维(2-D)和三维(3-D)处理。一子组计算机图形数据是视频图像数据。同样可由若干处理步骤来处理视频图像数据。视频图像数据的一个实例是与数字视频光盘(DVD)有关的图像数据。
与典型的计算机图形图像数据不同,视频图像数据是以每秒六十帧显示的。因此,针对视频数据的视频图像处理程序的执行时间必须小于显示一个视频数据帧所需的时间(大约16.67毫秒)。如果处理一视频数据帧所需的时间大于显示一视频数据帧所需的时间,那么不能显示经处理的视频数据。而是,通常展示先前视频数据来代替当前视频数据。这种现象通常被称为“丢失(dropping)”视频帧,且是非常不合需要的,因为其导致不良视频质量。
图形处理单元(GPU)通常经配置以提供视频图像处理,在视频图像数据可被显示之前所述数据需要所述视频图像处理。举例来说,GPU可经配置以使用其3-D处理单元和2-D处理单元来处理视频图像数据。由于如上所述,显示帧速率限制了可用于处理每个帧的时间量,且由于每个视频图像处理任务增加了总处理时间,因而限制了可在单个GPU上执行的图像处理程序的数目和复杂性。加剧此问题的是这样一个事实,即高清晰度视频图像需要处理的像素比标准清晰度图像多出高达六倍。增加像素数增加了执行每个处理程序所需的时间量,从而进一步限制了单个GPU可在不丢失视频帧的情况向一图像数据帧施加的视频图像处理程序的数目。
减少总处理时间的一种方法是配置多个GPU来并行运作以处理单个视频帧。这种方法一般需要使用功能相同的GPU来同时处理一视频帧的不同部分,以增加视频处理系统的处理量。这种方法的一个缺点在于将GPU限制为功能相同的。举例来说,如果计算系统包括第一GPU,且用户想要添加第二GPU,除非用户添加与第一GPU功能相同的第二GPU,否则GPU不能像此方法预想的那样并行运作。
如前文说明,此项技术需要一种在不对视频处理系统施加此类不良设计限制的情况下增加视频处理量的方式。
发明内容
本发明一个实施例陈述一种用于处理视频数据的系统。所述系统包括主处理器和第一媒体处理装置,所述第一媒体处理装置耦合到第一缓冲区,其中所述第一缓冲区经配置以存储一视频数据帧,且所述第一媒体处理装置经配置以对所述视频数据帧执行第一处理任务。所述系统还包括第二媒体处理装置,其耦合到第二缓冲区,其中所述第二缓冲区经配置以存储所述经处理的视频数据帧,且所述第二媒体处理装置经配置以对所述经处理的视频数据帧执行第二处理任务。
所揭示的系统的一个优点在于可将整个视频处理划分成若干单独视频处理任务,其中所述第一媒体处理装置对所述视频数据帧执行一个视频处理任务(例如,解码),而第二媒体处理装置对所述视频数据帧执行另一视频处理任务(例如,后处理操作)。使用这种方法,可由媒体处理装置同时处理多个视频帧,从而相对于现有技术视频处理系统来说增加了总处理效率。
附图说明
为了能详细了解本发明的上述特征,可参考实施例来对上文简要概述的本发明作更具体的描述,在附图中说明某些实施例。然而,应注意到,附图只说明本发明的典型实施例,且因此不应认为附图限制本发明范围,因为本发明可允许其它同样有效的实施例。
图1是经配置以实施本发明一个或一个以上方面的计算装置的概念图;
图2是根据本发明一个实施例的图1计算装置的更详细图;
图3是根据本发明一个实施例说明软件驱动程序如何在第一GPU与第二GPU之间分配视频处理任务的概念图;
图4是根据本发明一个实施例的用于产生GPU命令缓冲区和界定缓冲区的方法步骤流程图;和
图5A和5B是根据本发明一个实施例的含有一命令序列的命令缓冲区的概念图,所述命令使第一GPU和第二GPU同步。
具体实施方式
本发明通过在两个或两个以上GPU之间分配各种图像处理任务而减少处理图像数据(例如视频图像数据)所需的总时间。软件驱动程序可经配置以通过将每个特定处理任务匹配到最适合所述任务的GPU来优化针对个别GPU的处理任务分配。
图1是经配置以实施本发明的一个或一个以上方面的计算装置100的概念图。所述计算装置100包括(但不限于)中央处理单元(CPU)102、系统存储器104、总线接口108、第一图形子系统110和第二图形子系统112。所述计算装置100可以是桌上型计算机、服务器、膝上型计算机、掌上型计算机、平板计算机、游戏控制台、蜂窝式电话、基于计算机的模拟器等。CPU102可用于执行软件程序(例如软件驱动程序106),所述软件驱动程序配置图形子系统110和112以处理图像数据。CPU102耦合到系统存储器104,所述系统存储器104可用于存储数据和程序(例如软件驱动程序106)。CPU102进一步耦合到系统接口108,所述系统接口108可以是桥接装置和/或输入/输出接口。所述系统接口108还耦合到第一图形子系统110和第二图形子系统112。
第一图形子系统110包括第一GPU120,其耦合到第一GPU存储器124,所述第一GPU存储器124经配置以存储图形程序、命令和图像数据。第一GPU120包括数字到模拟转换器(DAC)122。传统上,DAC用于将经模拟处理的图像数据从GPU传输到显示装置(例如VGA可行监视器)。用于传输经处理的图像数据的其它构件包括数字视频接口(DVI)和串行数字接口(SDI)。这些其它构件现通常包括在DAC内。显示装置耦合到DAC122(未图示)以用于在完成处理时显示视频图像。
第二图形子系统112包括第二GPU130,其耦合到第二GPU存储器134且包括DAC132。重要的是,此第二GPU130不必与第一GPU120功能相同,意味着所述两个GPU可具有不同的处理能力。另外,第二GPU存储器134不需要与第一GPU存储器124具有相同大小。下文结合图2更详细地描述第一GPU120与第二GPU130之间以及第一GPU存储器124与第二GPU存储器134之间的差异。然而,所属领域的技术人员将了解到,在特定实施例中,所述两个GPU可以是功能相同的且/或所述两个GPU存储器可以是大小相同的。
通常,在视频图像数据可被显示之前,对所述数据执行若干单独处理步骤。举例来说,视频图像数据在被显示之前可能需要解码且接着需要后处理(post processing)。在具有多个能够处理视频图像数据的GPU的系统(例如计算装置100)中,可由所述可用GPU中的一者(例如第二GPU130)内的视频处理功能单元提供用于解码视频图像数据的功能性。另一方面,另一可用GPU(例如第一GPU120)内的3-D功能单元可提供后处理功能性。例如解码和后处理的任务一般是独立的,且不需要同时发生。因此,如本文更详细描述,软件驱动程序106可利用特定计算装置中GPU的非对称性质,并设法将每个图像处理步骤分派给最适合所述特定步骤的GPU。
图2是根据本发明一个实施例的图1计算装置100的更详细图。具体地说,更详细地说明第一GPU120、第二GPU130、第一GPU存储器124和第二GPU存储器134。如图所示,第一GPU120包括(但不限于)主机接口202、高级3-D处理单元206、2-D处理单元208、存储器接口210和DAC122。主机接口202耦合到系统接口108,并实现将GPU指令和数据从CPU102传送到第一GPU120。高级3-D处理单元206为3-D图形图像数据的渲染和着色提供增强的3-D处理功能性(例如3-D加速)。此类3-D功能性可用于(例如)提供边缘增强和视频图像通常所需的其它类型的后处理。2-D处理单元208提供特定图形程序(例如电子表格)和文字处理程序所需的2-D处理功能性。此类2-D处理功能性也可用于视频图像处理来插入处理DVD数据时通常所需的小标题信息。存储器接口210将3-D处理单元206、2-D处理单元208和DAC122耦合到第一GPU存储器124。软件驱动程序106界定第一缓冲区212,所述第一缓冲区212是第一GPU存储器124中可存储用于第一GPU120的图像数据的区域。第一缓冲区212以第一存储器偏移量214定位,所述第一存储器偏移量214表示第一缓冲区212与任意基准偏移多远。在此示范性情况下,第一存储器偏移量214相对于第一GPU存储器124的“开始”来定位第一缓冲区212。在其它实施例中,可使用其它基准,例如第一GPU存储器124的“末端”。
如先前所述,第二GPU130不需要与第一GPU120具有相同功能能力。在此示范性情况下,第二GPU130包括主机接口204和2-D处理单元226,其类似于第一GPU120内的主机接口202和2-D处理单元208。然而,第二GPU130与第一GPU120的不同之处在于第二GPU130还包括视频处理单元222和基本3-D处理单元224。所述视频处理单元222提供增强的视频处理功能性(例如解码)。所述基本3-D处理单元224提供某种3-D加速功能性;然而,基本3-D处理单元224的3-D处理能力通常次于第一GPU120的高级3-D处理单元206的3-D处理能力。再次,存储器接口240将视频处理器222、基本3-D处理器224和2-D处理器226耦合到第二GPU存储器134。软件驱动程序106界定第二缓冲区242,所述第二缓冲区242是第二GPU存储器134内可存储用于第二GPU130的视频图像数据的区域。第二缓冲区242以一存储器偏移量244定位,所述存储器偏移量244表示所述第二缓冲区242与任意基准偏移多远。再次,在此示范性情况下,存储器偏移量244相对于第二GPU存储器134的“开始”来定位第二缓冲区242,但在其它实施例中,可使用其它基准,例如第二GPU存储器134的“末端”。
回到图1论述结束处陈述的实例,软件驱动程序106可经配置以识别处理视频图像数据需要执行的单独任务——此处是解码和后处理。软件驱动程序还可经配置以识别计算装置100内第一GPU120和第二GPU130中的每一者内包括的不同处理单元。由于可将整个视频处理划分成若干单独视频处理任务,因而软件驱动程序106可将解码和后处理任务分配给所述两个GPU,以使得将这些任务中的每一者分派给最适合特定任务的GPU。因此,在示范性情况下且仅出于论述目的,软件驱动程序106配置第二GPU130以在视频处理器222内执行视频解码任务,且配置第一GPU120以在高级3-D处理器206内执行视频后处理任务。
由于软件驱动程序106将视频图像数据处理分成若干单独处理任务,所述单独处理任务被匹配到最适合每个特定任务的GPU,因此软件驱动程序106可配置第一GPU120和第二GPU130以逐次执行所述单独视频处理任务。继续上文陈述的实例,在第二GPU130内开始视频图像处理,其中将一经编码的视频数据帧传输并存储到第二缓冲区242中。第二GPU130接着对所述视频数据帧执行解码操作以解码所述视频数据。当完成此任务时,将所述经解码的视频数据帧从第二缓冲区242传输到第一缓冲区212。接着,第一GPU120对所述经解码的视频数据帧执行后处理操作,以完成视频数据的处理。一旦完成了处理,就可将所述经处理的视频数据帧传输到显示装置以供显示。在此实施例中,因为在第二GPU130内完成与一特定视频数据帧有关的处理任务(例如解码),且接着将经处理的视频图像数据传输到第一GPU120以供进一步处理,所以可由第二GPU130解码另一视频数据帧且同时由第一GPU120对第一视频数据帧执行后处理操作。因此,计算装置100可经有利配置为以此串行形式来处理视频帧,以使得可由第一GPU120和第二GPU130同时处理多个视频数据帧。本文更详细描述一个GPU完成处理任务且另一GPU执行随后处理任务的过程。
图3是根据本发明一个实施例说明软件驱动程序106如何在第一GPU120与第二GPU130之间分配视频处理任务的概念图。如先前描述,软件驱动程序106经配置以将整个视频处理划分成若干单独视频处理任务,并将每个单独任务分派给最适合特定视频处理任务的GPU。接着由所分派的GPU对在与所述GPU相关联的缓冲区内的视频图像数据执行特定视频处理任务。
回到上文陈述的实例,软件驱动程序106将整个视频处理分成解码任务和后处理任务。软件驱动程序106配置第二GPU130以执行解码任务,因为第二GPU130包括最适合解码任务的视频处理单元222。再次,将一经编码的视频数据帧存储在第二缓冲区242中。这些步骤在图3中由元素302反映。软件驱动程序106还配置第二GPU130以将经解码的视频数据从第二缓冲区242传送到第一缓冲区212。在一个实施例中,通过此项技术中被称为直接存储器存取(DMA)复制操作的过程来传送视频数据。此类操作一般被称为“位块传送(blit)”,且以此形式,第二GPU130有效地将经解码的视频数据从第二缓冲区242“推”到第一缓冲区212。在所述两个缓冲区之间传送视频图像数据在图3中由元素304展示。如所属领域的技术人员将了解,支持不同存储器大小的一种方式是通过针对每个缓冲区的单独存储器偏移量。所述偏移量明确地将缓冲区定位在GPU存储器内,以使得可将视频数据准确地从第二缓冲区242传输到第一缓冲区212,且反之亦然。最后,软件驱动程序106配置第一GPU120以对所述经解码的视频数据帧执行后处理任务,如图3中元素306展示,这是由于第一GPU120包括高级3-D处理单元206,而高级3-D处理单元206是最适合后处理任务的处理单元。在对第一缓冲区212中的经解码的视频数据执行后处理任务之后,第一GPU120将所述经处理的视频图像数据帧传输到显示装置以供显示,如元素308展示。应注意到,由于第一GPU120含有DAC122,且DAC耦合到显示装置,因而视频图像数据在被传输到显示装置之前无需传输到不同的GPU存储器。
由于将整个视频处理划分成若干单独视频处理任务,因而可由第一GPU 120和第二GPU130同时处理多个视频帧。图3的上部分展示第二GPU130中的视频处理单元222正在执行针对帧n的解码任务。图3的中央部分展示第一GPU120中的高级3-D单元206正在执行针对前一视频数据帧(帧n-1)的后处理任务,且同时视频处理单元222正在对帧n执行解码任务。类似地,图3的下部分展示第一GPU120正将在前第二视频数据帧(帧n-2)传输到显示装置,而同时高级3-D单元206正在对帧n-1执行后处理任务且视频处理单元222正在对帧n执行解码任务。
为使第一GPU120和第二GPU130执行其各自视频处理任务,软件驱动程序106为每个GPU产生命令缓冲区,所述命令缓冲区配置所述GPU以对视频数据执行其分派到的视频处理任务。软件驱动程序106也为每个GPU界定缓冲区。图4是根据本发明一个实施例的用于产生GPU命令缓冲区和界定缓冲区的方法步骤流程图。所属领域的技术人员将认识到,任何经配置为以任何次序执行所述方法步骤的系统均属于本发明范围内。
方法在步骤402中开始,其中软件驱动程序106在GPU存储器中界定缓冲区域。因此,软件驱动程序106在第一GPU存储器124中界定第一缓冲区212且在第二GPU存储器134中界定第二缓冲区242。一般来说,每个单独视频处理任务是针对特定视频图像数据帧而执行的。所属领域的技术人员将理解,正被处理的视频数据不能由其它视频处理任务共享。因此,看情况而定,每个视频处理任务可能需要在第一GPU124或第二GPU存储器134内的单独缓冲区域。另外,如本文先前描述,第一缓冲区212和第二缓冲区242中的每一者可具有相关联的存储器偏移量(分别为偏移量214和244)以有助于将视频数据从一个缓冲区传送到另一个。所述方法继续执行步骤404,其中软件驱动程序106将待处理的视频图像数据帧放到所界定的缓冲区中的一者中。再次回到上文陈述的示范性情况,由于第一视频处理任务是解码(其正由第二GPU130执行),因而软件驱动程序106将一经编码的视频图像数据帧放在第二缓冲区242中。在步骤406中,软件驱动程序106为所述GPU产生命令缓冲区。命令缓冲区含有GPU指令,所述GPU指令尤其配置所述GPU以执行其各自视频处理任务。因此,软件驱动程序106产生用于第二GPU130的命令缓冲区,其包括解码所述视频数据帧所必需的指令,且产生用于第一GPU120的命令缓冲区,其包括对所述经解码的视频数据帧执行后处理操作所必需的指令。最后,在步骤408中,软件驱动程序106指导GPU执行其各自命令缓冲区。
当如上所述,由第二GPU130对第二缓冲区242内的一视频数据帧执行第一视频处理任务(例如,解码),且由第一GPU120对第一缓冲区212内的所述经处理的视频数据帧执行第二视频处理任务(例如,后处理)时,在第一GPU120开始对所述经处理的视频数据帧执行第二视频处理任务之前将所述经处理的视频数据帧从第二缓冲区242传送到第一缓冲区212。为了完成此处理序列,仅在第二GPU130向第一GPU120指示已完全将所述经处理的视频数据帧从第二缓冲区242传送到第一缓冲区212之后,第一GPU120才开始执行第二视频处理任务。下文结合图5A和5B来描述用于以此形式同步GPU的机制。
图5A和5B是根据本发明一个实施例的含有一命令序列的命令缓冲区的概念图,所述命令使第一GPU120和第二GPU130同步。图5A说明含有由第二GPU130执行的命令的命令缓冲区502。具体地说,命令缓冲区502内的命令使得第二GPU130处理第二缓冲区242内的一视频数据帧,将所述经处理的视频数据帧传送到第一缓冲区212,且释放一信号来使第一GPU120和第二GPU130同步。第一命令510表示配置第二GPU130以执行第一视频处理任务的所述一个或一个以上个别GPU命令。再次,在所述示范性情况下,此第一视频处理任务是解码任务。第二GPU130对存储在第二缓冲区242内的视频图像数据执行此视频处理任务。当完成了视频处理任务时,第二GPU130将经处理的视频数据从第二缓冲区242传送到第一缓冲区212,如命令512所示。释放信号命令514促使第二GPU130释放一信号。
软件驱动程序106使用信号来同步第一GPU120和第二GPU130,使得所述GPU能在第一缓冲区212和第二缓冲区242中执行单独视频处理任务。信号是指向系统存储器中特定地址的指针。信号可被释放或获取。当GPU执行释放信号命令时,GPU将特定值写入到与所述信号相关联的存储器位置中。当GPU执行获取信号命令时,GPU读取与所述信号相关联的存储器位置,且将所述存储器位置的值与所述获取信号命令中反映的值进行比较。所述两个值不匹配指示尚未释放与所述获取信号命令相关联的信号。如果不存在匹配,那么执行获取信号命令的GPU继续读取与所述信号相关联的存储器位置,直到找到匹配为止。因而,执行获取信号命令的GPU不执行命令缓冲区中包含的任何额外命令,直到找到匹配为止。举例来说,假设第一GPU针对于释放具有值42的信号,那么第二GPU就针对于获取具有值42的信号。第二GPU将继续读取与所述信号相关联的系统存储器位置,直到所述存储器位置具有值42为止。重要的是,第二GPU将在存储器位置具有值42时才执行下一个缓冲命令,且存储器将只在第一GPU释放具有值42的信号时才具有值42。
图5B是含有由第一GPU120执行的命令序列的命令缓冲区540的概念图。第一命令542指示第一GPU120获取由第二GPU130在执行命令缓冲区502期间释放的信号。第一GPU120不执行命令542以外的任何命令,直到获取所述信号为止。重要的是,由于第二GPU130在将视频数据帧从第二缓冲区242传送到第一缓冲区212之后才释放信号,因而第一GPU120在已完全将视频数据帧传送到第一缓冲区212之后才执行第二视频处理任务。在获取了信号之后,第一GPU120执行命令544中的所述一个或一个以上GPU命令,所述GPU命令配置第一GPU120以对传送到第一缓冲区212的视频数据帧执行第二视频处理任务。再次参看所述示范性情况,命令544中的所述一个或一个以上命令配置第一GPU120以对所述视频数据帧执行一个或一个以上后处理操作。
总之,鉴于所述示范性情况,软件驱动程序106将解码任务分派给第二GPU130,且将后处理任务分派给第一GPU120。对于第二GPU130来说,软件驱动程序106产生类似于命令缓冲区502的命令缓冲区。第二GPU130执行命令510以执行解码。第二GPU130执行命令512以将经解码的视频数据帧从第二缓冲区242传送到第一缓冲区212。最后,根据命令514,第二GPU130通过释放一信号来发信号通知第一GPU120关于解码已完成。对于第一GPU120来说,软件驱动程序106产生类似于命令缓冲区540的命令缓冲区。第一GPU120通过执行命令542来获取所释放的信号。第一GPU120接着通过执行命令544对第一缓冲区212中经解码的视频数据帧执行后处理操作。
本发明的一个优势在于图形子系统110和112可具有不同的视频和图形处理能力。软件驱动程序经配置以通过将单独视频处理任务匹配到最适合所述任务的GPU来利用不对称图形子系统和不对称GPU。此方法使得单独视频处理能由系统中的GPU逐次执行,此允许同时处理多个视频数据帧以增加处理量。同样,软件驱动程序106经配置以与具有不同大小的GPU存储器一起运作。支持不同存储器大小的一种方式是通过以特定偏移量来定位每个缓冲区,以有利于将视频数据从一个缓冲区传送到另一个。
本发明的另一优势在于由于可配置非对称GPU来共享视频处理任务,因而可更容易地升级计算装置。即使添加较小、能力较差的GPU也可减少总视频图像处理时间,尤其当额外GPU包括计算装置最初包括的GPU中所缺少的视频处理单元时。举例来说,如果计算装置包括不具有视频处理单元的GPU,那么简单地添加具有相对有限的功能性但包括视频处理单元的GPU可增加计算装置的视频处理量,因为所述两个GPU可经配置以一起运作以根据本文所述的本发明教示来处理视频数据。
尽管前文针对本发明的若干实施例,但在不偏离本发明基本范围的情况下可设计出本发明的其它和进一步的实施例。举例来说,可配置两个以上GPU来执行单独视频处理任务。另外,所分配的处理任务可不限于视频处理任务。举例来说,本发明的教示可应用于加速3-D渲染。在此情况下,软件驱动程序106可经配置以划分3-D渲染任务并根据GPU的个别处理能力而将所述任务分配到计算装置内的两个或两个以上GPU。在又一替代实施例中,第一GPU120和/或第二GPU130中的每一者可由具有经配置以并行运作处理单个视频帧的两个或两个以上GPU的子系统取代。此类子系统的结构在2005年11月4日申请的题为“Video Processing with Multiple Graphical Processing Units”且代理人案号为NVDA/P001732的第11/267,611号美国专利申请案中描述,所述专利申请案以引用的方式并入本文中。因此,由所附权利要求书确定本发明的范围。
Claims (20)
1.一种用于处理视频数据的系统,所述系统包含:
一主处理器;
一第一媒体处理装置,其耦合到一第一缓冲区,其中所述第一缓冲区经配置以存储一视频数据帧,且所述第一媒体处理装置经配置以对所述视频数据帧执行一第一处理任务;
一第二媒体处理装置,其耦合到一第二缓冲区,其中所述第二缓冲区经配置以存储经处理的视频数据帧,且所述第二媒体处理装置经配置以对所述经处理的视频数据帧执行一第二处理任务;和
一系统存储器,其存储一软件驱动程序,其中,通过利用所述软件驱动程序基于与所述第一媒体处理装置相关的第一处理能力来确定所述第一处理任务应该分配给所述第一媒体处理装置,并基于与所述第二媒体处理装置相关的第二处理能力来确定所述第二处理任务应该分配给所述第二媒体处理装置;通过利用所述软件驱动程序来产生一用于所述第一媒体处理装置的第一命令缓冲区和一用于所述第二媒体处理装置的第二命令缓冲区,其中所述第一命令缓冲区和所述第二命令缓冲区中的每一者包含复数个用于处理所述视频数据帧的命令;通过利用所述软件驱动程序基于所述复数个命令来确定将所述第一处理任务分配给所述第一媒体处理装置,并将所述第二处理任务分配给所述第二媒体处理装置。
2.根据权利要求1所述的系统,其中所述第一媒体处理装置和所述第二媒体处理装置不具有相同的视频处理能力或不具有相同的图形处理能力。
3.根据权利要求1所述的系统,其中存储在所述第一缓冲区中的所述视频数据帧是一经编码的视频数据帧,且所述第一处理任务包含解码所述视频数据帧。
4.根据权利要求3所述的系统,其中存储在所述第二缓冲区中的所述经处理的视频数据帧是所述经解码的视频数据帧,且所述第二处理任务包含一后处理操作。
5.根据权利要求1所述的系统,其进一步包含一系统接口,所述系统接口耦合到所述主处理器、所述第一媒体处理装置和所述第二媒体处理装置中的每一者且经配置以实现所述主处理器与所述第一媒体处理装置和所述第二媒体处理装置中每一者之间以及所述第一媒体处理装置与所述第二媒体处理装置之间的传输。
6.根据权利要求5所述的系统,其中所述系统接口包含一桥接装置。
7.根据权利要求1所述的系统,其中所述第一命令缓冲区包括一用于解码存储在所述第一缓冲区中的所述视频数据帧的命令、一用于将所述经解码的视频数据帧传送到所述第二缓冲区的命令和一用于向所述第二媒体处理装置释放一信号的命令。
8.根据权利要求7所述的系统,其中所述第二命令缓冲区包括一用于获取由所述第一媒体处理装置释放的所述信号的命令和一用于对存储在所述第二缓冲区中的所述经解码的视频数据帧执行一后处理操作的命令。
9.根据权利要求7所述的系统,其中所述用于将所述经解码的视频数据帧传送到所述第二缓冲区的命令包含一直接存储器存取命令。
10.根据权利要求9所述的系统,其中所述直接存储器存取命令包含一位块传送命令。
11.根据权利要求1所述的系统,其中所述第一缓冲区以一第一偏移量定位在一与所述第一媒体处理装置相关联的第一存储器内,且所述第二缓冲区以一第二偏移量定位在一与所述第二媒体处理装置相关联的第二存储器内。
12.一种用于处理视频数据的方法,所述方法包含:
基于与第一媒体处理装置相关的第一处理能力将第一处理任务分配给所述第一媒体处理装置,基于与第二媒体处理装置相关的第二处理能力将第二处理任务分配给所述第二媒体处理装置;
将一经编码的视频数据帧存储在一第一缓冲区中,所述第一缓冲区耦合到一第一媒体处理装置;
产生一用于所述第一媒体处理装置的第一命令缓冲区和一用于所述第二媒体处理装置的第二命令缓冲区的步骤,其中所述第一命令缓冲区和所述第二命令缓冲区中的每一者包含复数个用于处理所述视频数据帧的命令;
解码所述视频数据帧;
将所述经解码的视频数据帧传送到一第二缓冲区,所述第二缓冲区耦合到一第二媒体处理装置;和
对所述经解码的视频数据帧执行一后处理操作;
其中所述复数个命令经配置以确定将所述解码操作分配给所述第一媒体处理装置,并将所述后处理操作分配给所述第二媒体处理装置。
13.根据权利要求12所述的方法,其进一步包含将所述经处理的视频数据帧从所述第二缓冲区传送到一显示装置以供显示的步骤。
14.根据权利要求12所述的方法,其中所述第一命令缓冲区包括一用于解码存储在所述第一缓冲区中的所述经编码的视频数据帧的命令、一用于将所述经解码的视频数据帧传送到所述第二缓冲区的命令和一用于向所述第二媒体处理装置释放一信号的命令。
15.根据权利要求14所述的方法,其中所述第二命令缓冲区包括一用于获取由所述第一媒体处理装置释放的所述信号的命令和一用于对存储在所述第二缓冲区中的所述经解码的视频数据帧执行一后处理操作的命令。
16.一种用于处理视频数据的方法,所述方法包含:
基于与第一媒体处理装置相关的第一处理能力将第一处理任务分配给所述第一媒体处理装置,基于与第二媒体处理装置相关的第二处理能力将第二处理任务分配给所述第二媒体处理装置;
在一第一存储器中界定一第一缓冲区,所述第一缓冲区耦合到一第一媒体处理装置,其中所述第一缓冲区以一第一偏移量定位在所述第一存储器内;
在一第二存储器中界定一第二缓冲区,所述第二缓冲区耦合到一第二媒体处理装置,其中所述第二缓冲区以一第二偏移量定位在所述第二存储器内;
将一视频数据帧存储在所述第一缓冲区中;和
产生一用于所述第一媒体处理装置的第一命令缓冲区和一用于所述第二媒体处理装置的第二命令缓冲区,其中所述第一命令缓冲区和所述第二命令缓冲区中的每一者包含不同的复数个用于处理所述视频数据帧的命令;
其中所述复数个命令经配置以确定将第一处理任务分配给所述第一媒体处理装置,并将第二处理任务分配给所述第二媒体处理装置。
17.根据权利要求16所述的方法,其中存储在所述第一缓冲区中的所述视频数据帧包含一经编码的视频数据帧,且所述第一命令缓冲区包括一用于解码所述经编码的视频数据帧的命令、一用于将所述经解码的视频数据帧传送到所述第二缓冲区的命令和一用于向所述第二媒体处理装置释放一信号的命令。
18.根据权利要求17所述的方法,其中所述第二命令缓冲区包括一用于获取由所述第一媒体处理装置释放的所述信号的命令和一用于处理存储在所述第二缓冲区中的所述经解码的视频数据帧的命令。
19.根据权利要求17所述的方法,其中用于将所述经解码的视频数据帧传送到所述第二缓冲区的所述命令包含一直接存储器存储命令。
20.根据权利要求19所述的方法,其中所述直接存储器存取命令包含一位块传送命令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/358,611 US7768517B2 (en) | 2006-02-21 | 2006-02-21 | Asymmetric multi-GPU processing |
US11/358,611 | 2006-02-21 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101025821A CN101025821A (zh) | 2007-08-29 |
CN101025821B true CN101025821B (zh) | 2014-02-26 |
Family
ID=38427713
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200710080282.0A Active CN101025821B (zh) | 2006-02-21 | 2007-02-16 | 不对称多gpu处理 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7768517B2 (zh) |
CN (1) | CN101025821B (zh) |
TW (1) | TWI358045B (zh) |
Families Citing this family (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090027383A1 (en) | 2003-11-19 | 2009-01-29 | Lucid Information Technology, Ltd. | Computing system parallelizing the operation of multiple graphics processing pipelines (GPPLs) and supporting depth-less based image recomposition |
US7961194B2 (en) | 2003-11-19 | 2011-06-14 | Lucid Information Technology, Ltd. | Method of controlling in real time the switching of modes of parallel operation of a multi-mode parallel graphics processing subsystem embodied within a host computing system |
US20080074428A1 (en) | 2003-11-19 | 2008-03-27 | Reuven Bakalash | Method of rendering pixel-composited images for a graphics-based application running on a computing system embodying a multi-mode parallel graphics rendering system |
EP1687732A4 (en) | 2003-11-19 | 2008-11-19 | Lucid Information Technology Ltd | METHOD AND SYSTEM FOR A MULTIPLEXED 3D GRAPHIC PIPELINE VIA A PC BUS |
US7812844B2 (en) | 2004-01-28 | 2010-10-12 | Lucid Information Technology, Ltd. | PC-based computing system employing a silicon chip having a routing unit and a control unit for parallelizing multiple GPU-driven pipeline cores according to the object division mode of parallel operation during the running of a graphics application |
US8085273B2 (en) | 2003-11-19 | 2011-12-27 | Lucid Information Technology, Ltd | Multi-mode parallel graphics rendering system employing real-time automatic scene profiling and mode control |
US8497865B2 (en) | 2006-12-31 | 2013-07-30 | Lucid Information Technology, Ltd. | Parallel graphics system employing multiple graphics processing pipelines with multiple graphics processing units (GPUS) and supporting an object division mode of parallel graphics processing using programmable pixel or vertex processing resources provided with the GPUS |
US9055306B2 (en) * | 2006-08-31 | 2015-06-09 | Ati Technologies Ulc | Parallel decoding method and system for highly compressed data |
US9275430B2 (en) | 2006-12-31 | 2016-03-01 | Lucidlogix Technologies, Ltd. | Computing system employing a multi-GPU graphics processing and display subsystem supporting single-GPU non-parallel (multi-threading) and multi-GPU application-division parallel modes of graphics processing operation |
US11714476B2 (en) | 2006-12-31 | 2023-08-01 | Google Llc | Apparatus and method for power management of a computing system |
US8094157B1 (en) * | 2007-08-09 | 2012-01-10 | Nvidia Corporation | Performing an occurence count of radices |
US8284205B2 (en) * | 2007-10-24 | 2012-10-09 | Apple Inc. | Methods and apparatuses for load balancing between multiple processing units |
KR101510694B1 (ko) * | 2007-12-12 | 2015-04-10 | 엘지전자 주식회사 | 데이터 처리 장치 및 방법 |
KR100969322B1 (ko) * | 2008-01-10 | 2010-07-09 | 엘지전자 주식회사 | 멀티 그래픽 컨트롤러를 구비한 데이터 처리 장치 및 이를이용한 데이터 처리 방법 |
US9542192B1 (en) * | 2008-08-15 | 2017-01-10 | Nvidia Corporation | Tokenized streams for concurrent execution between asymmetric multiprocessors |
US8054316B2 (en) * | 2008-11-14 | 2011-11-08 | Nvidia Corporation | Picture processing using a hybrid system configuration |
US8072462B2 (en) * | 2008-11-20 | 2011-12-06 | Nvidia Corporation | System, method, and computer program product for preventing display of unwanted content stored in a frame buffer |
US9384713B1 (en) * | 2009-07-27 | 2016-07-05 | Nvidia Corporation | System and method for masking transistions between graphics processing units in a hybrid graphics system |
US8780122B2 (en) | 2009-09-16 | 2014-07-15 | Nvidia Corporation | Techniques for transferring graphics data from system memory to a discrete GPU |
US9111325B2 (en) * | 2009-12-31 | 2015-08-18 | Nvidia Corporation | Shared buffer techniques for heterogeneous hybrid graphics |
KR101329506B1 (ko) * | 2010-08-12 | 2013-11-13 | 엘지디스플레이 주식회사 | 영상표시장치 |
CN101969552B (zh) * | 2010-11-17 | 2013-04-10 | 广东威创视讯科技股份有限公司 | 一种视频数据并行处理系统及其方法 |
US20120147015A1 (en) * | 2010-12-13 | 2012-06-14 | Advanced Micro Devices, Inc. | Graphics Processing in a Multi-Processor Computing System |
US20130148947A1 (en) * | 2011-12-13 | 2013-06-13 | Ati Technologies Ulc | Video player with multiple grpahics processors |
US20130163195A1 (en) * | 2011-12-22 | 2013-06-27 | Nvidia Corporation | System, method, and computer program product for performing operations on data utilizing a computation module |
US9311169B2 (en) | 2012-05-02 | 2016-04-12 | Nvidia Corporation | Server based graphics processing techniques |
US9805439B2 (en) | 2012-05-02 | 2017-10-31 | Nvidia Corporation | Memory space mapping techniques for server based graphics processing |
US9613390B2 (en) | 2012-05-02 | 2017-04-04 | Nvidia Corporation | Host context techniques for server based graphics processing |
US9542715B2 (en) | 2012-05-02 | 2017-01-10 | Nvidia Corporation | Memory space mapping techniques for server based graphics processing |
CN102752571A (zh) * | 2012-05-30 | 2012-10-24 | 曙光信息产业股份有限公司 | 一种高清晰视频装置及其实现方法 |
TWI498849B (zh) * | 2012-11-05 | 2015-09-01 | Nvidia Corp | 圖形驅動程式層級解耦顯像以及顯示的方法 |
CN103809662A (zh) * | 2012-11-07 | 2014-05-21 | 鸿富锦精密工业(深圳)有限公司 | 显卡 |
WO2014085714A1 (en) * | 2012-11-28 | 2014-06-05 | Nvidia Corporation | Handheld gaming console |
US11082490B2 (en) | 2012-11-28 | 2021-08-03 | Nvidia Corporation | Method and apparatus for execution of applications in a cloud system |
CN104781845B (zh) * | 2012-12-19 | 2018-11-09 | 英特尔公司 | 处理视频内容 |
US9842532B2 (en) | 2013-09-09 | 2017-12-12 | Nvidia Corporation | Remote display rendering for electronic devices |
US9417911B2 (en) | 2014-03-12 | 2016-08-16 | Live Planet Llc | Systems and methods for scalable asynchronous computing framework |
WO2017049583A1 (en) * | 2015-09-25 | 2017-03-30 | Intel Corporation | Gpu-cpu two-path memory copy |
TWI546779B (zh) | 2015-11-06 | 2016-08-21 | 財團法人工業技術研究院 | 串流資料的編碼排程方法、裝置與電腦可讀取媒體 |
US11003456B2 (en) | 2018-03-30 | 2021-05-11 | Iunu, Inc. | Pipelined processing of plant images for monitoring horticultural grow operations |
CN111104167B (zh) * | 2018-10-25 | 2023-07-21 | 上海嘉楠捷思信息技术有限公司 | 一种计算结果提交方法及装置 |
CN109671013B (zh) * | 2018-12-12 | 2023-04-14 | 中国航空工业集团公司西安航空计算技术研究所 | 一种支持多gpu的高性能图形指令存储分发方法 |
US11069022B1 (en) * | 2019-12-27 | 2021-07-20 | Intel Corporation | Apparatus and method for multi-adapter encoding |
US11288765B2 (en) * | 2020-04-28 | 2022-03-29 | Sony Interactive Entertainment LLC | System and method for efficient multi-GPU execution of kernels by region based dependencies |
TWI748570B (zh) | 2020-07-22 | 2021-12-01 | 瑞昱半導體股份有限公司 | 資料處理裝置 |
TWI792024B (zh) * | 2020-07-22 | 2023-02-11 | 瑞昱半導體股份有限公司 | 圖形處理裝置 |
CN114064557B (zh) * | 2020-07-29 | 2024-08-27 | 瑞昱半导体股份有限公司 | 图形处理装置 |
CN112328532B (zh) * | 2020-11-02 | 2024-02-09 | 长沙景嘉微电子股份有限公司 | 多gpu通信的方法及装置、存储介质、电子装置 |
WO2022251333A2 (en) * | 2021-05-28 | 2022-12-01 | MemComputing, Inc. | Memory graphics processing unit |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5860086A (en) * | 1995-06-07 | 1999-01-12 | International Business Machines Corporation | Video processor with serialization FIFO |
US20020101930A1 (en) * | 2000-12-11 | 2002-08-01 | Wang Jason Naxin | System and method for balancing video encoding tasks between multiple processors |
US6789154B1 (en) * | 2000-05-26 | 2004-09-07 | Ati International, Srl | Apparatus and method for transmitting data |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5315701A (en) | 1992-08-07 | 1994-05-24 | International Business Machines Corporation | Method and system for processing graphics data streams utilizing scalable processing nodes |
US5392393A (en) | 1993-06-04 | 1995-02-21 | Sun Microsystems, Inc. | Architecture for a high performance three dimensional graphics accelerator |
US6331856B1 (en) * | 1995-11-22 | 2001-12-18 | Nintendo Co., Ltd. | Video game system with coprocessor providing high speed efficient 3D graphics and digital audio signal processing |
US6359624B1 (en) * | 1996-02-02 | 2002-03-19 | Kabushiki Kaisha Toshiba | Apparatus having graphic processor for high speed performance |
US6853385B1 (en) * | 1999-11-09 | 2005-02-08 | Broadcom Corporation | Video, audio and graphics decode, composite and display system |
US6661422B1 (en) * | 1998-11-09 | 2003-12-09 | Broadcom Corporation | Video and graphics system with MPEG specific data transfer commands |
US7129860B2 (en) * | 1999-01-29 | 2006-10-31 | Quickshift, Inc. | System and method for performing scalable embedded parallel data decompression |
US7015966B1 (en) | 1999-03-15 | 2006-03-21 | Canon Kabushiki Kaisha | Reducing discontinuities in segmented imaging sensors |
US6624816B1 (en) * | 1999-09-10 | 2003-09-23 | Intel Corporation | Method and apparatus for scalable image processing |
US6473087B1 (en) * | 1999-12-15 | 2002-10-29 | Silicon Magic Corporation | Method and system for concurrent processing of slices of a bitstream in a multiprocessor (MP) system |
JP2001343927A (ja) | 2000-05-30 | 2001-12-14 | Sony Corp | 画像処理装置 |
US6831648B2 (en) * | 2000-11-27 | 2004-12-14 | Silicon Graphics, Inc. | Synchronized image display and buffer swapping in a multiple display environment |
US6901422B1 (en) * | 2001-03-21 | 2005-05-31 | Apple Computer, Inc. | Matrix multiplication in a vector processing system |
EP1378824A1 (en) * | 2002-07-02 | 2004-01-07 | STMicroelectronics S.r.l. | A method for executing programs on multiple processors and corresponding processor system |
JP2004054680A (ja) * | 2002-07-22 | 2004-02-19 | Fujitsu Ltd | 並列効率計算方法 |
US7533382B2 (en) * | 2002-10-30 | 2009-05-12 | Stmicroelectronics, Inc. | Hyperprocessor |
US7421694B2 (en) * | 2003-02-18 | 2008-09-02 | Microsoft Corporation | Systems and methods for enhancing performance of a coprocessor |
US7289125B2 (en) * | 2004-02-27 | 2007-10-30 | Nvidia Corporation | Graphics device clustering with PCI-express |
US7525548B2 (en) * | 2005-11-04 | 2009-04-28 | Nvidia Corporation | Video processing with multiple graphical processing units |
US7624107B1 (en) * | 2007-08-09 | 2009-11-24 | Nvidia Corporation | Radix sort algorithm for graphics processing units |
-
2006
- 2006-02-21 US US11/358,611 patent/US7768517B2/en active Active
-
2007
- 2007-02-16 TW TW096106204A patent/TWI358045B/zh active
- 2007-02-16 CN CN200710080282.0A patent/CN101025821B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5860086A (en) * | 1995-06-07 | 1999-01-12 | International Business Machines Corporation | Video processor with serialization FIFO |
US6789154B1 (en) * | 2000-05-26 | 2004-09-07 | Ati International, Srl | Apparatus and method for transmitting data |
US20020101930A1 (en) * | 2000-12-11 | 2002-08-01 | Wang Jason Naxin | System and method for balancing video encoding tasks between multiple processors |
Also Published As
Publication number | Publication date |
---|---|
TW200807328A (en) | 2008-02-01 |
US20070195099A1 (en) | 2007-08-23 |
CN101025821A (zh) | 2007-08-29 |
TWI358045B (en) | 2012-02-11 |
US7768517B2 (en) | 2010-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101025821B (zh) | 不对称多gpu处理 | |
US9489763B2 (en) | Techniques for setting up and executing draw calls | |
US6363441B1 (en) | Timing controller having dependency memory, selection serialization component and reordering component for maintaining time dependencies in conversions between sequential and parallel operations using staging memory | |
KR101667508B1 (ko) | 그래픽 프로세싱 유닛 기반 메모리 전송 동작들을 수행하는 다중모드 메모리 액세스 기법들 | |
KR101931073B1 (ko) | 프로세싱 유닛을 위한 프레임 기반 클럭 레이트 조정 | |
US7663633B1 (en) | Multiple GPU graphics system for implementing cooperative graphics instruction execution | |
US9600235B2 (en) | Technique for performing arbitrary width integer arithmetic operations using fixed width elements | |
US9110809B2 (en) | Reducing memory traffic in DRAM ECC mode | |
CN101118645A (zh) | 多重图形处理器系统 | |
CN103793876A (zh) | 分布式拼接式进行高速缓存 | |
CN103019810A (zh) | 具有不同执行优先级的计算任务的调度和管理 | |
US6166743A (en) | Method and system for improved z-test during image rendering | |
CN103034467B (zh) | 图像显示方法、装置及移动终端 | |
KR20070112735A (ko) | 프레임 버퍼 병합 | |
US8941669B1 (en) | Split push buffer rendering for scalability | |
CN105321142A (zh) | 经由计算流水线进行的采样、错误管理和/或上下文切换 | |
US11631212B2 (en) | Methods and apparatus for efficient multi-view rasterization | |
WO2014193591A1 (en) | Command instruction management | |
US20050285865A1 (en) | Method and system for a scalable discrete graphics system | |
US9111370B2 (en) | Buffer display techniques | |
US9690736B2 (en) | Managing state transitions of a data connector using a finite state machine | |
CN102682465A (zh) | 3d格式转换系统和方法 | |
US20140292617A1 (en) | System, method, and computer program product for reducing image artifacts on multiple displays | |
US8411093B2 (en) | Method and system for stand alone graphics independent of computer system form factor | |
US20230043152A1 (en) | Memory interface with reduced energy transmit mode |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |