999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

圖形處理器協同運算的視頻處理架構

2008-04-12 00:00:00王廣生
現代電子技術 2008年20期

摘 要:多媒體視頻處理的任務繁重,計算量大,很多算法無法在僅使用一顆CPU的條件下達到實時處理的速度。設計一套圖形處理器協同運算的視頻處理架構,它采用圖形處理器與中央處理器配合,共同完成視頻計算的任務。這種架構可以大大加速處理速度,并減輕中央處理器的負擔。

關鍵詞:圖形處理器;GPU通用計算;視頻處理;GPU架構

中圖分類號:TP39114文獻標識碼:B文章編號:1004373X(2008)2013405

Graphic Processing Unit Assisted Video Processing Architecture

ZHANG Lei,WANG Guangsheng

(College of Electronic Information and Control Engineering,Beijing University of Technology,Beijing,100022,China)

Abstract:The process tasks of multimedia video are heavy and the amount of calculations is large.Many algorithms can not achieve real-time process speed with only one CPU usage.This paper proposes a graphic processing unit assisted video processing architecture,which makes graphic processing unit and central processing unit work together and process the tasks of video calculations.This architecture can greatly accelerate the processing speed and release the load of central processing unit.

Keywords:graphic processing unit;GPU general compute;video processing;GPU architecture

隨著現代圖形處理器(Graphic Processing Unit,GPU)的可編程能力及性能的提高,越來越多的人發現GPU的這種并行流式處理架構可以完成一些具有并行性高,運算密度高的一般計算任務。于是,世界各地的人們紛紛將自己所研究領域的算法向GPU上進行移植,并在某些領域取得了令人驚訝的成績,尤其在一些對運算能力敏感的特定領域,GPU已經被證明比單獨的x86 CPU更具優勢。人們對于x86和GPU運算能力差別的傳統觀念正在發生著轉變。

多媒體視頻處理的任務繁重,計算量大,很多算法無法在僅使用一顆CPU的條件下達到實時處理的速度。本文介紹一種采用GPU進行協同運算的視頻處理架構,通過GPU與CPU配合工作來完成視頻處理的計算任務,從而起到加速計算的目的,并將CPU從繁重的計算任務中解脫出來。

1 圖形處理器及其可編程性簡介

圖形處理器(Graphic Processing Unit,GPU)是在顯卡上集成的有圖形運算能力的處理器。如同整個PC架構中CPU是最重要的部分一樣,在顯卡的架構中,GPU也是其主心骨。GPU最大的作用是協助CPU進行3D圖形計算,整個3D圖形計算完全由GPU這個專門的硬件來執行,大大提升了效率,也將CPU從繁重的幾何計算中解放出來。GPU所采用的核心技術有硬件TL(Transform Lighting)、立方環境材質貼圖和頂點混合、紋理壓縮和凹凸映射貼圖、雙重紋理4像素256位渲染引擎等,而硬件TL技術可以說是GPU的標志[1-3]

如今的GPU集成比CPU更多數量的晶體管,其復雜程度可想而知。從歷代產品的發展過程來看,每一代GPU都保持相對穩定的架構,即像素填充率決定基本速度,然后通過各種技術實現3D特效,從而在速度與畫質方面取得雙重進步\\。當今的大多數GPU都能達到10~20 Gigaflops( 1 Gigaflops=1 s進行10億次的浮點運算),nVidia于2007年底推出的GeForce 8800Ultra甚至能達到576 Gigaflops,而Intel 3 GHz Pentium 4即使采用SSE指令集也只能達到6 Gigaflops,與GPU有數十倍的差距!

新一代的GPU在傳統的3D渲染流水線的基礎上,增加了2個全新的流處理器:頂點處理器(vertex processor)和片元處理器(fragment processor,在Direct3D中稱為pixel processor), 使得GPU可以處理開發人員寫好的代碼腳本,跳過原先3D渲染流水線上的某些處理環節,來達到某些原來不能達到或者很難達到的效果。頂點處理器和片元處理器在渲染流程如圖1所示。

頂點處理器取代了原先TL的變換過程, 它讓程序員能夠對特定物體,甚至整個畫面的每一個頂點,指定特別的運算程序,而不需要CPU介入。每一個頂點都攜帶相當多的信息,比如坐標、重量、法線、顏色、紋理坐標等數據。頂點處理器能夠以簡短的程序來改變上述這些信息,這些小程序直接由頂點著色引擎本身執行。這樣開發人員可以利用頂點處理器做任意有關幾何空間的變換和光照陰影的處理,大大地增加了GPU的靈活性。

片元處理器是渲染管線中的一個新增處理器,它在GPU的光柵化流程之后負責處理片元及其他相關數據。片元處理器比頂點處理器處理的范圍更寬,它可以對片元的顏色、插值、紋理讀寫、紋理顏色、霧、邊緣效果以及高質量的光照等進行處理。片元處理器所能生成的一個最重要的特效是毛發效果,原先制作毛發需要創造大量的多邊形而每一根毛發之間復雜多變的即時光影關系更不是幾個簡單固定的指令所能實現的。而開發人員通過直接對片元處理器的編程則很好地解決了這個問題 。

GPU通過增加頂點處理器和片元處理器后,GPU成為了可編程的處理器。開發人員自由地改寫渲染流水線的處理方式,他們可以很簡單地完成以前需要很復雜的工作才能完成的任務。然而,GPU的可編程性還不止于此,如果可以很好地利用GPU的流式處理架構和它的可編程性,可以利用GPU處理一些非3D圖形類的工作,這就是GPU的通用計算。

2 GPU相對CPU的優勢

由于GPU特殊的硬件架構,使得GPU在某些方面要遠遠優于CPU。它有著高度并行的計算風格,強大的計算能力和很高的存儲帶寬[5]。CPU被設計用來完成通用的計算任務,其設計主要針對串行任務的處理,芯片中含有很大很復雜的控制功能,真正用于計算的部分只占其核心部分的很少一個部分。因此,相對于CPU來講,GPU的主要優勢在于:

(1) 浮點運算性能極高

大多數GPU都能達到10~20 Gigaflops( 1 Gigaflops=1 s進行10億次的浮點運算),而最近推出的GPU甚至能達到576 Gigaflops。Intel 3 GHz Pentium 4即使采用SSE指令集也只能達到6 Gigaflops。GPU在浮點運算性能大幅領先于CPU,這是GPU領先CPU最本質的地方。

(2) 適合處理并行計算任務

GPU內部含有多條并行的渲染流水線,本身就可以做多路并行任務。而CPU要解決并行處理的工作往往需要很多其他輔助工作的配合,而且需要一定的性能開銷作為代價(CPU的流程控制比GPU要復雜得多)。

(3) 適合進行重復性計算

GPU因為是專門為圖形運算而設計的,其考慮到了圖形運算的特殊性。就片元著色器來說,當前批次所有的待處理像素,都會執行相同的像素著色程序,相同或類似的運算會在海量的數據上重復運行[6-8]

(4) 幾何處理能力強且方便

GPU天生就是用來處理圖形方面的運算的,因此它的幾何處理能力要比CPU強很多,同時使用GPU來處理幾何問題要比CPU更加方便,已經有相當成熟的API(OpenGL和Direct3D)支持GPU完成幾何處理。

(5) 圖像視頻處理速度快

GPU中含有對紋理填充和著色的工作,這些處理工作可以很容易地移植到對圖像的處理上面,因為從某種意義上說,紋理和圖像是等價的。GPU的流式處理架構非常適合處理具有過濾器圖表式結構的圖像或視頻算法的工作。

(6) 成本相對低廉

一顆GPU的價格幾乎與CPU價格相當,那么如果算法可以在GPU上獲得幾倍甚至幾十倍的加速,這就意味原本需要幾顆或者幾十顆CPU同時處理的工作,現在僅需要一顆GPU就足以應付,大大降低了系統成本。

3 GPGPU 程序的運作模式

為了與GPGPU的運作模式做對比,首先來看傳統的3D應用程序中,CPU和GPU的運作模式,如圖2(a)所示。首先,CPU將用于生成幾何體的信息上傳到顯卡的顯示內存中,幾何體的信息通常包括頂點信息和紋理信息2大部分,如果開發人員需要對GPU渲染流水線處理流程做改動,這時還會把針對頂點處理器和片元處理器所編寫的程序一起上傳。之后,CPU調用相關圖形API,使GPU按照指令生成所要求的幾何體,并對其進行處理。這個過程中幾乎所有的任務都在GPU內部完成,有的時候渲染過程并非一次完成,那么GPU會將一次渲染的結果存入顯示存儲器中,然后再對其進行處理,這是GPU管線的特殊處理方式[9]。最后,GPU將處理好的圖像存儲到顯示幀緩沖區中,之后將其送入顯示設備,最終顯示在屏幕上。整個系統的運作模式為:CPU單向地發送指令和信息,GPU單向地接收信息并按照指令進行處理,是一種單向的流水線式的運作模式。

GPGPU程序的運作模式則不同,如圖2(b)所示。

GPGPU程序的運作模式

首先,CPU將所要計算的通用數據,以紋理和頂點的形式上傳給GPU,然后把API傳送給GPU。前期的初始化過程雖然與傳統的應用程序差不多,但是在這里,頂點信息沒有太多的實用價值,它只是為了渲染得到結果而安排的。紋理變成了承載通用數據信息的重要媒介,它幾乎等同于CPU中的數組。在大多數情況下開發人員都需要對頂點處理器和片元處理器進行編程,以滿足他們通用計算的處理任務。

GPU接收到API指令后,按照API指令進行計算。這個過程雖然仍然被稱為“渲染”,但是其目的卻并非去做3D幾何和光照運算,而是通過頂點處理器和片元處理器按照開發人員的特殊需求做數學計算。由于通用計算任務往往需要回饋計算,因此當1次渲染結束后,GPU將它以紋理的形式保存到內存儲器中,這個過程稱為“渲染到紋理”。“渲染到紋理”是目前惟一用于實現直接把GPU輸出的數據反饋到輸入,而不用返回主機處理器的機制。

通過數次回饋計算,GPU最終將計算的結果輸出。這一步,并不像傳統的3D應用程序那樣將結果直接輸出到顯示設備中顯示出來,而是再次將結果以紋理的方式保存在顯示存儲器中。在通用計算中,開發人員往往對這個渲染結果需要進一步的處理,因此由CPU發送“讀回”指令,將渲染的紋理(通用計算的數據)讀回到計算機的內存儲器中,并對其進行處理,將其重新按照原先的非紋理的方式保存。這樣GPU所計算的數據最終交由CPU再做處理。

CPU將結果進行處理后,有時需要再次使用GPU來繼續下一步的運算。這時CPU再將要處理的數據重新以紋理的方式上傳到GPU中去,GPU在進行對其處理并將結果返回。這樣,CPU將處理好的數據傳給GPU處理,GPU將處理好的數據傳給CPU處理。CPU和GPU相互配合,互相發揮自身的優勢,最終加速整個計算過程。

在這種模式下,CPU和GPU是一種“協作”關系,GPU成為了CPU的協處理器,幫助CPU完成一些特定的復雜度高的計算任務。需要指出的是,在通常情況下,CPU并不會因為等待GPU計算而發生空閑,這是因為現代GPU往往具有異步傳送等功能,CPU可以一邊將數據傳送給GPU,一邊執行自己這一邊的計算任務。同時,GPU計算速度極快,往往會在CPU完成計算任務之前,先完成任務并將GPU計算的結果傳回給CPU。因此,大多數情況下都是GPU等待CPU,GPU空閑的時候更多。

4 GPU協同運算的視頻處理架構

傳統的視頻處理工作往往是流水線的處理架構,GPU的工作模式也是流水線的方式,因此在GPU協同運算的視頻處理架構中,GPU所扮演的角色是整個視頻處理流水線中的一個環節。如圖3(a)所示是一個典型的視頻壓縮編碼處理架構,從視頻源的供給到視頻壓縮編碼,再到編碼后的視頻輸出,都由CPU完成。

在GPGPU的工作模式下,壓縮編碼器是將壓縮編碼的工作由CPU和GPU共同完成下的視頻處理的架構,如圖3(b)所示。在視頻編碼過程中,GPU完成的工作有運動估計、圖像空域濾波、運動補償及其他針對圖像區域的2D處理運算。前面提到,對GPU來講,圖像是圖形學中的紋理,而GPU在處理紋理的時候,有專用的硬件填充器和著色器,使得處理速度大大增加。

視頻幀是視頻數據封裝的一個單元,在進行視頻處理的時候都是以一幀作為對象進行處理。因此,要讓GPU處理視頻數據,首先應把視頻幀以紋理的形式上傳到GPU的顯示內存中去才能進行。GPU針對紋理的處理方式,可以有不同的方式,既可以單純地使用片元著色器,對紋理進行區域色彩的處理;也可以結合頂點著色器將平面的視頻進行扭曲,改變各個像素點的位置;還可以直接利用紋理貼圖技術,將GPU貼在一個空間的表面上,再進行透視投影變換將空間表面重新轉換為2D的視頻。當GPU在處理完畢后,視頻數據經由顯示卡的顯示內存流回到系統內存中,以便CPU進一步處理,將最終的結果輸出。如果1次渲染后視頻幀仍需再進行處理,GPU會再次調用顯示內存中已渲染好的視頻數據,并重新執行處理流水線。這種視頻處理架構的內部處理流程如圖4所示。

這里的讀回操作需要特別注意。數據從顯卡中讀回是一個開銷非常大的操作。傳統應用程序都是將渲染好的3D圖形顯示在屏幕上,很少進行讀回操作。這樣,GPU在設計的時候并沒有對讀回操作進行太多的優化,用于讀回的帶寬資源非常有限。因此,普通的GPU上傳性能非常快速,而下載卻非常慢。而用于通用計算的GPU往往需要將顯卡中的數據重新讀回到內存中再進行其他計算,對讀回操作的性能要求極高。這樣,讀回的流程將會形成流水線中的一個嚴重的瓶頸。好在現在的廠商已經開始重視這一問題,著手對GPU進行相關的優化,比如nVidia在他圖形顯示卡推出的“硬件加速的讀回操作”(Hardware Accelerate Readback),異步讀回技術(Asynchronous ReadBack),更高速率的傳輸總線PCI-E 2.0等,這個流水線的瓶頸開始被逐漸緩解。

以上便是GPU協同運算的視頻處理架構,通過將視頻幀下載到顯卡中,使用GPU進行部分工作的處理,來達到降低CPU的負載,加快處理速度的目的。

5 實驗及分析

在實驗中,將傳統的圖像透視變換算法移植到GPU上完成。圖像透視變換算法是一種2D到2D的變換,這種變換可以用以下矩陣來描述:

x′y′1=m0m1m2m3m4m5m6m7m8xy1(1)

其中x′,y′是視頻圖像中的像素點x,y在透視變換之后的新位置。m0~m8為透視變換各個參數,它的取值將決定透視變換的效果。

從式(1)不難看出,透視變換算法需要對圖像中每個像素進行計算,那么要想對每秒25~30幀的視頻進行實時處理,其計算量相當龐大。在此實驗中,采用此種透視變換處理320×240×30fps的視頻圖像,如果純靠CPU來進行需要消耗CPU的80%的資源,而要想實時處理更高分辨率的視頻,則需要通過增加處理器的內核數量實現。

當采用本文提出的圖形處理器協同運算的視頻處理架構后,將算法移植到GPU內部,將被變換的視頻幀直接通過紋理貼圖到預先建立的幾何模型上,再通過GPU渲染,直接完成對視頻幀的透視變換。如需對圖像色彩進行調整,也可以通過編寫片元著色器實現。在實驗中,要進行柱狀透視變換,因此預先建立起的幾何模型為圓柱面,透視變換前后的視頻幀如圖5(a)和圖5(b)所示。當進行其他形態的透視變換時,可以通過在GPU內部建立相應的3D曲面來完成。采用GPU處理這種類型的視頻變換的另一個好處是,無需預先推算出準確的數學表達式,而通過頂點建立曲面的方法直接得出結果。如圖5(c)所示,是一個無法通過準確的數學表達式來進行描述的透視變換,但可以通過在GPU上進行幾何建模的方法來完成此類透視變換,這在對視頻圖像進行幾何校正時是非常有用的。

圖5 視頻圖像的透視變換

從實驗看,采用GPU協同運算的視頻處理架構在執行視頻透視變換的任務中,由于絕大多數的工作量交由GPU來進行處理,CPU上僅耗費了10%~15%的資源。CPU上所消耗的資源主要用在系統驅動GPU工作和CPU與GPU之間的視頻數據收發環節上。從結果可以看出,與傳統單靠CPU運算相比,此套GPU協同運算的視頻處理架構大幅提升了處理速度,減輕了CPU的負荷量,并且認為還有更大的潛力有待挖掘。

6 結 語

用GPU來輔助進行視頻處理運算,是一個很新又很有潛力的技術,微軟,IBM,索尼等大公司已經開始著手研究GPU的通用計算能力以及相關算法。同時,顯示芯片廠商對此問題關注日益加強,今后的GPU將更強大并更有利于進行通用計算。

在今后,更多的大規模計算領域將采用GPU作為加速計算的手段,完成更多更繁重的工作,極大地降低CPU使用的個數和計算機群的規模。GPU將成為CPU,DSP后的另一個具有通用計算能力的處理器,迎來它在歷史上嶄新的一頁。

參考文獻

[1]張健浪.CPU不再是惟一核心 GPU將邁向通用計算\\.新電腦,2007,31(4):118-120.

[2]湯穎,張宏鑫,張美玉.基于圖形硬件的紋理圖像編碼與實時繪制算法\\.計算機學報,2007,30(2):272-280.

[3]GPU通用運算新篇章深入分析\\.http://www.shbear.com/2/lib/200701/04/ 20070104335-2.htm.

[4]Randi J Rost.OpenGL Shading Lanaguage\\.北京:人民郵電出版社,2006.

[5]John Owens.Streaming Architechures and Technology Trends.GPU Gems,2005:457-470.

[6]Owen Harrison,John Waldron.Optimising Data Movement Rates for Parallel Processing Applications on Graphics Processors.Parallel and Distributed Computing and Networks,2007.

[7]Fung J,Mann S,Aimone C Openvidia.Parallel GPU Computer Vision,ACM Multimedia,Singapore.2005.

[8]High Performance Graphics Coprocessor Sorting for Large Database Management,Proceedings of ACM SIGMOD Conference.Chicago,IL,June,2006.

[9]Tomas Akenine-Moller,Eric Haines.實時計算機圖形學\\.普建濤,譯.北京:北京大學出版社,2004.

[10]Video Cards.The Graphics Pipeline\\.http://www.devhardware.com/c/a/Video-Cards/The-Graphics-Pipeline.

作者簡介

張 磊 男,1983年出生,北京人,碩士研究生。主要從事視頻處理及圖像處理的研究。

王廣生 男,高級工程師。

注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文

主站蜘蛛池模板: 在线人成精品免费视频| 国产女人18毛片水真多1| 午夜成人在线视频| 国产第一页亚洲| 免费人成又黄又爽的视频网站| 精品久久久久成人码免费动漫| 欧洲成人在线观看| 黄色网址免费在线| 日本一区二区不卡视频| 欧美精品v欧洲精品| 国产精品页| 午夜国产不卡在线观看视频| 亚洲精品第五页| 天天综合天天综合| 被公侵犯人妻少妇一区二区三区 | 欧美日韩一区二区在线免费观看 | 一级一毛片a级毛片| 992Tv视频国产精品| 亚洲国产日韩欧美在线| h视频在线播放| 亚洲欧洲日韩久久狠狠爱| 亚洲bt欧美bt精品| 免费一级成人毛片| 波多野结衣中文字幕久久| 91精品国产丝袜| 国产成人亚洲无码淙合青草| 亚洲欧洲免费视频| 久久久亚洲色| 亚洲一级毛片免费观看| 国产成人精品优优av| 欧美中文字幕在线二区| 精品国产91爱| 亚洲青涩在线| 97国产精品视频自在拍| 亚洲国产AV无码综合原创| 国产日韩欧美在线视频免费观看| 99热国产这里只有精品9九| 午夜福利亚洲精品| 国产99热| 日韩精品久久无码中文字幕色欲| 日本欧美在线观看| 亚洲欧美日韩中文字幕在线一区| 国内丰满少妇猛烈精品播 | 国产免费羞羞视频| 四虎国产精品永久在线网址| 国产成人a毛片在线| 青青青国产视频手机| 国产精品女人呻吟在线观看| 2020国产在线视精品在| 制服丝袜国产精品| 欧美区一区| 97人妻精品专区久久久久| 影音先锋亚洲无码| 精品欧美一区二区三区久久久| av午夜福利一片免费看| 日韩精品毛片人妻AV不卡| 欧美a网站| 欧美中文字幕在线二区| 青青网在线国产| 永久成人无码激情视频免费| 免费一级全黄少妇性色生活片| 亚洲精品麻豆| 亚洲av无码人妻| 成人va亚洲va欧美天堂| 国外欧美一区另类中文字幕| 亚洲国产综合精品一区| 欧美激情视频一区| 亚洲天堂视频在线观看免费| 精品视频一区在线观看| 在线a网站| 亚洲精品无码av中文字幕| 四虎永久在线视频| 日韩av电影一区二区三区四区| 999国产精品| 国产综合网站| 日韩大片免费观看视频播放| 国产欧美在线观看精品一区污| www.亚洲一区| 亚洲欧美另类日本| 久久a级片| Aⅴ无码专区在线观看| 亚洲综合第一页|