CN103649917A - 图形处理单元中的指令剔除 - Google Patents
图形处理单元中的指令剔除 Download PDFInfo
- Publication number
- CN103649917A CN103649917A CN201180072234.1A CN201180072234A CN103649917A CN 103649917 A CN103649917 A CN 103649917A CN 201180072234 A CN201180072234 A CN 201180072234A CN 103649917 A CN103649917 A CN 103649917A
- Authority
- CN
- China
- Prior art keywords
- work item
- values
- working group
- core
- instruction
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明的方面是针对一种用图形处理单元GPU处理数据的方法。根据一些方面,所述方法包含用所述GPU的着色器处理器执行第一工作项,其中所述第一工作项包含用于处理输入数据的一个或一个以上指令。所述方法还包含基于所述第一工作项的结果产生一个或一个以上值,其中所述一个或一个以上值表示所述结果的一个或一个以上特性。所述方法还包含基于所述一个或一个以上值确定是否执行第二工作项,其中所述第二工作项包含与用于处理所述输入数据的所述第一工作项的所述一个或一个以上指令相异的一个或一个以上指令。
Description
技术领域
本发明的方面涉及用图形处理单元(GPU)处理数据。
背景技术
图形处理装置可经实施以进行多种图像处理或其它通用处理应用程序。举例来说,有时称为通用图形处理单元(GPGPU)的图形处理单元(GPU)可执行受益于高并行度的应用(例如色彩校正算法、面部检测算法、图案辨识算法、扩增实境应用)、多种算法应用(例如,小波变换、傅立叶变换,及其类似者),或多种其它应用。
一股来说,GPU经设计以使用驻留在GPU中的一个或一个以上着色器处理器处理可被称为着色器指令的一系列指令。在实例图像处理应用程序中,着色器指令可界定待由着色器处理器对构成图像的像素执行的一个或一个以上数学运算。通过将着色器指令应用于像素,根据由所述着色器指令界定的数学运算而改变或评估像素值。
着色器指令可组织成被称为核心(kernel)的程序代码。核心可界定由GPU执行的功能或任务。为了执行核心,将程序代码划分成工作项(例如,GPU中的基本工作单元),所述工作项组织成一个或一个以上工作组(例如,一组工作项)。
发明内容
一股来说,本发明的方面涉及识别用于由GPU执行的无关着色器指令,以及防止所述无关指令被执行。为防止无关指令被执行,可在所述无关指令被执行之前从一组指令“剔除”或移除无关指令。根据一些方面,GPU可实施剔除缓冲器以进行指令剔除。举例来说,在执行指令之后,GPU可存储表示后续指令的一个或一个以上特性(例如,相关性特性)的一个或一个以上值。GPU可使用所存储值来在执行所述后续指令之前确定是否移除所述指令。
在一个实例中,本发明的方面是针对一种用图形处理单元(GPU)处理数据的方法。根据一些方面,所述方法包含用所述GPU的着色器处理器执行第一工作项,其中所述第一工作项包含用于处理输入数据的一个或一个以上指令。所述方法还包含基于所述第一工作项的结果产生一个或一个以上值,其中所述一个或一个以上值表示所述结果的一个或一个以上特性。所述方法还包含基于所述一个或一个以上值确定是否执行第二工作项,其中所述第二工作项包含与用于处理所述输入数据的所述第一工作项的所述一个或一个以上指令相异的一个或一个以上指令。
在另一实例中,本发明的方面是针对一种用于用图形处理单元(GPU)处理数据的设备。所述设备包含着色器处理器,所述着色器处理器经配置以执行包含用于处理输入数据的一个或一个以上指令的第一工作项,且基于第一指令的结果产生一个或一个以上值,其中所述一个或一个以上值表示所述结果的一个或一个以上特性。所述设备还包含剔除模块,所述剔除模块经配置以基于所述一个或一个以上值确定是否执行包含与所述第一工作项的所述一个或一个以上指令相异的一个或一个以上指令的第二工作项。
在另一实例中,本发明的方面是针对一种计算机可读存储媒体,所述计算机可读存储媒体编码有用于致使计算装置的一个或一个以上可编程处理器进行以下操作的指令:执行第一工作项,其中所述第一工作项包含用于处理输入数据的一个或一个以上指令;以及基于所述第一工作项的结果产生一个或一个以上值,其中所述一个或一个以上值表示所述结果的一个或一个以上特性。所述计算机可读存储媒体还编码有用于致使所述计算装置的所述一个或一个以上可编程处理器进行以下操作的指令:基于所述一个或一个以上值确定是否执行第二工作项,其中所述第二工作项包含与用于处理所述输入数据的所述第一工作项相异的一个或一个以上指令。
在另一实例中,本发明的方面是针对一种用于用图形处理单元(GPU)处理数据的设备。所述设备包含用于执行第一工作项的装置,其中所述第一工作项包含用于处理输入数据的一个或一个以上指令。所述设备还包含用于基于所述第一工作项的结果产生一个或一个以上值的装置,其中所述一个或一个以上值表示所述结果的一个或一个以上特性。所述设备还包含用于所述一个或一个以上值确定是否执行第二工作项的装置,其中所述第二工作项包含与用于处理所述输入数据的所述第一工作项相异的一个或一个以上指令。
在附图和下文描述中阐述本发明的一个或一个以上实例的细节。本发明的其它特征、目标和优点将从所述描述和图式以及权利要求书而显而易见。
附图说明
图1是说明可实施根据本发明的方面的用于识别并剔除无关指令的技术的计算装置的框图。
图2是更详细地说明图1中所示的GPU的框图,所述GPU可经配置以进行根据本发明的方面的用于指令剔除的技术。
图3是说明根据本发明的方面的与工作组相关联的工作项网格的框图。
图4是说明根据本发明的方面的成三核心布置的工作组网格的框图。
图5A是说明根据本发明的方面的用于处理图像的第一核心的框图。
图5B是说明根据本发明的方面的在用于处理图5A中所示的图像的第二核心上的指令剔除的框图。
图5C是说明根据本发明的方面的在用于处理图5A中所示的图像的第三核心上的指令剔除的框图。
图6是说明根据本发明的方面的剔除指令的方法的流程图。
图7是说明根据本发明的方面的可经实施以剔除指令的指令流的流程图。
具体实施方式
本发明的方面大体上涉及提高图形处理单元(“GPU”)(其可实施为通用图形处理单元(“GPGPU”))的效率。一股来说,GPU包含多个着色器处理器(“SP”)用于执行计算。所述计算可结构化于包含一个或一个以上着色器程序(在本文中称为“核心”)的GPGPU应用中。核心界定可经实施以分析或修改多种输入数据的功能。实例包含用于并行地处理相对大数目的数据组的功能。在图像处理上下文中,功能可包含例如色彩校正算法、面部检测算法,或用于进行扩增实境应用的功能。其它实例包含变换功能、用于射线跟踪的功能,或多种其它功能。
核心由可集群成工作组的个别工作项(例如,GPU中的基本工作单元)组成。在其中GPU经实施以处理图像(例如,视频数据的帧、计算机产生的图形图像、静态图像,及其类似者)的实例中,工作项可包含界定用于分析或修改图像的像素的功能的一个或一个以上指令。此外,多个工作项可组织成用于分析或修改图像的像素群组的工作组(例如,一组工作项)。
一些应用程序可包含用于对相同输入数据进行多个功能的多个核心。另外,具有多个核心的应用程序可包含取决于其它核心的一些核心。举例来说,应用程序可包含两个核心,其中第二核心取决于第一核心的结果。因此,在一些实例中,一核心的结果可能使后续核心的结果“无关”。如本文所描述,“无关指令”可为不会使应用程序的目的有所进展的指令。换句话说,“无关”指令可为不改变或不影响应用程序的结果的指令。
在一简单实例中,应用程序包含用于识别数据集[x,y,z]中的特征的两个核心。第一核心和第二核心各自具有三个指令,其可分别界定于与[x,y,z]相关联的三个相异工作项中。如果所述特征通过执行所述三个指令而得以识别,则所述指令评估为“真”,或如果所述特征并未通过执行所述三个指令而得以识别,则所述指令评估为“假”。此外,第二核心取决于第一核心的结果。举例来说,两个核心的指令都必须评估为“真”以识别特征,因此第二核心的指令取决于第一核心的指令评估为“真”。在执行第一核心之后,GPU确定所需特征可能包含在“x”和“y”中但不包含在“z”中。由此,与“z”有关的第二核心的指令与应用程序的结果无关。举例来说,与“z”有关的第二指令并不影响应用程序的结果,因为即使与“z”有关的第二指令评估为“真”,所述指令也已经使第一核心失效。明确地说,与第一核心中的“z”有关的指令并不识别所需特征。在此实例应用程序中,第二核心包含个别无关指令(例如,工作项),使得所述核心的仅一部分无关,且所述核心的剩余部分可与结果有关。
在一些情形中,具有一个以上无关指令的核心可描述为是“稀疏的”。举例来说,“稀疏”核心可包含由许多无关指令分开的相关指令。通常,GPU将所有指令(例如,核心的工作项和工作组)分配到着色器处理器(SP)用于执行,而不管指令的相关性。举例来说,GPU通常不包含用于识别无关指令的机制。因此,GPU的SP通常必须执行核心的所有工作组和工作项,而不管工作组或工作项的相关性。执行稀疏核心可降低GPU性能,因为GPU的SP被执行无关指令占据,从而消耗GPU处理能力。
本发明的方面涉及通过避免执行至少一些无关指令来提高GPU的SP的效率和利用率。在一些实例中,GPU识别无关指令,且防止所述无关指令被GPU的SP处理。即,GPU可识别为GPU中的基本工作单元(例如,可执行码)且可包含一个或一个以上个别指令的无关工作项,且可防止所述无关工作项被GPU的SP处理。为防止无关工作项被处理,GPU可在所述无关工作项被执行之前“剔除”或移除所述无关工作项。根据一些方面,GPU可实施剔除缓冲器以进行剔除。举例来说,剔除缓冲器可保持一个或一个以上值,GPU可使用所述一个或一个以上值来确定是否在工作项可被执行之前移除所述工作项。
一股来说,可互换地使用术语“工作项”与“指令”。本发明大体上将指令描述为用于处理输入数据的功能的至少一部分。本发明大体上将工作项称为用于GPU的基本工作单元(例如,可执行码的基本单元),其可包含一个或一个以上个别指令。因此应理解,术语“工作项”在本源上是指界定用于处理输入数据的功能的一个或一个以上指令。“工作项”在计算统一装置架构(由NVIDIA公司开发的“CUDA”,2010年9月17日发布的版本3.2)中还可称为“线程”。
GPU可从一组指令剔除无关指令,随后将所述指令组织并分配到SP用于执行。在无关指令可被分配到SP且由SP处理之前剔除所述无关指令可有助于提高GPU的效率,因为SP不被执行无关指令占据。此外,通过剔除无关指令,GPU不会使资源专用于组织和分配无关指令。确切地说,GPU能够将相关指令分配到SP,所述SP能够持续执行相关的指令。
根据本发明的方面,GPU可实施剔除缓冲器以进行指令剔除。剔除缓冲器可存储表示所执行指令的特性的一个或一个以上值。所述特性可用以确定后续指令是相关还是无关。举例来说,GPU可执行具有两个核心的应用程序。在执行第一核心的同时,GPU可将一个或一个以上值存储到剔除缓冲器,所述一个或一个以上值基于与第一核心相关联的指令的结果而表示第二核心的指令是否相关。如果第二核心的一个或一个以上指令不相关,则GPU可防止无关指令被SP执行。举例来说,GPU的负责组织和分配指令到SP的组件可基于存储在剔除缓冲器中的值剔除无关指令。
因此,一股来说,本发明的技术包含使用一个以上核心执行用于处理输入数据的应用程序。在执行第一核心的工作项和工作组之后,GPU可即刻设定表示第二核心的工作项和工作组是否相关的剔除缓冲器值。即,GPU可基于第一核心的结果设定剔除缓冲器值,所述剔除缓冲器值表示与第一核心的工作项和工作组中的每一者的相同输入数据相关联的第二核心的相应工作项和工作组是否相关。因此,在执行第一核心之后,GPU可利用所述剔除缓冲器值来剔除第二核心中的无关工作项和工作组,使得不执行所述无关工作项和工作组。
在一些实例中,剔除缓冲器可经设计以存储表示应用程序的每一指令的特性的一个或一个以上值。举例来说,在执行每一指令之后,GPU可存储表示每一指令的特性的剔除缓冲器,其指示所述指令是相关还是无关。在另一实例中,GPU可仅在确定后续指令无关时才存储剔除缓冲器值。
剔除缓冲器可经设计以存储表示工作组的特性的一个或一个以上值以及表示所述工作组内的个别工作项的特性的一个或一个以上值。因此,剔除缓冲器可用以在工作组和工作项等级两者上确定指令是否无关。如果先前执行的核心致使给定工作组的所有工作项无关,则GPU可剔除整个工作组,使得无关工作组不被SP执行。或者,如果先前执行的核心致使给定工作组的仅一些工作项无关,则GPU可剔除个别工作项,使得无关工作项不被SP执行。
应理解,术语“工作组”大体是指指令的预定义群组,例如工作项的预定义群组。“工作组”在计算统一装置架构(由NVIDIA公司开发的“CUDA”,2010年9月17日发布的版本3.2)中还可称为“线程块”。
本发明的方面包含使用多种不同剔除缓冲器大小和多种不同剔除缓冲器能力。在一个实例中,剔除缓冲器可存储表示核心的每一工作项的单个特性的单个二进制值(例如,单位存储)。在此种实例中,GPU可使用剔除缓冲器值来基于先前执行的工作项的结果识别工作项是否相关或无关。
存储单个二进制值的剔除缓冲器仅为剔除缓冲器配置的一个实例。在另一实例中,剔除缓冲器可每工作项存储一个以上值。举例来说,剔除缓冲器可存储对应于所执行工作项的一个以上特性的一个以上值。在一非限制性图像处理实例中,GPU可对像素数据执行工作项以确定像素数据的红绿蓝(RGB)特性。因此,剔除缓冲器可经实施以存储对应于所执行指令的红、绿和蓝分量的三个值。在此实例中,GPU可基于存储在剔除缓冲器中的值中的任一者来剔除指令。应理解,剔除缓冲器的配置(例如,大小和能力)取决于应用程序和GPU。举例来说,一些GPU可经设计以针对相对较大的且多功能的剔除缓冲器提供相对较大量的存储器。其它GPU可能不能够提供此种多功能性。因此,应理解,所提供的实例并非可实施的剔除缓冲剂的仅有配置。
GPU可以多种方式将值存储到剔除缓冲器。在一个实例中,在SP执行工作项之后,SP可基于所执行工作项的结果将一个或一个以上剔除缓冲器值写入到剔除缓冲器。在此实例中,在执行另一核心的新工作项(例如,与相同输入数据相关联的工作项)之后,SP可通过读取存储在剔除缓冲器中的一个或一个以上剔除缓冲器值且比较所述一个或一个以上剔除缓冲器值与通过执行所述新工作项而产生的新值来更新所述一个或一个以上剔除缓冲器值。在此实例中,可能存在与读取存储在剔除缓冲器中的一个或一个以上剔除缓冲器值、随后比较所存储值与通过执行新工作项而产生的新值相关联的一些时延。
在另一实例中,在SP执行工作项之后,SP可将一个或一个以上剔除缓冲器值提供到可编程或固定功能硬件,所述可编程或固定功能硬件将一个或一个以上剔除缓冲器值写入到剔除缓冲器。举例来说,可编程或固定功能硬件可经配置以在执行工作项之后即刻从SP接收输入。可编程或固定功能硬件可接着经实施以解译所述输入且将对应于所述输入的一个或一个以上值存储到剔除缓冲器。在此实例中,可编程或固定功能硬件可负责比较存储在剔除缓冲器中的一个或一个以上值与通过执行新工作项而产生的新值。允许可编程或固定功能硬件执行剔除缓冲器更新可导致较低时延,因为SP不需要读取所存储的一个或一个以上剔除缓冲器值。确切地说,可编程或固定功能硬件将负责读取一个或一个以上剔除缓冲器值。
根据一些方面,缓冲器值可由GPU的负责排序和分配指令到GPU的SP的组件来存取和利用。举例来说,排序组件可读取缓冲器值,且在准备用于分配到SP的指令的同时移除指令。因此,排序组件可在将指令分配到SP之前移除指令。在一些实例中,排序组件可负责工作组和工作项两者的设置和分配。排序组件可读取存储在剔除缓冲器中的值,且在将指令分配到SP之前在工作组和工作项等级两者上移除指令。举例来说,排序模块可读取存储在剔除缓冲器中的值,且基于所述值确定工作项的整个工作组无关。排序模块还可读取存储在剔除缓冲器中的值,且基于所述值确定个别工作项无关。
根据一些方面,应用程序可包含实现指令剔除的指令。举例来说,应用程序可包含使剔除缓冲器能够行使功能的指令。为实现指令剔除,应用程序的所执行指令提供结果以及表示结果的特性的待存储在剔除缓冲器中的一个或一个以上值两者,所述一个或一个以上值可用以确定后续指令的相关性。
GPU应用程序编程通常由用户(例如,计算机程序员)通过应用程序接口(API)来执行,所述应用程序接口提供可在多个平台、操作系统和硬件上运行的标准软件接口。API的实例包含开放图形库(“OpenGL”,2010年7月26日发布且公开可用的版本4.1)、计算统一装置架构(由NVIDA公司开发的“CUDA”,2010年9月17日发布的版本3.2),和DirectX(由微软公司开发,2009年10月27日发布的版本11)。一股来说,API包含由相关联硬件执行的一组预定的标准化的命令。API命令允许用户发指令给GPU的硬件组件以执行命令而无需用户了解所述硬件组件的详情。
本发明的某些方面涉及一个或一个以上API命令,其允许用户(例如,计算机程序员)界定和实施指令剔除。举例来说,API命令还可用户界定将在执行指令之后由应用程序产生的剔除缓冲器值。API命令还可发指令给GPU以将一个或一个以上剔除缓冲器值存储到指定剔除缓冲器。API命令还可发指令给GPU以在组织和分配指令到SP之前分析剔除缓冲器。在接收并执行命令之后,GPU即刻产生一个或一个以上剔除缓冲器值并将其存储到剔除缓冲器,且在无关指令被分配到SP之前剔除所述无关指令。
多种不同GPGPU应用程序可受益于无关指令剔除。提供一非限制性且经简化的图像处理应用程序(例如,面部检测应用程序)作为可具有多个核心的应用程序的实例,其中一个核心的指令使另一核心的指令无关。实例面部检测应用程序包含用于检测与包含在图像(例如,视频数据的帧、计算机产生的图形图像、静态图像,及其类似者)中的面部相关联的不同预定义特征的三个核心。
在此实例中,每一核心可经实施以识别与面部相关联的图像的像素中的特定特征(例如,色彩、色调、饱和度、亮度,或其它属性)。根据此实例,满足核心中阐述的所有准则的视频数据帧中的任何像素或像素群组为面部候选者。此外,此实例的核心从较保守到较不保守而加以组织。
举例来说,第一核心可识别许多候选面部像素以便避免排除可能的候选物。然而,第二和第三核心在排除像素而使其不被认为是候选面部像素时可能更为激进以便充分地缩窄候选物的数目。在此实例中,核心的部分在执行每一核心之后变得无关。举例来说,在执行第一核心之后,仅一些像素被识别为候选面部像素,且剩余像素被排除而不予考虑。因此,与第二和第三核心中的被排除像素相关联的任何指令是无关的。即使被执行,那些指令也不会有助于识别面部候选者。
在于所提供的面部检测实例中执行核心时,第二和第三核心变得稀疏。举例来说,在执行每一核心之后,致使后续核心的更多指令无关。所述无关指令消耗GPU资源,即使其无助于发现面部。根据本发明的方面,GPU可实施指令剔除以便在无关指令被分配到SP用于执行之前移除所述无关指令。以此方式,GPU效率得以提高,因为GPU的SP经实施以执行无关指令。
当执行所提供的面部检测实例时,GPU可首先执行第一核心,且产生一个或一个以上剔除缓冲器值。举例来说,GPU的SP可执行第一核心的指令,且用表示第一核心的所执行指令的特性(例如,后续指令是相关还是无关)的剔除缓冲器值填入剔除缓冲器。在执行第二核心之后,GPU可即刻利用存储在剔除缓冲器中的值来从第二核心识别并剔除无关指令。举例来说,GPU可读取存储在剔除缓冲器76中的值,且在指令被分配到SP84用于执行之前确定是否剔除所述指令。在GPU已完成指令剔除之后,GPU执行第二核心,且用新剔除缓冲器值更新剔除缓冲器。GPU可接着重复此实例过程以执行第三核心。
图像处理仅为其中一个核心的指令可使另一核心的指令无关的一个实例。其它实例包含例如扩增实境应用、射线跟踪,以及图案辨识。一股来说,GPU可经实施以对多种输入数据进行多种应用。核心为应用特定的,且仅提供用于组织指令的架构。因此,应理解,剔除无关指令的概念适用于多种其它应用。
本文中所描述的某些实例和方面提及识别不同核心的无关工作项和工作组以及在所述工作项和工作组被分配到GPU的SP之前剔除所述工作项和工作组。然而,核心/工作组/工作项描绘仅为GPGPU应用结构的一个实例。应理解,识别无关工作项和工作组以及产生、存储和使用工作项和工作组剔除值仅作为一实例而提供。本发明的涉及识别无关指令以及产生、存储和使用剔除缓冲器值的方面可应用于其它GPU应用结构中。举例来说,其它GPU应用可包含单个相对较大的“核心”,其包含在执行期间使用相同输入数据一次以上的指令。在此种实例中,本发明的方面仍可应用于最大化SP效率。可剔除与相同输入数据有关的无关指令,尽管所述指令属于相同核心。
图1是说明可实施用于识别和剔除无关指令(例如工作项和工作组)的技术的计算装置20的框图。如图1中所示,计算装置20包含主机处理器24、存储装置28、存储器32、网络模块36、用户接口40,和显示器44。计算装置20还包含图形处理单元(GPU)48。在一些实例中,计算装置20可包含便携式计算装置(例如移动电话、上网本、膝上型计算机、平板装置、数字媒体播放器、游戏装置,或其它便携式计算装置)或为便携式计算装置的部分。或者,计算装置20可配置为静止计算装置,例如桌上型计算机、电视、电视机顶盒、游戏控制台,或其类似者。
图1所说明的计算装置20仅为一个实例。可由具有其它组件的多种其它计算装置进行用于识别和剔除无关指令的技术。在一些实例中,计算装置20可包含出于清晰性目的而未在图1中展示的额外组件。举例来说,计算装置20可包含用于在计算装置20的组件之间传送数据的一个或一个以上通信桥接器。此外,图1中所示的计算装置20的组件可能并非在计算装置20的每一实例中都是必要的。举例来说,在计算装置20为桌上型计算机的实例中,用户接口40和显示器44可在计算装置20外部。
主机处理器24可包含微处理器、控制器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或等效离散或集成逻辑电路中的任何一者或一者以上。另外,在本发明中,归于主机处理器24的功能可体现为软件、固件、硬件或其任何组合。
主机处理器24处理用于在计算装置20内执行的指令。主机处理器24可能够处理存储在存储装置28上的指令或存储在存储器32中的指令。实例应用程序包含用于处理可检视图像(例如,对图像进行滤波、分析图像的预定义特征,及其类似者)的应用程序。主机处理器24可基于用户经由用户接口40的选择而执行一个或一个以上应用程序。在一些实例中,主机处理器24可在没有用户交互的情况下执行一个或一个以上应用程序。
根据本发明的一些方面且如下文相对于GPU48所更详细描述的,主机处理器24可与GPU48协作以进行应用程序。举例来说,主机处理器24可初始化应用程序的执行,且将与所述应用程序相关联的某些处理功能委托给GPU48。在一实例中,主机处理器24可初始化图像处理应用程序的执行,且将与所述应用程序相关联的某些处理功能分担给GPU48。
存储装置28可包含一个或一个以上计算机可读存储媒体。存储装置28可经配置以用于长期存储信息。在一些实例中,存储装置28可包含非易失性存储元件。此些非易失性存储元件的实例可包含磁性硬盘、光盘、软盘、快闪存储器,或多种形式的电可编程存储器(EPROM)或电可擦除且可编程(EEPROM)存储器。在一些实例中,存储装置28可被视为非暂时性存储媒体。术语“非暂时性”可指示存储媒体不体现于载波或传播信号中。然而,术语“非暂时性”不应解释为意指存储装置28为不可移动的。作为一个实例,存储装置28可从计算装置20移除,且移动到另一装置。作为另一实例,实质上类似于存储装置28的存储装置可插入到计算装置20中。
存储装置28可存储用于使主机处理器24或GPU48执行一个或一个以上应用程序的指令。存储装置28还可存储供主机处理器24或GPU48使用的数据。举例来说,存储装置28可存储用于由主机处理器24或GPU48处理的图像数据。
存储器32可经配置以在操作期间将信息存储在计算装置20内。在一些实例中,存储器32为临时存储器,意指存储器32的主要目的不是长期存储。在一些实例中,存储器32可描述为计算机可读存储媒体。因此,存储器32还可认为是“非暂时性的”,尽管其存储可随时间而改变的数据。在一些实例中,存储器32还可描述为易失性存储器,意指存储器32在计算机断开时并不维持所存储的内容。易失性存储器的实例包含随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM),和此项技术中已知的其它形式的易失性存储器。
在一些实例中,存储器32可用以存储供主机处理器24或GPU48执行的程序指令。存储器32可由在计算装置20运行的软件或应用程序使用以在程序执行期间暂时存储信息。由此,存储器32可由计算装置20的其它组件(例如主机处理器24和GPU48)存取。
计算装置20可利用网络模块36来经由一个或一个以上网络(例如一个或一个以上无线网络)与外部装置通信。网络模块36可为网络接口卡,例如以太网卡、光学收发器、射频收发器,或可发送和接收信息的任何其它类型的装置。在一些实例中,计算装置20可利用网络模块36来以无线方式与例如服务器、移动电话或其它网络连接的计算装置等外部装置通信。
计算装置20还包含用户接口40。用户接口40的实例包含但不限于轨迹球、鼠标、键盘,和其它类型的输入装置。用户接口40还可包含并入为显示器44的部分的触敏屏。显示器44可包括液晶显示器(LCD)、有机发光二极管(OLED)显示器、等离子显示器,或另一类型的显示装置。
计算装置20的GPU48可为具有用于执行GPU应用程序的固定功能和可编程组件的专用硬件单元。GPU48还可包含DSP、通用微处理器、ASIC、FPGA,或其它等效集成或离散逻辑电路。GPU48还可包含其它组件,例如如相对于图2更详细描述的专用存储器。此外,尽管在图1中展示为单独组件,但在一些实例中,GPU48可形成为主机处理器24的部分。GPU48可经配置以利用根据多种应用程序编程接口(API)的处理技术。举例来说,用户可使用可在多个平台、操作系统和硬件上运行的标准软件接口来编程待由GPU48执行的应用程序。在一些实例中,GPU48可经配置以利用使用OpenCL、CUDA或API的DirectX集合所产生的应用程序。
根据一些实例,GPU48可实施为通用图形处理单元(GPGPU)。举例来说,GPU48可进行传统上由主机处理器24进行的多种通用计算功能。实例包含多种图像处理功能,包含视频解码和后处理(例如,解块、噪声减少、色彩校正,及其类似者)和其它应用特定图像处理功能(例如,面部检测/辨识、图案辨识、小波变换,及其类似者)。在一些实例中,GPU48可与主机处理器24协作以执行应用程序。举例来说,主机处理器24可通过向GPU48提供用于由GPU48执行的指令而将某些功能分担给GPU48。
当实施为GPGPU时,GPU48和主机处理器24可执行具有一个或一个以上着色器程序(在本文中称为核心)的应用程序。应用程序的每一核心可界定用于进行特定任务的功能,且每一核心可对相同输入数据执行。举例来说,GPU48和主机处理器24可执行具有用于识别图像中的特征的多个核心的实例图像处理应用程序,且所述多个核心中的每一者可对图像数据执行以识别所述特征。另外,GPU48可执行包含取决于其它核心的结果的核心的应用程序。在此些实例中,一核心的结果可使后续核心的指令(例如后续核心的工作项和工作组)“无关”(例如,一个或一个以上指令并不使应用程序的目的有进展)。
根据本发明的一些方面,GPU48可通过防止无关指令被执行而避免执行无关指令。举例来说,为防止无关指令被执行,GPU48可在指令被执行之前“剔除”或移除所述指令。即,GPU48可在无关工作项和/或工作组被执行之前剔除所述无关工作项和/或工作组。如上所述,术语“工作项”包含用于GPU的基本工作单元,其可包含界定用于处理输入数据的功能的一个或一个以上个别指令。此外,术语“工作组”大体是指指令的预定义群组,例如工作项的预定义群组。
因此,本发明的技术大体上包含使用一个以上核心执行用于处理输入数据的应用程序。在执行第一核心的工作项和工作组之后,GPU48可即刻设定表示第二核心的工作项和工作组是否相关的剔除缓冲器值。即,GPU48可基于第一核心的结果设定剔除缓冲器值,其表示与第一核心的工作项和工作组中的每一者的相同输入数据相关联的第二核心的相应工作项和工作组是否相关。因此,在执行第一核心之后,GPU48可利用所述剔除缓冲器值来剔除第二核心中的无关工作项和工作组,以使得无关工作项和工作组不被执行。
图2是更详细地说明可经配置以进行用于指令剔除(例如剔除工作项和工作组)的技术的GPU48的框图。在图2中所示的实例中,GPU48包含GPU存储器64和具有剔除缓冲器76和剔除模块80的定序器模块72。GPU48还包含着色器处理器84A到84D(统称“SP”84)。
图2仅提供为可利用用于指令剔除的技术的GPU的一个实例。可由具有其它组件的多种其它GPU进行用于识别和剔除无关指令的技术。举例来说,在其它实例中,GPU48还可包含与分析和再现图像的有关的多种其它模块,例如光栅器模块、纹理化单元、一个或一个以上缓冲剂,或其它GPU组件。此外,GPU48可包含比图2中所示的组件更多或更少的组件。举例来说,GPU48在图2中展示为包含四个SP84。然而,在其它实例中,GPU48可包含比图2中所示的SP84更多或更少的SP84。
GPU存储器64可为GPU48内的用于存储待由GPU48处理的指令的专用存储器模块。在一些实例中,GPU存储器64类似于图1中所示的存储器32。举例来说,GPU存储器64可为暂时性计算机可读存储媒体。GPU存储器64的实例包含随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM),以及此项技术中已知的其它形式的存储器。在其中GPU48形成为另一处理器(例如图1中所示的主机处理器24)的部分的实例中,GPU存储器64可由不同于GPU48的组件存取。
GPU存储器64可配置为用于GPU48的全局存储器。举例来说,GPU存储器64可经配置以在操作期间将指令和信息(例如,用于由GPU48处理的图像数据和指令)存储在GPU48内。GPU存储器64还可经配置以存储已由GPU48处理的数据的结果。
定序器模块72可最初准备用于由SP84处理的指令和数据。举例来说,定序器模块72可从主机处理器(例如图1中所示的主机处理器24)或GPU存储器64接收指令和数据,且准备待由SP84处理的输入数据。在一些实例中,定序器模块72接收界定待由GPU48进行的功能的指令的一个或一个以上核心。定序器模块72可将指令组织成工作项(例如,基本工作单元)且将工作项分组成工作组。
定序器模块72还可经实施以控制GPU48内的指令和数据流。举例来说,定序器模块72可将指令和相关联数据导引到SP84用于执行。定序器模块72可由用于将指令(例如,工作项和工作组)和相关联输入数据分配到SP84的固定功能和可编程组件的组合组成。根据本发明的一些方面,定序器模块72包含用于识别无关指令且防止所述无关指令被GPU48的SP84处理的剔除模块76和剔除缓冲器80。即,定序器模块72可包含用于识别无关工作项和工作组且防止所述无关工作项和工作组被GPU48的SP84处理的剔除模块76和剔除缓冲器80。
在图2中所示的实例中,SP72各自包含线程设置模块88A到88D(统称为线程设置模块88),以及多个算术逻辑单元(“ALU”)92A到92D(统称为ALU92)。SP72可被称为“统一着色器处理器”,因为SP72可执行几何形状、顶点或像素阴影操作以再现图形。SP72还可用以在执行GPGPU应用程序的指令时执行通用计算。举例来说,SP72可从定序器模块76接收指令且执行所述指令。
在一些实例中,SP84的线程设置模块88负责从定序器模块72接收指令以及产生线程供ALU92执行。举例来说,线程设置模块88可从定序器模块72接收指令(例如,工作项的工作组),暂时存储所述指令,产生线程(即,工作项)供ALU92执行,且将所述线程分配到ALU92。根据一些方面,线程设置模块88以允许ALU92并行地处理一个以上线程的方式将线程分配到ALU92。可通过用相关线程(例如,具有相关指令的线程)持续占据SP84的ALU92来最大化GPU48的性能和效率。
根据本发明的一些方面,GPU48可通过实施定序器模块72以识别“无关”指令(例如,不使应用程序的目的有进展的指令)且防止所述无关指令被SP84处理来提高效率。举例来说,为防止无关工作项被处理,定序器模块72可在将指令导引到SP84之前剔除或移除无关工作项。因此,SP84的线程设置模块88不产生包含无关工作项的线程,且SP84的ALU92不被执行无关工作项占据。
定序器模块72可实施剔除缓冲器76和剔除模块80以进行指令剔除。尽管在图2中描述且表示为两个相异的模块,但在一些实例中,剔除缓冲器76和剔除模块80可实施于相同组件中。另外,根据一些实例,剔除缓冲器76与剔除模块80可不实施为相异组件。确切地说,在一些实例中,剔除缓冲器76和剔除模块80可集成到GPU48的其它组件中。举例来说,剔除缓冲器76可实施为GPU存储器64的分区。在另一实例中,剔除缓冲器76可为在GPU48外部的存储器。或者或另外,相对于剔除模块80描述的指令剔除技术可集成到定序器模块72或SP84中。
剔除缓冲器76可存储表示所执行工作项的特性的一个或一个以上值。所述特性可用以确定与后续核心相关联的后续工作项是相关还是无关。举例来说,GPU48可执行具有两个核心的应用程序。在执行第一核心之后,GPU48可将基于第一核心的结果而表示第二核心的工作项是否相关的一个或一个以上值存储到剔除缓冲器80。
剔除缓冲器76可从多种来源接收界定剔除缓冲器值的输入。在一个实例中,在SP84中的一者(例如SP84A)执行工作项之后,SP84A可基于所执行工作项的结果直接将一个或一个以上剔除缓冲器值写入到剔除缓冲器76。在另一实例中,剔除缓冲器76可从如上所述的可编程或固定功能硬件接收剔除缓冲器值。
根据一些方面,剔除缓冲器76可经设计以存储表示工作组的特性的一个或一个以上值以及表示所述工作组内的个别工作项的特性的一个或一个以上值。举例来说,剔除缓冲器76可存储在先前执行的核心致使给定工作组的所有工作项都无关的情况下表示特定工作组的所有工作项都无关的工作组剔除值。或者或另外,剔除缓冲器76可存储表示先前执行的核心致使给定工作组的仅一些工作项无关的一个或一个以上工作项剔除值。因此,存储在剔除缓冲器76中的值可用以在工作组等级和工作项等级两者上确定特性(例如指令的相关性)。
剔除缓冲器76可具有多种不同容量,其中较大容量提供额外能力。在一个实例中,剔除缓冲器76可包含对于核心的每一工作项的单位存储。在此实例中,所述单位存储可用以存储表示核心的每一工作项的单个特性的二进制值。GPU48可使用所述单个特性来基于先前执行的工作项的结果识别工作项是相关还是无关。
在其它实例中,剔除缓冲器76可包含对于核心的每一工作项的大于单个位的存储。举例来说,一个以上值可存储在剔除缓冲器76中以描述核心的每一工作项的多种特性。在非限制性图像处理实例中,GPU48可对像素数据执行工作项以确定所述像素数据的红绿蓝(RGB)特性。因此,剔除缓冲器76可包含允许存储对应于所执行工作项的红、绿和蓝分量的三个值的存储。在此实例中,GPU48和剔除模块80可基于存储在剔除缓冲器76中的值中的任一者剔除工作项。应理解,剔除缓冲器76的配置(例如,能力和容量)可取决于应用程序和GPU。举例来说,一些GPU可经设计以为相对较大且多功能性的剔除缓冲器提供相对较大量的存储器。其它GPU可不能够提供此种多功能性。因此,应理解,所提供的实例并非可实施的剔除缓冲剂的仅有配置。
剔除模块80可负责存取存储在剔除缓冲器76中的值且基于存储在剔除缓冲器76中的值剔除无关指令。根据一些实例,剔除模块80在定序器模块72准备且分配指令到SP84之前存取存储在剔除缓冲器76中的值。如相对于图7较详细描述的,剔除模块80可读取存储在剔除缓冲器76中的值,且在工作项和工作组等级两者上剔除指令。举例来说,剔除模块80可读取存储在剔除缓冲器76中的值,且基于所述值确定工作项的整个工作组无关。剔除模块80还可读取存储在剔除缓冲器76中的值,且基于所述值确定个别工作项无关。在剔除模块80已剔除无关指令之后,定序器模块72可准备并分配剩余指令到SP84。
本发明的方面涉及GPU48利用剔除缓冲器76和剔除模块80来在执行具有处理相同输入数据的一个以上核心的应用程序时剔除无关指令。在一实例中,GPU48从主机处理器(例如图1中所示的主机处理器24)或其它计算单元接收界定多个核心的指令和数据。在接收到所述核心之后,定序器模块72可即刻最初准备与第一核心相关联的指令和数据供SP84处理。举例来说,定序器模块72可将第一核心的指令组织成工作项和工作组。
在产生工作组网格之后,定序器模块72的剔除模块80可即刻查询剔除缓冲器76以确定是否执行指令剔除。根据一些实例,剔除模块80不对指令的第一核心执行指令剔除,因为在一些实例中,剔除缓冲器值是基于所执行指令的结果而产生。因此,剔除缓冲器76在执行第一核心之前是空的。定序器模块72进行到将与第一核心相关联的指令(例如,工作组和工作项)分配到SP84,SP84执行所述指令。
在SP84已执行第一核心的指令之后,SP84用剔除缓冲器值填入或更新剔除缓冲器76。举例来说,SP84可用表示第一核心的所执行工作项的特性的一个或一个以上值填入剔除缓冲器76。所述特性可用以确定与下一核心相关联的后续工作项是相关还是无关。
GPU可接着通过执行第二核心而继续。举例来说,定序器模块72可通过组织与第二核心相关联的工作组的一个或一个以上网格而准备与第二核心相关联的指令和数据供SP84处理。剔除模块80接着查询剔除缓冲器76以识别用于剔除的指令。举例来说,剔除模块80读取存储在剔除缓冲器76中的值,且在通过定序器模块72将指令分配到SP84之前确定是否剔除所述指令。在一些实例中,剔除模块80依据工作项和工作组两者剔除指令。在剔除模块80已完成指令剔除之后,定序器模块72将指令分配到SP84,SP84执行所述指令且更新剔除缓冲器76的值。可重复此实例过程,直到GPU48已执行所有核心为止。
相对于图2描述的实例提及定序器模块72使用剔除缓冲器76和剔除模块80执行所有指令剔除(例如,工作项剔除和工作组剔除)。然而,应理解,GPU48的其它模块可负责指令剔除,且其它模块可与剔除缓冲器76交互。根据一个实例,定序器模块72可负责仅执行工作组剔除,而SP84的线程设置模块88负责工作项剔除。举例来说,定序器模块72可使用剔除缓冲器76和剔除模块80执行工作组剔除,如上所述。在执行工作组剔除之后,定序器模块76可将剩余工作组(例如,在剔除之后剩余的工作组)分配到SP84。在此实例中,线程设置模块88可负责工作项剔除。举例来说,在从定序器模块72接收到工作组之后,线程设置模块88可利用剔除缓冲器76执行工作项剔除。根据一些方面,线程设置模块88读取剔除缓冲器76,且基于存储在剔除缓冲器76中的一个或一个以上值确定是否剔除工作项。此外,线程设置模块88可基于存储在剔除缓冲器76中的剔除缓冲器值移除无关工作项,随后组织线程供ALU92执行。
根据一些方面,为在GPU48中实现指令剔除,GPU48执行具有指令剔除命令的应用程序。举例来说,GPU48执行指令剔除命令,使得当执行指令时,GPU48产生结果以及表示所述结果的特性的一个或一个以上值供存储在剔除缓冲器76中。GPU48还可执行使得剔除模块80能够读取剔除缓冲器76的值且执行指令剔除的指令剔除命令。
本发明的某些方面涉及允许用户(例如,计算机程序员)产生具有指令剔除命令的应用程序的一个或一个以上API命令。举例来说,API命令还可用以发指令给GPU48以产生一个或一个以上剔除缓冲器值并将其存储到指定剔除缓冲器,例如剔除缓冲器76。API命令还可发指令给GPU48以在组织并分配指令到SP84之前分析剔除缓冲器值,且基于所述值执行指令剔除。举例来说,API命令可发指令给GPU48以基于剔除缓冲器值丢弃不相关的指令,使得所述指令不被分配到GPU48的SP84。
图3为说明与在图3中表示为工作组0的工作组相关联的工作项网格的框图。再者,每一工作项可涉及可由GPU的SP(例如GPU48的SP84中的一者)执行的个别指令(例如,基本工作单元)。仅出于说明的目的,图3中所示的工作项是相对于图2中所示的实例GPU48而描述。
工作项(例如图3的工作组0中所示的工作项)可在由SP84执行之前组织成线程(例如,按提供ALU的高效执行的配置而组织的一个或一个以上指令)。举例来说,SP84中的一者(例如SP84A)可从定序器模块72接收工作组0,且通过使用与工作组0相关联的工作项产生线程而准备用于执行的工作组0。
根据一些实例,SP84的效率可受到组织成线程的工作项的相关性的影响。举例来说,如果线程是由无关工作项产生且SP84被执行无关工作项占据,则可不利地影响SP84的效率。在一些实例中,多核心程序的工作组可基于先前执行的指令的结果而变得“稀疏”。举例来说,“稀疏”工作组可包含由一个或一个以上无关工作项分开的相关工作项。在图3中所示的实例中,如果先前执行的指令致使若干工作项无关,则工作组0可被视为“稀疏”。
本发明的方面涉及识别无关工作项,以及在将无关工作项组织成线程之前移除所述工作项。在一些实例中,可在被分配到SP84之前剔除工作项。举例来说,剔除模块80可利用存储在剔除缓冲器76中的值来在将工作项分配到SP84之前确定是否剔除工作项。在一些实例中,GPU48可在执行工作项剔除之前执行工作组剔除,如相对于图4所描述。
图4是说明可由GPU(例如图2中所示的GPU48)执行的成三核心(例如,第一核心124、第二核心128,和第三核心132)布置的工作组网格的框图。再者,可执行每一核心124到132以执行与给定应用程序有关的特定功能。在一些实例中,核心124到132可界定用于色彩校正算法、面部检测算法、图案辨识算法、扩增实境应用、多种算法应用(例如,小波变换、傅立叶变换,及其类似者)或多种其它应用的功能。仅出于说明的目的,相对于图2中所示的实例GPU48描述图4。
图4中所示的工作组的网格可由定序器模块72产生。举例来说,定序器模块72可从主机处理器(例如图1中所示的主机处理器24)或GPU存储器64接收指令和数据,且通过将指令组织成工作组网格而准备用于执行的指令。在一些实例中,核心124到132中的每一者的工作组涉及相同输入数据。举例来说,核心124的工作组0包含与和核心128的工作组0以及核心132的工作组0相同的输入数据相关联的指令。此外,GPU48可依次地执行核心124到132,使得执行核心124之后执行核心128,且执行核心128之后执行核心132。
根据本发明的一些方面,一个核心的一个或一个以上工作组的结果可致使另一核心的工作组无关。举例来说,GPU48可执行核心124的工作组0,且核心124的工作组0的结果可致使与核心128的工作组0相关联的指令无关。如果与工作组0相关联的指令并不使核心124到132的长远目标有进展,则核心128的工作组0可被视为无关。举例来说,在实例图像处理应用程序中,核心124到132的一个长远目标可为识别图像中的人面部。
本发明的方面可经实施以在无关工作组可被执行之前剔除或移除所述工作组。在上文所描述的实例中,GPU48可在无关工作组0可被分配到SP84之前移除工作组0。举例来说,剔除模块80可利用存储在剔除缓冲器76中的值来确定工作组0无关,且在工作组0可被分配到SP84之前剔除工作组0。
如所提及,根据一个专用实施方案,GPU48可执行核心124到132以对图像(例如图5A到5C中所示的图像)进行特定任务。
图5A到5C是说明用三个核心(例如,图5A如中所示核心150、图5B如中所示核心158,和图5C如中所示核心164)处理实例图像146的框图。举例来说,核心150、158和164各自包含用于处理与图像146相关联的图像数据的指令。仅出于说明的目的,相对于图2中所示的实例GPU48描述图5A到5C。
根据图5A到5C中所示的实例,图像146为包含1024个像素的正方形、约16兆字节(MB)的图像。每一核心150、158和164包含可与图像的特定像素有关的工作项(例如,表示为相对较小的块)。因此,当GPU48执行工作项时,可根据与所述工作项相关联的指令处理(例如,分析)图像146的对应像素。
每一核心150、158和164还包含包括与图像146的特定像素群组有关的指令的工作组(例如,表示为相对较大的块)。相对于图5A到5C描述的像素数据、工作项与工作组之间的关系仅为可能指令结构的实例。在其它实例中,工作项可与图像146的多于或少于一个像素有关。
根据一个非限制性实例,核心150、158和164实施为用于检测图像146中的一个或一个以上人面部的面部检测应用程序的部分。在此实例中,核心150、158和164经实施以识别包含与人面部相关联的某些预定特性(例如,色彩、色调、饱和度、亮度,或其它属性)的像素。GPU48可识别图像146中的满足核心150、158和164中阐述的所有准则的任何像素或像素群组作为面部的候选像素。举例来说,如果像素不包含核心150的特征,则致使与核心158和核心164中的像素有关的指令无关。
如相对于图5A到5C更详细地展示及描述,当GPU48执行核心150、158和164中的每一者时,与后续核心相关联的相关指令变得越来越“稀疏”。举例来说,在执行每一核心之后,致使后续核心的更多指令无关,因为GPU48识别出不包含面部像素的预定特性的更多像素。根据本发明的方面,GPU48可实施指令剔除以便在无关指令被分配到SP84用于执行之前移除无关指令。以此方式,GPU48的效率得以提高,因为SP84不被执行无关指令占据。
图5A是说明用于处理图像146的第一核心150的框图。如图5A中所示,所述第一核心包含工作组154A到154P(统称工作组154),其各自包含多个工作项156。GPU48可通过执行与工作组154A到154P相关联的所有工作项156而执行第一核心150。举例来说,GPU48可从主机处理器(例如图1中所示的主机处理器24)或另一计算单元接收第一核心150。在接收到第一核心150之后,定序器模块72可即刻将第一核心150组织成工作组154。
定序器模块72可接着进行到将所有工作组154和工作项156分配到SP84。SP84接着执行工作组154和相关联工作项156,且用一个或一个以上剔除缓冲器值填入剔除缓冲器76。所述剔除缓冲器值可表示第一核心150的所执行工作项的特性。所述特性可用以确定与下一核心相关联的后续指令是相关还是无关。举例来说,如果特定工作项的结果指示与所述特定工作项相关联的像素不包含核心150的所需预定义属性(例如预定义色彩、色调、饱和度、亮度,或其它属性),则负责执行所述指令的SP可将指示与所述像素相关联的后续工作项无关的值存储到剔除缓冲器76。如果同一SP负责执行整个工作组,则所述SP还可将指示与整个工作组相关联的像素无关的值存储到剔除缓冲器76。在GPU48已执行核心150且填入剔除缓冲器76之后,GPU48可进行到执行如图5B中所示的核心158。
图5B是说明根据本发明的方面的在第二核心158上的指令剔除的框图。根据本发明的一些方面,在剔除之前,第二核心158最初包含对应于图5A中所示的工作组154A到154P的工作组160A到160P(统称工作组160)。此外,在剔除之前,工作组160中的每一者最初包含一组全部工作项162,其对应于图5A中所示的工作项156。可对与图5A中所示的第一核心150相同的输入数据(即,图像146)执行工作组160和工作项162。
在图5B中所示的实例中,GPU48对来自第二核心158的无关工作组160和工作项162执行指令剔除。举例来说,在执行第一核心150之后,GPU48可识别不包含核心150的预定属性的数个像素。与那些像素相关联的后续工作组和工作项可被认为对于检测图像146中的面部是无关的。GPU48可用以对无关工作组和工作项执行指令剔除。
根据本发明的一些方面,GPU48通过依据工作项和工作组两者实施剔除缓冲器76和剔除模块80来剔除指令。举例来说,在执行第一核心150之后,GPU48可确定用于工作组154M到154P的位置中的像素的后续指令无关。此外,GPU48可确定用于工作组154H(图5A中所示)内的某些像素的后续指令无关。因此,GPU48将指示与工作组160M到160P和某些工作项162相关联的像素数据无关的值存储到剔除缓冲器76。在执行核心158之后,GPU48可即刻使用剔除模块80剔除工作组160M到160P和某些工作项162。
在剔除模块80已完成指令剔除之后,定序器模块72组织剩余指令,且将所述指令分配到SP84。举例来说,根据一些方面,SP84经配置以接收以允许将指令容易地并行分配到ALU92(其可取决于GPU)的方式组织的指令。因此,定序器模块72可重新组织与第二核心158相关联的指令以优化分配和执行过程。
在接收到被剔除的指令组之后,SP84执行所述指令。此外,SP84可更新剔除缓冲器76中的值。举例来说,如果特定工作项162的结果指示与特定工作项162相关联的像素不包含核心158的所需预定义属性,则负责执行工作项162的SP可将指示与所述像素相关联的后续工作项无关的值存储到剔除缓冲器76。如果同一SP负责执行整个工作组,则所述SP还可将指示与整个工作组相关联的像素无关的值存储到剔除缓冲器76。在GPU48已执行核心158且填入剔除缓冲器76之后,GPU48可进行到执行如图5C中所示的核心164。
图5C是说明根据本发明的方面的在第三核心164上的指令剔除的框图。根据本发明的一些方面,在剔除之前,第三核心164最初包含对应于图5A中所示的工作组154A到154P的工作组166A到166P(统称工作组166)。此外,在剔除之前,工作组166中的每一者最初包含一组全部工作项168,其对应于图5A中所示的工作项156。可对与图5A中所示的第一核心150和图5B中所示的第二核心158相同的输入数据(即,图像146)执行工作组166和工作项168。
如图5C中所示,GPU48可在执行第三核心164之前进行指令剔除,从而进一步减小用于由GPU48的SP84处理的指令的数目。举例来说,在执行第二核心158之后,GPU48可确定用于工作组158A、158B、158E、158I和158M到158P的位置中的像素数据的后续指令无关。此外,GPU48可确定用于工作组158H(图5B中所示)内的某些像素数据的后续指令无关。因此,GPU48更新剔除缓冲器76中的值,其指示与工作组166A、166B、166E、166I和166M到166P和某些工作项168相关联的像素数据无关。在执行核心164之后,GPU48可即刻使用剔除模块80剔除工作组166A、166B、166E、166I和166M到166P以及某些工作项168,且执行剩余指令,如相对于图5B所描述。
如图5A到5C中所示的实例所说明,当应用程序包含致使其它指令无关的一些指令时,指令剔除可大大减小GPU的计算数目。剔除指令可提高GPU的总体效率,因为GPU不必将资源专用于分配和执行无关指令。
图5A到5C大体上描述GPU48在工作项和工作组等级两者上剔除指令。然而,在其它实例中,GPU48可执行工作项剔除或工作组剔除。此外,图5A到5C还描述逐核心的指令剔除。举例来说,GPU48可仅在执行核心的所有工作组和所有工作项之后才剔除指令。然而,在其它实例中,GPU48可以其它间隔执行指令剔除。根据一些方面,GPU48可在执行指令(以某一方式基于另一先前执行的指令)之前的任何时间执行指令剔除。
图6是说明根据本发明的方面的剔除指令的方法200的流程图。在一些实例中,可由GPU(例如图2中所示的GPU48)进行方法200。因此,仅出于说明的目的,将方法200描述为由图2中所示的实例GPU48进行。
根据本发明的方面,GPU48在执行一个或一个以上指令之后执行指令剔除。GPU48最初从例如主机处理器(例如图1中所示的主机处理器24)接收一个或一个以上指令。在接收到例如第一工作项之后,GPU48执行所述第一工作项(204)。在一些实例中,GPU48可通过用定序器模块72将第一工作项分配到SP84而执行所述工作项。SP84可接着通过建构一个或一个以上硬件线程且将所述硬件线程分配到ALU92用于执行而执行所述工作项。
在已执行第一工作项之后,GPU48产生一个或一个以上剔除值(208)。所述剔除缓冲器值可表示所执行工作项的特性。在一些实例中,所述特性可用以确定与和第一工作项相同的输入数据相关联的后续工作项是相关还是无关。再者,如果工作项不使指令并入的应用程序的目标或目的有进展,则所述工作项可被视为无关。举例来说,在图像处理上下文(例如相对于图5A到5C描述的面部检测实例)中,如果工作项不使识别图像中的面部的目的有进展,则所述工作项可被视为无关。
在一个实例中,剔除缓冲器值可为表示后续工作项是相关还是无关的单个二进制值。在其它实例中,可针对单个工作项存储一个以上剔除缓冲器值。举例来说,可针对单个工作项存储一个以上剔除缓冲器值,其中每一剔除缓冲器值对应于所执行工作项的不同特性。在非限制性图像处理实例中,GPU48可对像素数据执行工作项以确定像素数据的红绿蓝(RGB)特性。因此,可存储对应于所执行工作项的红、绿和蓝分量的三个剔除缓冲器值。在此实例中,GPU48和剔除模块80可基于存储在剔除缓冲器76中的值中的任一者剔除工作项。在产生剔除缓冲器值之后,GPU48可用一个或一个以上剔除值填入例如剔除缓冲器76等缓冲器(212)。
GPU48接着接收另一工作项(216)。在一些实例中,第二工作项取决于第一工作项,且与和第一工作项相同的输入数据相关联。举例来说,仅当第一工作项的结果评估为某一预定值或多个预定值中的一者时,第二工作项才可能相关。在接收到第二工作项之后,GPU48可即刻分析与第二工作项相关联的剔除缓冲器值(220)。根据一些方面,GPU48为剔除缓冲器值编索引,使得GPU48可识别出第二工作项对应于相同输入数据且取决于第一工作项。因此,GPU48可基于剔除缓冲器值确定是否执行所述第二工作项(224)。
根据一些实例,GPU48可在GPU48基于剔除缓冲器值确定第二工作项相关的情况下执行所述第二工作项(228)。在执行所述第二工作项之后,GPU48可开始通过产生表示第二工作项的结果的特性的剔除值(步骤208)而重复所述过程。或者,GPU48可在GPU48基于剔除缓冲器值确定第二工作项无关的情况下不执行第二工作项,且可丢弃所述第二工作项(232)。如果GPU48不执行第二工作项,则GPU48可直接进行到接收下一工作项(216)。
图6的方法描述依据工作项的指令剔除。举例来说,工作项描述为个别地执行,剔除值描述为个别地产生,等。然而,应理解,实际上,GPU可并行地执行一个以上指令。根据,可实质上同时将一个以上值写入到剔除缓冲器76。此外,GPU可实质上同时分析一个以上剔除缓冲器值(因其涉及新指令)。如相对于图5A到5C所描述,在一些实例中,GPU48可在执行某一数目的指令之后(例如,在执行指令的核心)之后执行指令剔除,且可依据个别工作项或群组(例如,工作组)执行指令剔除。
图7是说明根据本发明的方面的可经实施以剔除指令的指令流250的流程图。在一些实例中,指令流250可由例如图2中所示的GPU48等GPU实施。因此,仅出于说明的目的,将指令流250描述为由图2中所示的实例GPU48实施。图7依据工作组和工作项两者展示指令剔除。然而,应理解,例如GPU48等GPU可仅依据工作组或仅依据工作项执行指令剔除。
根据本发明的方面,GPU48接收指令,且将所述指令组织成一个或一个以上工作组(254)。在一些实例中,GPU48可将指令组织成一个或一个以上工作组网格,例如图4中所示的工作组网格。在已将指令组织成工作组之后,GPU48执行工作组剔除(258)。举例来说,GPU48可通过分析存储在剔除缓冲器76中的值且使所述值与当前工作组的组相关来执行工作组剔除。GPU48可剔除GPU48识别为完全由无关指令组成的任何工作组。在剔除工作组之后,GPU48可设置用于执行的工作组(262)。举例来说,GPU48可将剩余工作组重新组织成允许将工作组分配到SP84的配置。
在一些实例中,GPU48接着执行工作项剔除(266)。GPU48可依据工作组执行工作项剔除。举例来说,GPU48可分析存储在剔除缓冲器76中的值,且使所述值与工作组的工作项相关,一次一个工作组。GPU48可剔除GPU识别为无关(例如,根据剔除缓冲器值)的任何工作项。在剔除工作项之后,GPU48可设置用于执行的工作项(270)。举例来说,GPU48可将剩余工作项重新组织成允许将工作组建置成线程且由SP84执行的配置。
接下来,GPU48可执行一个或一个以上工作组和相关联的工作项(274)。在执行指令之后,GPU48可更新用于剔除后续工作组和工作项的值(278)。举例来说,GPU48可用表示所执行指令的结果的特性的值更新剔除缓冲器76。
本发明的技术大体上包含使用一个以上核心执行用于处理输入数据的应用程序。在执行第一核心的工作项和工作组之后,GPU可即刻设定表示第二核心的工作项和工作组是否相关的剔除缓冲器值。即,GPU可基于第一核心的结果设定剔除缓冲器值,所述剔除缓冲器值表示与第一核心的工作项和工作组中的每一者的相同输入数据相关联的第二核心的相应工作项和工作组是否相关。因此,在执行第一核心之后,GPU48可利用所述剔除缓冲器值来剔除第二核心中的无关工作项和工作组,使得不执行所述无关工作项和工作组。
因此,本发明的方面大体上涉及指令剔除。应理解,相对于上图描述的实例和方面仅提供为实例。本发明的方面还涉及执行指令剔除的其它方式。举例来说,尽管将指令剔除描述为完全由GPU进行,但在另一实例中,指令可由计算组件或装置的组合来进行。在一个实例中,例如图2中所示的剔除模块80和剔除缓冲器76等剔除模块和剔除缓冲器可实施于在GPU外部的组件中。在此实例中,中央处理单元或主机处理器可存取剔除缓冲器,且在将指令提供到GPU之前实施指令剔除。
此外,应理解,本发明的方面大体上涉及在无关工作项和工作组被执行之前剔除无关工作项和工作组。如上所述,术语“工作项”大体上描述界定用于处理输入数据的功能的一个或一个以上指令,其可包含一个或一个以上个别指令。“工作项”在一些架构中还可称为“线程”。此外,应理解,术语“工作组”大体上是指工作项的预定义群组。“工作组”在一些架构中还可称为“线程块”。
在一个或一个以上实例中,所描述的功能可以硬件、在硬件上执行的软件、在硬件上执行的固件或其任何组合来实施。在一些实例中,存储在计算机可读媒体上的指令可致使硬件组件执行上文所描述的其相应功能。计算机可读媒体可包含计算机数据存储媒体。数据存储媒体可为可由一个或一个以上计算机或一个或一个以上处理器存取以检索用于实施本发明中描述的技术的指令、代码和/或数据结构的任何可用的媒体。借助于实例而非限制,此些计算机可读媒体可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置、快闪记忆体,或可用以携载或存储呈指令或数据结构的形式且可由计算机存取的所需程序代码的任何其它媒体。上述各项的组合也应包含在计算机可读媒体的范围内。
代码可由一个或一个以上处理器执行,所述一个或一个以上处理器例如一个或一个以上DSP、通用微处理器、ASIC、FPGA,或其它等效集成或离散逻辑电路。因此,术语“处理器”在本文中使用时可指前文结构或适合于实施本文中所描述的技术的任何其它结构中的任一者。另外,在一些方面中,本文所述的功能性可在经配置用于编码和解码的专用硬件和/或软件模块内提供,或者并入在组合编解码器中。并且,可将所述技术完全实施于一个或一个以上电路或逻辑元件中。
本发明的技术可在广泛多种装置或设备中实施,包括无线手持机、集成电路(IC)或一组IC(例如,芯片组)。本发明中描述各种组件、模块或单元是为了强调,其经配置以执行所揭示的技术的装置的功能方面,但未必需要通过不同硬件单元实现。确切地说,如上所述,各种单元可由互操作式硬件单元(包含如上所述的一个或一个以上处理器)的集合结合适当的软件和/或固件来加以组合。
已描述本发明的各种实例和方面。这些以及其它实例和方面在所附权利要求书的范围内。
Claims (37)
1.一种用图形处理单元GPU处理数据的方法,所述方法包括:
用所述GPU的着色器处理器执行第一工作项,其中所述第一工作项包含用于处理输入数据的一个或一个以上指令;
基于所述第一工作项的结果产生一个或一个以上值,其中所述一个或一个以上值表示所述结果的一个或一个以上特性;以及
基于所述一个或一个以上值确定是否执行第二工作项,其中所述第二工作项包含与用于处理所述输入数据的所述第一工作项的所述一个或一个以上指令相异的一个或一个以上指令。
2.根据权利要求1所述的方法,其进一步包括基于所述确定从指令流移除所述第二工作项。
3.根据权利要求2所述的方法,其中从所述指令流移除所述第二工作项进一步包括在调度所述第二工作项以由所述着色器处理器执行之前移除所述第二工作项。
4.根据权利要求1所述的方法,其进一步包括将基于所述第一工作项的所述结果的所述一个或一个以上值存储在缓冲器中。
5.根据权利要求4所述的方法,其中确定是否执行所述第二工作项进一步包括读取存储在所述缓冲器中的所述一个或一个以上值。
6.根据权利要求4所述的方法,其进一步包括:
用所述GPU的所述着色器处理器执行第三工作项,其中所述第三工作项包含用于处理所述输入数据的一个或一个以上指令;
基于所述第三工作项的结果产生一个或一个以上值,其中所述一个或一个以上值表示所述结果的一个或一个以上特性;
基于所述第三工作项的所述结果更新存储在所述缓冲器中的所述一个或一个以上值;以及
基于所述一个或一个以上值确定是否执行第四工作项。
7.根据权利要求1所述的方法,其中所述一个或一个以上值指示所述第二工作项的结果将含有相关数据,且在所述第二工作项的所述结果将不含有相关数据的情况下确定不执行所述第二工作项。
8.根据权利要求1所述的方法,其中所述第一工作项与应用程序的第一核心相关联,且所述第二工作项与所述应用程序的第二核心相关联,且其中所述第一工作项和所述第二工作项经配置以处理所述输入数据。
9.根据权利要求1所述的方法,其进一步包括:
用所述GPU的所述着色器处理器执行第一工作组,其中所述第一工作组与应用程序的第一核心相关联,且其中所述第一工作组包括包含用于处理输入数据的所述第一工作项的多个指令;
基于所述第一工作组的结果产生一个或一个以上值,其中所述一个或一个以上值表示所述结果的一个或一个以上特性;以及
基于所述一个或一个以上值确定是否执行第二工作组,其中所述第二工作组与所述应用程序的第二核心相关联,且其中所述第二工作组包括包含用于处理所述输入数据的所述第二工作项的多个指令。
10.一种用图形处理单元GPU处理数据的设备,所述设备包括:
着色器处理器,其经配置以执行包含用于处理输入数据的一个或一个以上指令的第一工作项,且基于所述第一指令的结果产生一个或一个以上值,其中所述一个或一个以上值表示所述结果的一个或一个以上特性;以及
剔除模块,其经配置以基于所述一个或一个以上值确定是否执行包含与所述第一工作项的所述一个或一个以上指令相异的一个或一个以上指令的第二工作项。
11.根据权利要求10所述的设备,其中所述剔除模块进一步经配置以基于所述确定从指令流移除所述第二工作项。
12.根据权利要求11所述的设备,其中所述剔除模块经配置以在调度所述第二工作项以由所述着色器处理器执行之前从所述指令流移除所述第二工作项。
13.根据权利要求10所述的设备,其进一步包括剔除缓冲器,所述剔除缓冲器经配置以基于所述第一工作项的所述结果存储所述一个或一个以上值。
14.根据权利要求13所述的设备,其中所述剔除模块经配置以通过读取存储在所述剔除缓冲器中的所述一个或一个以上值来确定是否执行所述第二工作项。
15.根据权利要求13所述的方法,其中所述着色器处理器进一步经配置以执行第三工作项,其中所述第三工作项包含一个或一个以上指令,所述一个或一个以上指令用于处理所述输入数据以:基于所述第三工作项的结果产生一个或一个以上值,其中所述一个或一个以上值表示所述结果的一个或一个以上特性;以及基于所述第三工作项的所述结果更新存储在所述剔除缓冲器中的所述一个或一个以上值,且其中所述剔除模块进一步经配置以基于所述一个或一个以上值确定是否执行第四工作项。
16.根据权利要求10所述的设备,其中所述一个或一个以上值指示所述第二工作项的结果是否将含有相关数据,且其中所述剔除模块经配置以在所述第二工作项的所述结果将不含有相关数据的情况下确定不执行所述第二工作项。
17.根据权利要求10所述的设备,其中所述第一工作项与应用程序的第一核心相关联,且所述第二工作项与所述应用程序的第二核心相关联,且其中所述第一工作项和所述第二工作项经配置以处理所述输入数据。
18.根据权利要求10所述的设备,其进一步包括:与第一核心相关联的第一工作组,其中所述第一工作组包括包含所述第一工作项的多个指令;以及与第二核心相关联的第二工作组,其中所述第二工作组包括包含所述第二工作项的多个指令,且其中所述着色器处理器进一步经配置以执行所述第一工作组且基于所述第一工作组的结果产生一个或一个以上值,其中所述一个或一个以上值表示所述结果的一个或一个以上特性,且其中所述剔除模块进一步经配置以基于所述一个或一个以上值确定是否执行所述第二工作组。
19.根据权利要求10所述的设备,其中所述着色器处理器和剔除模块包含在便携式计算装置中。
20.一种计算机可读存储媒体,所述计算机可读存储媒体编码有用于致使计算装置的一个或一个以上可编程处理器进行以下操作的指令:
执行第一工作项,其中所述第一工作项包含用于处理输入数据的一个或一个以上指令;
基于所述第一工作项的结果产生一个或一个以上值,其中所述一个或一个以上值表示所述结果的一个或一个以上特性;以及
基于所述一个或一个以上值确定是否执行第二工作项,其中所述第二工作项包含与用于处理所述输入数据的所述第一工作项相异的一个或一个以上指令。
21.根据权利要求20所述的计算机可读存储媒体,其进一步包括用于致使所述计算装置的一个或一个以上可编程处理器基于所述确定从指令流移除所述第二工作项的指令。
22.根据权利要求21所述的计算机可读存储媒体,其中从所述指令流移除所述第二工作项进一步包括在调度所述第二工作项以执行之前移除所述第二工作项。
23.根据权利要求20所述的计算机可读存储媒体,其进一步包括用于致使所述计算装置的一个或一个以上可编程处理器将基于所述第一工作项的所述结果的所述一个或一个以上值存储在缓冲器中的指令。
24.根据权利要求23所述的计算机可读存储媒体,其中确定是否执行所述第二工作项进一步包括读取存储在所述缓冲器中的所述一个或一个以上值。
25.根据权利要求23所述的计算机可读存储媒体,其进一步包括用于致使所述计算装置的一个或一个以上可编程处理器进行以下操作的指令:
执行第三指令,其中所述第三工作项包含用于处理输入数据的一个或一个以上指令;
基于所述第三工作项的结果产生一个或一个以上值,其中所述一个或一个以上值表示所述结果的一个或一个以上特性;
基于所述第三工作项的所述结果更新存储在所述缓冲器中的所述一个或一个以上值;以及
基于所述一个或一个以上值确定是否执行第四工作项。
26.根据权利要求20所述的计算机可读存储媒体,其中所述一个或一个以上值指示所述第二工作项的结果是否将含有相关数据,且在所述第二工作项的所述结果将不含有相关数据的情况下确定不执行所述第二工作项。
27.根据权利要求20所述的计算机可读存储媒体,其中所述第一工作项与应用程序的第一核心相关联,且所述第二工作项与所述应用程序的第二核心相关联,且其中所述第一工作项和所述第二工作项经配置以处理所述输入数据。
28.根据权利要求27所述的计算机可读存储媒体,其进一步包括用于致使所述计算装置的一个或一个以上可编程处理器进行以下操作的指令:
用所述GPU的所述着色器处理器执行第一工作组,其中所述第一工作组与应用程序的第一核心相关联,且其中所述第一工作组包括包含用于处理输入数据的所述第一工作项的多个指令;
基于所述第一工作组的结果产生一个或一个以上值,其中所述一个或一个以上值表示所述结果的一个或一个以上特性;以及
基于所述一个或一个以上值确定是否执行第二工作组,其中所述第二工作组与所述应用程序的第二核心相关联,且其中所述第二工作组包括包含用于处理所述输入数据的所述第二工作项的多个指令。
29.一种用图形处理单元GPU处理数据的设备,所述设备包括:
用于执行第一工作项的装置,其中所述第一工作项包含用于处理输入数据的一个或一个以上指令;
用于基于所述第一工作项的结果产生一个或一个以上值的装置,其中所述一个或一个以上值表示所述结果的一个或一个以上特性;以及
用于基于所述一个或一个以上值确定是否执行第二工作项的装置,其中所述第二工作项包含与用于处理所述输入数据的所述第一工作项相异的一个或一个以上指令。
30.根据权利要求29所述的方法,其进一步包括用于基于所述确定从指令流移除所述第二工作项的装置。
31.根据权利要求30所述的方法,其中从所述指令流移除所述第二工作项进一步包括在调度所述第二工作项以执行之前移除所述第二工作项。
32.根据权利要求29所述的方法,其进一步包括用于将基于所述第一工作项的所述结果的所述一个或一个以上值存储在缓冲器中的装置。
33.根据权利要求32所述的方法,其中确定是否执行所述第二工作项进一步包括读取存储在所述缓冲器中的所述一个或一个以上值。
34.根据权利要求32所述的方法,其进一步包括:
用于执行第三工作项的装置,其中所述第三工作项包含用于处理所述输入数据的一个或一个以上指令;
用于基于所述第三工作项的结果产生一个或一个以上值的装置,其中所述一个或一个以上值表示所述结果的一个或一个以上特性;
用于基于所述第三工作项的所述结果更新存储在所述缓冲器中的所述一个或一个以上值的装置;以及
用于基于所述一个或一个以上值确定是否执行第四工作项的装置,其中所述第四工作项包含用于处理所述输入数据的一个或一个以上指令。
35.根据权利要求29所述的方法,其中所述一个或一个以上值指示所述第二工作项的结果是否将含有相关数据,且在所述第二工作项的所述结果将不含有相关数据的情况下确定不执行所述第二工作项。
36.根据权利要求29所述的方法,其中所述第一工作项与应用程序的第一核心相关联,且所述第二工作项与所述应用程序的第二核心相关联,且其中所述第一工作项和所述第二工作项经配置以处理所述输入数据。
37.根据权利要求29所述的方法,其进一步包括:
用于用所述GPU的所述着色器处理器执行第一工作组的装置,其中所述第一工作组与应用程序的第一核心相关联,且其中所述第一工作组包括包含用于处理输入数据的所述第一工作项的多个指令;
用于基于所述第一工作组的结果产生一个或一个以上值的装置,其中所述一个或一个以上值表示所述结果的一个或一个以上特性;以及
用于基于所述一个或一个以上值确定是否执行第二工作组的装置,其中所述第二工作组与所述应用程序的第二核心相关联,且其中所述第二工作组包括包含用于处理所述输入数据的所述第二工作项的多个指令。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/181,233 | 2011-07-12 | ||
US13/181,233 US9195501B2 (en) | 2011-07-12 | 2011-07-12 | Instruction culling in graphics processing unit |
PCT/US2011/064600 WO2013009341A1 (en) | 2011-07-12 | 2011-12-13 | Instruction culling in graphics processing unit |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103649917A true CN103649917A (zh) | 2014-03-19 |
CN103649917B CN103649917B (zh) | 2018-05-29 |
Family
ID=45470699
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180072234.1A Active CN103649917B (zh) | 2011-07-12 | 2011-12-13 | 图形处理单元中的指令剔除 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9195501B2 (zh) |
EP (1) | EP2732370B1 (zh) |
JP (1) | JP5778343B2 (zh) |
KR (1) | KR101609079B1 (zh) |
CN (1) | CN103649917B (zh) |
WO (1) | WO2013009341A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106462426A (zh) * | 2014-05-30 | 2017-02-22 | 苹果公司 | 用于图形处理单元的组合计算任务 |
CN109791507A (zh) * | 2016-10-21 | 2019-05-21 | 超威半导体公司 | 改进分布式gpus的数据局部性的机制 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9830163B2 (en) * | 2012-06-08 | 2017-11-28 | Advanced Micro Devices, Inc. | Control flow in a heterogeneous computer system |
US9286648B2 (en) * | 2012-08-03 | 2016-03-15 | Nadar Mariappan S | Zero communication block partitioning |
KR102269271B1 (ko) * | 2014-09-12 | 2021-06-28 | 삼성전자주식회사 | 오픈 컴퓨팅 언어 기반의 애플리케이션 실행 방법 및 장치 |
US10796397B2 (en) * | 2015-06-12 | 2020-10-06 | Intel Corporation | Facilitating dynamic runtime transformation of graphics processing commands for improved graphics performance at computing devices |
KR20180038793A (ko) * | 2016-10-07 | 2018-04-17 | 삼성전자주식회사 | 영상 데이터 처리 방법 및 장치 |
US10269167B1 (en) | 2018-05-21 | 2019-04-23 | Apple Inc. | Indirect command buffers for graphics processing |
US11789982B2 (en) * | 2020-09-23 | 2023-10-17 | Electronic Arts Inc. | Order independent data categorization, indication, and remediation across realtime datasets of live service environments |
KR20220102339A (ko) * | 2021-01-13 | 2022-07-20 | 삼성전자주식회사 | 전자 장치 및 전자 장치의 커널 모듈 로딩 방법 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060150161A1 (en) * | 2004-12-30 | 2006-07-06 | Board Of Control Of Michigan Technological University | Methods and systems for ordering instructions using future values |
CN101228552A (zh) * | 2005-07-27 | 2008-07-23 | 光荣株式会社 | 脸图像检测装置、脸图像检测方法和脸图像检测程序 |
CN101295363A (zh) * | 2007-04-23 | 2008-10-29 | 三菱电机株式会社 | 从距离图像确定物体姿势的方法和系统 |
US7528843B1 (en) * | 2005-08-05 | 2009-05-05 | Nvidia Corporation | Dynamic texture fetch cancellation |
US20090251475A1 (en) * | 2008-04-08 | 2009-10-08 | Shailendra Mathur | Framework to integrate and abstract processing of multiple hardware domains, data types and format |
US20110063311A1 (en) * | 2009-09-10 | 2011-03-17 | Advanced Micro Devices, Inc. | Course Grain Command Buffer |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5793386A (en) | 1996-06-28 | 1998-08-11 | S3 Incorporated | Register set reordering for a graphics processor based upon the type of primitive to be rendered |
US6742111B2 (en) * | 1998-08-31 | 2004-05-25 | Stmicroelectronics, Inc. | Reservation stations to increase instruction level parallelism |
US7162716B2 (en) * | 2001-06-08 | 2007-01-09 | Nvidia Corporation | Software emulator for optimizing application-programmable vertex processing |
JP3612294B2 (ja) * | 2001-08-06 | 2005-01-19 | 松下電器産業株式会社 | デバッグ方法およびデバッグ装置 |
US7015913B1 (en) * | 2003-06-27 | 2006-03-21 | Nvidia Corporation | Method and apparatus for multithreaded processing of data in a programmable graphics processor |
US7239322B2 (en) * | 2003-09-29 | 2007-07-03 | Ati Technologies Inc | Multi-thread graphic processing system |
US7426724B2 (en) * | 2004-07-02 | 2008-09-16 | Nvidia Corporation | Optimized chaining of vertex and fragment programs |
US8624906B2 (en) | 2004-09-29 | 2014-01-07 | Nvidia Corporation | Method and system for non stalling pipeline instruction fetching from memory |
US7765547B2 (en) * | 2004-11-24 | 2010-07-27 | Maxim Integrated Products, Inc. | Hardware multithreading systems with state registers having thread profiling data |
US7324113B1 (en) | 2005-03-09 | 2008-01-29 | Nvidia Corporation | Perspective correction computation optimization |
US7577826B2 (en) * | 2006-01-30 | 2009-08-18 | Sony Computer Entertainment Inc. | Stall prediction thread management |
US8345053B2 (en) * | 2006-09-21 | 2013-01-01 | Qualcomm Incorporated | Graphics processors with parallel scheduling and execution of threads |
US20080084424A1 (en) * | 2006-10-09 | 2008-04-10 | Silicon Integrated Systems Corp. | Early retiring instruction mechanism, method for performing the same and pixel processing system thereof |
JP5059503B2 (ja) | 2007-07-13 | 2012-10-24 | 花王株式会社 | 画像合成装置、画像合成方法及び画像合成プログラム |
JP2009069921A (ja) * | 2007-09-11 | 2009-04-02 | Hitachi Ltd | マルチプロセッサシステム |
US8555266B2 (en) * | 2007-11-13 | 2013-10-08 | International Business Machines Corporation | Managing variable assignments in a program |
US8633936B2 (en) | 2008-04-21 | 2014-01-21 | Qualcomm Incorporated | Programmable streaming processor with mixed precision instruction execution |
US9354944B2 (en) | 2009-07-27 | 2016-05-31 | Advanced Micro Devices, Inc. | Mapping processing logic having data-parallel threads across processors |
US20110055838A1 (en) * | 2009-08-28 | 2011-03-03 | Moyes William A | Optimized thread scheduling via hardware performance monitoring |
US8854381B2 (en) * | 2009-09-03 | 2014-10-07 | Advanced Micro Devices, Inc. | Processing unit that enables asynchronous task dispatch |
US10360039B2 (en) * | 2009-09-28 | 2019-07-23 | Nvidia Corporation | Predicted instruction execution in parallel processors with reduced per-thread state information including choosing a minimum or maximum of two operands based on a predicate value |
US8761525B2 (en) * | 2009-11-20 | 2014-06-24 | Tripurari Singh | Method and system for compressive color image sampling and reconstruction |
WO2012003997A1 (en) * | 2010-07-09 | 2012-01-12 | Martin Vorbach | Data processing device and method |
US8583894B2 (en) * | 2010-09-09 | 2013-11-12 | Advanced Micro Devices | Hybrid prefetch method and apparatus |
US8549504B2 (en) * | 2010-09-25 | 2013-10-01 | Intel Corporation | Apparatus, method, and system for providing a decision mechanism for conditional commits in an atomic region |
US8782645B2 (en) * | 2011-05-11 | 2014-07-15 | Advanced Micro Devices, Inc. | Automatic load balancing for heterogeneous cores |
US8683468B2 (en) * | 2011-05-16 | 2014-03-25 | Advanced Micro Devices, Inc. | Automatic kernel migration for heterogeneous cores |
US9412193B2 (en) * | 2011-06-01 | 2016-08-09 | Apple Inc. | Run-time optimized shader program |
US20120331278A1 (en) * | 2011-06-23 | 2012-12-27 | Mauricio Breternitz | Branch removal by data shuffling |
US8756591B2 (en) * | 2011-10-03 | 2014-06-17 | International Business Machines Corporation | Generating compiled code that indicates register liveness |
US20140375658A1 (en) * | 2013-06-25 | 2014-12-25 | Ati Technologies Ulc | Processor Core to Graphics Processor Task Scheduling and Execution |
-
2011
- 2011-07-12 US US13/181,233 patent/US9195501B2/en active Active
- 2011-12-13 JP JP2014520175A patent/JP5778343B2/ja active Active
- 2011-12-13 WO PCT/US2011/064600 patent/WO2013009341A1/en active Application Filing
- 2011-12-13 KR KR1020147003584A patent/KR101609079B1/ko active IP Right Grant
- 2011-12-13 CN CN201180072234.1A patent/CN103649917B/zh active Active
- 2011-12-13 EP EP11807807.0A patent/EP2732370B1/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060150161A1 (en) * | 2004-12-30 | 2006-07-06 | Board Of Control Of Michigan Technological University | Methods and systems for ordering instructions using future values |
CN101228552A (zh) * | 2005-07-27 | 2008-07-23 | 光荣株式会社 | 脸图像检测装置、脸图像检测方法和脸图像检测程序 |
US7528843B1 (en) * | 2005-08-05 | 2009-05-05 | Nvidia Corporation | Dynamic texture fetch cancellation |
CN101295363A (zh) * | 2007-04-23 | 2008-10-29 | 三菱电机株式会社 | 从距离图像确定物体姿势的方法和系统 |
US20090251475A1 (en) * | 2008-04-08 | 2009-10-08 | Shailendra Mathur | Framework to integrate and abstract processing of multiple hardware domains, data types and format |
US20110063311A1 (en) * | 2009-09-10 | 2011-03-17 | Advanced Micro Devices, Inc. | Course Grain Command Buffer |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106462426A (zh) * | 2014-05-30 | 2017-02-22 | 苹果公司 | 用于图形处理单元的组合计算任务 |
CN106462426B (zh) * | 2014-05-30 | 2020-03-03 | 苹果公司 | 用于图形处理单元的组合计算任务 |
CN109791507A (zh) * | 2016-10-21 | 2019-05-21 | 超威半导体公司 | 改进分布式gpus的数据局部性的机制 |
Also Published As
Publication number | Publication date |
---|---|
KR20140035522A (ko) | 2014-03-21 |
EP2732370A1 (en) | 2014-05-21 |
US9195501B2 (en) | 2015-11-24 |
WO2013009341A1 (en) | 2013-01-17 |
JP5778343B2 (ja) | 2015-09-16 |
CN103649917B (zh) | 2018-05-29 |
KR101609079B1 (ko) | 2016-04-04 |
US20130016110A1 (en) | 2013-01-17 |
EP2732370B1 (en) | 2018-08-01 |
JP2014521167A (ja) | 2014-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103649917A (zh) | 图形处理单元中的指令剔除 | |
US9684944B2 (en) | Graph-based application programming interface architectures with node-based destination-source mapping for enhanced image processing parallelism | |
CN105159761B (zh) | 用于在多处理器上进行数据并行计算的应用编程接口 | |
CN103608777B (zh) | 图形处理单元中的存储器共享 | |
CN106251392B (zh) | 用于执行交织的方法和设备 | |
CN103999128B (zh) | 具有命令处理器的图形处理单元 | |
CN103460253B (zh) | 用于图形处理的像素值精简 | |
CN107004253B (zh) | 用于增强的图像处理并行性的具有等价类的基于图形的应用程序编程接口架构 | |
CN109154886B (zh) | 用于处理数据的方法和设备 | |
US8212825B1 (en) | System and method for geometry shading | |
CN117078832A (zh) | 用于经实施例化的几何结构的更有效的光线跟踪方法和装置 | |
US9886735B2 (en) | Hybrid engine for central processing unit and graphics processor | |
CN106462941B (zh) | Gpu中的共享寄存器的加载方案 | |
US20140257769A1 (en) | Parallel algorithm for molecular dynamics simulation | |
US20140052967A1 (en) | Method and apparatus for dynamic data configuration | |
CN103996216A (zh) | 用于曲面细分和几何着色器的电力高效属性处置 | |
Cho et al. | On-the-fly workload partitioning for integrated CPU/GPU architectures | |
WO2017164965A1 (en) | System characterization and configuration distribution for facilitating improved performance at computing devices | |
CN109074625A (zh) | 用于图形处理的每个着色器的前置码 | |
US9772864B2 (en) | Methods of and apparatus for multidimensional indexing in microprocessor systems | |
Fang et al. | ELMO: A User-Friendly API to enable local memory in OpenCL kernels | |
Gutierrez et al. | A fast level-set segmentation algorithm for image processing designed for parallel architectures | |
CN112130977A (zh) | 一种任务调度方法、装置、设备及介质 | |
Calı et al. | Performance analysis of Roberts edge detection using CUDA and OpenGL | |
US10209920B2 (en) | Methods and apparatuses for generating machine code for driving an execution unit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |