CN101542524A - 图形处理器的流水线化归约操作 - Google Patents
图形处理器的流水线化归约操作 Download PDFInfo
- Publication number
- CN101542524A CN101542524A CN200680056329A CN200680056329A CN101542524A CN 101542524 A CN101542524 A CN 101542524A CN 200680056329 A CN200680056329 A CN 200680056329A CN 200680056329 A CN200680056329 A CN 200680056329A CN 101542524 A CN101542524 A CN 101542524A
- Authority
- CN
- China
- Prior art keywords
- size
- frame
- texture buffer
- dwindled
- images
- 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
- 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
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformation in the plane of the image
- G06T3/40—Scaling the whole image or part thereof
Abstract
通常,在一个方案中,本公开内容描述了一种用于初始化纹理缓冲器以及通过利用该纹理缓冲器对归约操作进行流水线操作的方法。
Description
背景技术
图形处理单元(GPU)是可以用在例如个人计算机、工作站或游戏主机中的专用图形渲染设备。GPU在操作和显示计算机图形方面非常有效率。GPU包含多个处理单元,这些处理单元同时执行独立的操作(例如,在像素级上的颜色空间转换)。它们的高并行化结构可以使它们在复杂算法范围内比普通的中央处理单元(CPU)效率高。GPU可以采用使图形基元操作运行的比使用主CPU直接在屏幕上绘制快得多的方式,来实现多个图形基元。
GPU上的通用编程正在成为一种用于加速计算的高效且普遍的方式,并且结合CPU充当重要的计算单元。在实践中,可以对庞大数量的现有通用处理内核(例如纹理处理、矩阵和矢量计算)进行优化以便运行在GPU上。然而,GPU具有某些硬件约束和结构限制。例如,GPU不具有全局变量的概念,并且不能使用几个全局变量来在运行中保存临时数据。因此,GPU不能有效地处理某些通常使用的归约(reduction)操作(例如,对一串数据元素进行平均和求和计算)。
附图说明
根据以下详细描述,各个实施例的特征和优点将会变得显而易见,其中:
图1示出根据一个实施例的实例视频挖掘应用;
图2A示出根据一个实施例的用于归约操作的实例滤波器循环方法的流程图;
图2B示出根据一个实施例的滤波器循环方法的实例应用;
图3A示出根据一个实施例的用于归约操作的实例流水线纹理方法的流程图;以及
图3B示出根据一个实施例的流水线纹理循环方法的实例应用。
具体实施方式
图1示出了一个实例视频挖掘应用100。该视频挖掘应用100包括特征提取110和拍摄图片(shot)边界检测120。特征提取110包括几个归约操作。这些归约操作可以包括以下的至少一些子集:(1)确定一帧内所有像素的平均灰度值;(2)提取一个指定区域内的像素的黑值和白值;(3)计算一帧的每个颜色通道的RGB直方图;以及(4)计算两个连续帧之间的平均灰度差值。
可以通过以分层形式将一个帧(例如720×576个像素)尺寸缩小为更小的块并且提取这些块的特征,来执行特征提取。最终将该帧归约为1个像素,并且该像素是该帧的平均值。
一种块形成方法可以使用大滤波器将帧的尺寸缩小为大块。例如,可以使用36×32滤波器着色器(shader)将720×576个像素的帧的尺寸缩小为20×18个像素的图像,随后可以使用20×18的滤波器着色器将该20×18个像素的图像的尺寸缩小为单个像素。该方法仅需要几个步骤(例如,两个尺寸缩小事件),但是这些步骤需要大量的内存存取时间。在具有很多独立处理单元(流水线)的GPU上使用这种方法会造成一个流水线过分占用对存储器的存取,并造成其他流水线停顿。
滤波器循环方法将一个滤波器着色器使用几次,从而连续地将一个帧的尺寸缩小到特定量,并且随后一旦该图像被归约到特定尺寸,就使用第二个滤波器着色器将其归约到1个像素。该方法对每个帧使用多个像素缓冲器来保存各种尺寸缩小的版本。例如,可以使用2×2滤波器将图像进行1/4缩小5次,因此将图像归约为22×18个像素。然后可以使用22×18滤波器着色器将该22×18个像素的图像的尺寸缩小为1个像素。这个实例会需要5个像素缓冲器来存储各种尺寸缩小的版本(每个进行了1/4尺寸缩小后的图像)。
图2A示出用于归约操作的一个实例滤波器循环方法的流程图。初始化像素缓冲器(例如,5个)(200)。将该帧提供给尺寸缩小循环(210)。该循环210通过使用2×2滤波器将当前图像的尺寸缩小为1/4尺寸(220)。将缩小尺寸后的图像绘制到下一个像素缓冲器(230)。在当前图像为22×18个像素(例如,在经过5次1/4尺寸缩小之后),该循环210结束。然后使用22×18滤波器着色器将该22×18个像素的图像归约为1个像素。这个一个像素的结果就是该帧的期望平均值。
该滤波器循环方法对于每个帧都需要6次尺寸缩小操作,并且需要5个额外的像素缓冲器来捕获尺寸缩小后的图像。在该滤波器循环方法中的关键路径是使用22×18滤波器着色器的尺寸缩小。
图2B示出了该滤波器循环方法(例如210)的实例应用。当接收到该帧时,将其存储在缓冲器250中。将该帧的尺寸缩小到1/4,然后存储在下一个缓冲器260中。然后对尺寸缩小后的图像再进行尺寸缩小,并依次存储在缓冲器265-280中。存储在缓冲器280的图像是22×18个像素的图像,其尺寸被22×18滤波器着色器缩小到1个像素。
流水线纹理方法将各个帧的尺寸缩小操作重叠在一起,从而增加了并行性。可以将多个滤波步骤合并为单个滤波步骤,从而可以将多个(例如8个)具有不同尺寸的连续的帧一起进行尺寸缩小。最初,对比一个帧大(例如2倍)的纹理缓冲器进行初始化。该纹理缓冲器可以包含两侧,第一侧用于存储新的帧,第二侧用于存储尺寸缩小后的帧。将一个帧读取到该纹理缓冲器中。然后对该纹理缓冲器进行尺寸缩小,并且偏移尺寸缩小后的图像。该过程持续进行,从而使滤波操作可以一次对多个帧进行尺寸缩小。一旦该操作处于稳定状态(该纹理缓冲器是满的),则执行单个尺寸缩小就足以获得最终结果。
图3A示出了用于归约操作的实例流水线纹理方法的流程图。初始化2X的像素缓冲器(300)。然后初始化流水线滤波器操作(310)。该流水线滤波器操作310包括读取一个新的帧,并将其绘制到纹理的左侧(320)。然后使用2×2滤波器将纹理中的图像尺寸缩小到1/4(330),并将所有尺寸缩小后的图像绘制到纹理的右侧(340)。事实上,纹理中的每个图像都被尺寸缩小,然后向右侧偏移。原始帧(例如720×576个像素)被尺寸缩小到1/4(例如360×288个像素)并绘制到纹理缓冲器右侧上的第一个位置处。纹理的右侧上的图像被尺寸缩小,然后再次绘制到右侧上的下一个位置处。
持续地重复该尺寸缩小处理。每次尺寸缩小操作都对一个新的帧以及在纹理缓冲器右侧中的尺寸缩小后的图像一起进行尺寸缩小。需要7次1/4尺寸缩小操作来将一个帧归约为单个像素。纹理缓冲器的右侧能够保存7个尺寸缩小后的图像。当纹理缓冲器是满的时,其一共保存了各种尺寸缩小版本的8个帧,并对这些图像中的各图像同时进行尺寸缩小。在第7次尺寸缩小操作之后的值后一个像素,并且表示该帧的期望平均值。
图3B示出了流水线纹理循环方法(例如310)的实例应用。纹理缓冲器350的尺寸是一个帧尺寸的两倍(例如,1440×576个像素),并且包括左侧355和右侧360。左侧355存储新的帧(帧N)365。右侧360存储7个先前帧的尺寸缩小版本。先前帧(帧N-1)370是1/4尺寸的并且被存储在右侧360上的第一个槽位(slot)中。帧N-2 375到帧N-7 397存储在右侧的连续槽位中,并且每一个槽位都是前一个槽位的1/4尺寸。应该注意,帧N-6和N-7尺寸非常小,以至于不能清楚地观看它们,因此为了简单起见,将它们一起进行标记。
当执行尺寸缩小操作时,其将7个图像(7个不同帧的不同阶段)一起进行归约,并且将图像重新绘制在右侧,然后在左侧绘制一个新的帧。因此,当流水线纹理方法处于稳定状态中时,每次简约操作都能够得到一个帧的结果。
在GPU上使用流水线纹理方法能够同时处理多个帧的多个计算。在没有复杂的编程和SIMD优化的情况下,这种处理是不能在CPU上执行的。
以上所述的纹理缓冲器的实施例讨论了在长度上是一个帧的两倍的缓冲器(例如,720×576对比1440×576),但是并不局限于此。相反,缓冲器可以在高度上延长(例如720×1152),而不会脱离本发明的范围。此外,实施例示出了将一个新的帧绘制到左侧,而将尺寸缩小后的帧绘制到右侧,但是并不局限于此。相反,可以将新的帧绘制到右侧,而将尺寸缩小后的帧绘制到左侧,可以将新的帧绘制到上部,而将尺寸缩小后的帧绘制到下部,或者可以将新的帧绘制到下部,而将尺寸缩小后的帧绘制到上部,而不会脱离本发明的范围。简单的事实是可以对缓冲器中的所有内容执行一次尺寸缩小操作,然后将尺寸缩小后的图像重新绘制在缓冲器中的下一个位置。
虽然本公开内容已经参考具体实施例进行了陈述,但是显而易见的是,本公开内容并不局限于此,因为在不脱离本发明的范围的情况下可以对具体实施例继续各种改变和修改。对“一个实施例”或“实施例”的指代意思是在此所述的特定的特征、结构或特点包含在至少一个实施例中。因此,在通篇说明书中的各个位置出现的短语“在一个实施例中”或“在实施例中”并非必然指代同一实施例。
实施例可以用硬件、软件、固件、微代码或者其任意组合来实现。当用软件、固件或微代码实现时,实施例的要素是用于执行必要任务的程序代码或代码段。代码可以是执行操作的实际代码,或者是对操作进行模拟或仿真的代码。代码段可以表示过程、函数、子程序、程序、例程、子例程、模块、软件包、类、或者指令、数据结构或程序声明的任意组合。代码段可以通过传递和/或接收信息、数据、自变量、参数或存储器内容而耦合到另一代码段或硬件电路。信息、自变量、参数、数据等可以借助于任何手段,包括存储器共享、消息传递、令牌传递、网络传输等等,进行传递、转发或发送。程序或代码段可以存储在处理器可读介质中,或者由体现在载波中的计算机数据信号或由载波调制的信号而通过传输介质进行发送。“处理器可读或可存取介质”或“机器可读或可存取介质”可以包括任何能够存储、发送或传递信息的介质。处理器/机器可读/可存取介质的实例包括电子电路、半导体存储器件、只读存储器(ROM)、闪存存储器、可擦除ROM(EROM)、软盘、致密盘(CD-ROM)、光盘,硬盘、光纤介质、无线电频率(RF)链路等等。计算机数据信号可以包括能够在诸如电子网络信道、光纤、空中、电磁、RF链路等等之类的传输介质上传播的任何信号。代码段可以经由诸如互联网、内联网等等之类的计算机网络进行下载。机器可存取介质可以体现为制造品。机器可存取介质可以包括当由机器存取时使该机器执行以下所述的操作的数据。术语“数据”在此指代能够为了机器可读的目的而被编码的任何类型的信息。因此,其可以包括程序、代码、数据、文件等等。
实施例的一部分或者全部可以用软件来实现。软件可以具有彼此耦合的几个模块。一个软件模块耦合到另一模块,以接收变量、参数、自变量、指针等等,和/或产生或传递结果、更新的变量、指针等等。软件模块还可以是与运行在平台上的操作系统交互的软件驱动器或接口。软件模块还可以是用于配置、设置、初始化数据以及将数据发送到硬件设备或从硬件设备接收数据的硬件驱动器。
实施例可以描述为一个处理,处理通常被绘制为流程图、流程图表、结构图或框图。虽然流程图可以将操作描述为顺序处理,但是其中的很多操作可以并行或同时执行。另外,可以重新排列操作的次序。当一个处理的操作完成时,该处理可以结束。处理可以对应于方法、函数、过程、子例程、子程序等等。当处理对应于函数时,该处理的结束可以对应于该函数返回到调用函数或主函数。
各个实施例旨在受到所附权利要求的精神和范围内的最宽泛的保护。
Claims (18)
1、一种能够对多个图像同时执行归约操作的方法,所述方法包括:
初始化纹理缓冲器;以及
通过利用所述纹理缓冲器,对所述归约操作进行流水线操作。
2、如权利要求1所述的方法,其中,所述流水线操作包括:
将新的帧绘制到所述纹理缓冲器;
对在所述纹理缓冲器中的当前图像进行尺寸缩小;以及
将尺寸缩小后的图像绘制到所述纹理缓冲器。
3、如权利要求2所述的方法,其中,对一个帧重复所述流水线操作,直到将该帧归约到一个像素为止。
4、如权利要求2所述的方法,其中,所述尺寸缩小将每个图像的尺寸缩小为1/4尺寸。
5、如权利要求4所述的方法,其中,所述尺寸缩小同时对7个图像进行尺寸缩小。
6、如权利要求2所述的方法,其中,所述纹理缓冲器的尺寸是一个帧的两倍。
7、如权利要求2所述的方法,其中,将所述新的帧绘制到所述纹理缓冲器的第一部分。
8、如权利要求2所述的方法,其中,将尺寸缩小后的图像绘制到所述纹理缓冲器的第二部分。
9、如权利要求2所述的方法,其中,在处于稳定状态中时,每次尺寸缩小操作都会产生对于一个帧的结果。
10、如权利要求9所述的方法,其中,所述结果是对该帧进行的归约操作的期望平均值。
11、一种能够对多个图像同时执行归约操作的图形处理单元,所述图形处理单元包括:
用于初始化纹理缓冲器的逻辑;以及
用于通过利用所述纹理缓冲器对所述归约操作进行流水线操作的逻辑。
12、如权利要求11所述的图形处理单元,其中,所述用于流水线操作的逻辑包括:
用于将新的帧绘制到所述纹理缓冲器的逻辑;
用于对在所述纹理缓冲器中的当前图像进行尺寸缩小的逻辑;以及
用于将尺寸缩小后的图像绘制到所述纹理缓冲器的逻辑。
13、如权利要求12所述的图形处理单元,其中,对一个帧重复所述用于流水线操作的逻辑,直到将该帧归约到一个像素为止。
14、如权利要求12所述的图形处理单元,其中,所述用于尺寸缩小的逻辑对7个图像同时进行尺寸缩小,并将每个图像的尺寸缩小为1/4尺寸。
15、如权利要求12所述的图形处理单元,其中,使机器执行流水线操作的内容在被执行时,在处于稳定状态中时对于每次迭代都会产生对一个帧的归约操作的期望平均值。
16、一种能够对多个图像同时执行归约操作的系统,所述系统包括:
中央处理器(CPU);
图形处理器(GPU);以及
存储器,其耦合到所述CPU和所述GPU以存储应用程序,所述应用程序当被执行时使得所述GPU:
初始化纹理缓冲器;以及
连续地:
将新的帧绘制到所述纹理缓冲器;
对在所述纹理缓冲器中的当前图像进行尺寸缩小;以及
将尺寸缩小后的图像绘制到所述纹理缓冲器。
17、如权利要求16所述的系统,其中,所述应用程序当被执行时,使得所述GPU对7个图像同时进行尺寸缩小,并将每个图像的尺寸缩小到1/4尺寸。
18、如权利要求16所述的系统,其中,所述应用程序当被执行时,使得所述GPU在处于稳定状态中时对于每次迭代都会产生对一个帧的归约操作的期望平均值。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2006/002982 WO2008055381A1 (en) | 2006-11-08 | 2006-11-08 | Graphics processor pipelined reduction operations |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101542524A true CN101542524A (zh) | 2009-09-23 |
CN101542524B CN101542524B (zh) | 2012-09-05 |
Family
ID=39364161
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006800563293A Expired - Fee Related CN101542524B (zh) | 2006-11-08 | 2006-11-08 | 图形处理器的流水线化归约操作 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP2089847B1 (zh) |
CN (1) | CN101542524B (zh) |
WO (1) | WO2008055381A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104318511A (zh) * | 2014-10-24 | 2015-01-28 | 江西创成电子有限公司 | 一种电脑显卡及其图像处理方法 |
WO2020133462A1 (en) * | 2018-12-29 | 2020-07-02 | Zhejiang Dahua Technology Co., Ltd. | Methods and systems for image processing |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5801708A (en) * | 1995-06-06 | 1998-09-01 | Hewlett-Packard Company | MIP map texture storage by dividing and allocating among multiple blocks |
US5886705A (en) | 1996-05-17 | 1999-03-23 | Seiko Epson Corporation | Texture memory organization based on data locality |
US6788309B1 (en) * | 2000-10-03 | 2004-09-07 | Ati International Srl | Method and apparatus for generating a video overlay |
JP2004362069A (ja) * | 2003-06-02 | 2004-12-24 | Olympus Corp | 画像処理装置 |
DE10354226B4 (de) * | 2003-11-20 | 2006-04-06 | Siemens Ag | Verfahren und Vorrichtung zum Laden eines in einem Archiv befindlichen Bildes mittels Pipeline Verarbeitung des in Chunks zerlegten Bildes mit Darstellung von Zwischenergebnissen in inkrementell erhöhter Auflösung |
US7868891B2 (en) * | 2004-09-16 | 2011-01-11 | Nvidia Corporation | Load balancing |
JP2006165825A (ja) * | 2004-12-03 | 2006-06-22 | Sony Computer Entertainment Inc | 画像処理装置、画像処理方法、画像処理プログラム、及び記憶媒体 |
-
2006
- 2006-11-08 WO PCT/CN2006/002982 patent/WO2008055381A1/en active Application Filing
- 2006-11-08 EP EP06805179.6A patent/EP2089847B1/en not_active Not-in-force
- 2006-11-08 CN CN2006800563293A patent/CN101542524B/zh not_active Expired - Fee Related
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104318511A (zh) * | 2014-10-24 | 2015-01-28 | 江西创成电子有限公司 | 一种电脑显卡及其图像处理方法 |
CN104318511B (zh) * | 2014-10-24 | 2018-10-26 | 江西创成电子有限公司 | 一种电脑显卡及其图像处理方法 |
WO2020133462A1 (en) * | 2018-12-29 | 2020-07-02 | Zhejiang Dahua Technology Co., Ltd. | Methods and systems for image processing |
Also Published As
Publication number | Publication date |
---|---|
EP2089847B1 (en) | 2014-08-20 |
WO2008055381A1 (en) | 2008-05-15 |
EP2089847A1 (en) | 2009-08-19 |
EP2089847A4 (en) | 2012-12-12 |
CN101542524B (zh) | 2012-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI590187B (zh) | 用以實現圖形處理單元(gpu)上的最近鄰居搜索之方法、裝置與機器可讀媒體 | |
US11200724B2 (en) | Texture processor based ray tracing acceleration method and system | |
US8505001B2 (en) | Method and system for utilizing data flow graphs to compile shaders | |
JP4901097B2 (ja) | グラフィックス処理ユニットを使用して機械学習技術の処理を速め、最適化するシステムおよび方法 | |
KR101639852B1 (ko) | 그래픽 프로세싱을 위한 픽셀 값 압축 | |
KR101137753B1 (ko) | 고속의 메모리 효율적인 변환 구현 방법 | |
US8547378B2 (en) | Time-based degradation of images using a GPU | |
TWI632524B (zh) | 以邊緣爲基礎之覆蓋遮罩壓縮技術 | |
CN102648450A (zh) | 用于并行命令列表生成的硬件 | |
US9691122B2 (en) | Facilitating dynamic and efficient pre-launch clipping for partially-obscured graphics images on computing devices | |
US9632979B2 (en) | Apparatus and method for efficient prefix sum operation | |
US10410081B2 (en) | Method and apparatus for a high throughput rasterizer | |
CN107408293B (zh) | 支持计算装置处的图形命令流中对命令缓冲器的多级嵌套 | |
US10089964B2 (en) | Graphics processor logic for encoding increasing or decreasing values | |
WO2016200493A1 (en) | Optimizing for rendering with clear color | |
CN101542524B (zh) | 图形处理器的流水线化归约操作 | |
WO2017172032A1 (en) | System and method of caching for pixel synchronization-based graphics techniques | |
US20210358174A1 (en) | Method and apparatus of data compression | |
CN108010113B (zh) | 一种基于像素着色器的深度学习模型执行方法 | |
JP2023530306A (ja) | デルタトリプレットインデックス圧縮 | |
US20080204468A1 (en) | Graphics processor pipelined reduction operations | |
Lin et al. | Multi-pass algorithm of motion estimation in video encoding for generic GPU | |
JP2004280157A (ja) | 画像処理装置 | |
US20110254848A1 (en) | Buffering deserialized pixel data in a graphics processor unit pipeline | |
Ohmer et al. | Real-time tracking with non-rigid geometric templates using the gpu |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120905 Termination date: 20181108 |
|
CF01 | Termination of patent right due to non-payment of annual fee |