楊棟青 褚寶增
[摘要]傳統(tǒng)的視頻壓縮技術完全依賴于CPU的工作,占用大量的系統(tǒng)資源。而基于CUDA技術的視頻壓縮軟件不僅減輕系統(tǒng)負擔,更大大加快視頻處理速度。
[關鍵詞]CUDA NVIDIA 視頻壓縮 流處理器
中圖分類號:TP2文獻標識碼:A文章編號:1671-7597(2009)0910035-01
一、引言
為了能夠在手機,MP4上播放視頻,進行視頻壓縮和轉換是必要的操作。而完全依賴CPU進行視頻處理還會造成系統(tǒng)資源的緊張,難以進行其他方面的操作。NVIDIA公司推出的CUDA技術則有效地解決了這一問題,不僅讓視頻壓縮的速度成倍提高,而且還極大地降低了CPU的占用率。
二、CUDA技術簡介
CUDA(Compute Unified Device Architecture),是一種由NVIDIA推出的通用并行計算架構,該架構使GPU能夠解決復雜的計算問題。它包含了CUDA指令集架構(ISA)以及GPU內部的并行計算引擎。開發(fā)人員現(xiàn)在可以使用C語言來為CUDA架構編寫程序,C語言是應用最廣泛的一種高級編程語言。所編寫出的程序于是就可以在支持CUDA的處理器上以超高性能運行。將來還會支持其它語言,包括FORTRAN以及C++。
隨著顯卡的發(fā)展,GPU越來越強大,而且GPU為顯示圖像做了優(yōu)化。在計算上已經(jīng)超越了通用的CPU。如此強大的芯片如果只是作為顯卡就太浪費了,因此NVidia推出CUDA,讓顯卡可以用于圖像計算以外的目的。
CUDA是用于GPU計算的開發(fā)環(huán)境,它是一個全新的軟硬件架構,可以將GPU視為一個并行數(shù)據(jù)計算的設備,對所進行的計算進行分配和管理。在CUDA的架構中,這些計算不再像過去所謂的GPGPU架構那樣必須將計算映射到圖形API(OpenGL和Direct 3D)中,因此對于開發(fā)者來說,CUDA的開發(fā)門檻大大降低了。CUDA的GPU編程語言基于標準的C語言,因此任何有C語言基礎的用戶都很容易地開發(fā)CUDA的應用程序。
由于GPU的特點是處理密集型數(shù)據(jù)和并行數(shù)據(jù)計算,因此CUDA非常適合需要大規(guī)模并行計算的領域。目前CUDA除了可以用C語言開發(fā),也已經(jīng)提供FORTRAN的應用接口,未來可以預計CUDA會支持C++、Java、Python等各類語言??蓮V泛的應用在圖形動畫、科學計算、地質、生物、物理模擬等領域。
三、CUDA軟硬件環(huán)境
CUDA支持的GPU(CUDA-enabled GPU)包含GeForce、Quadro和Tesla三個系列。CUDA-enabled GPU的產(chǎn)品線涵蓋了從筆記本電腦到高性能多GPU的系統(tǒng)中。CUDA-enabled GPU支持并行數(shù)據(jù)高速緩沖(Parallel Data Cache)和線程執(zhí)行管理器(Parallel Data Cache),每個不同的GPU具備8-128個Stream Processor,具備強大的并行數(shù)據(jù)計算能力。目前只有G80、G92、G94和GT200平臺的NVidia顯卡才能使用CUDA,工具集的核心是一個C語言編譯器。其中G80中擁有128個單獨的ALU,因此非常適合并行計算,而且數(shù)值計算的速度遠遠優(yōu)于CPU。
在CUDA的軟件層面,NVIDIA C編譯器是其中的核心。CUDA程序是GPU和CPU的混合代碼,它首先由NVIDIA C編譯器進行編譯。經(jīng)過編譯后,GPU和CPU的代碼將被分離,GPU代碼被編譯成GPU計算的機器碼,而CPU的C代碼輸出由標準的C編譯器進行編譯。因此一個完整的CUDA軟件開發(fā)環(huán)境還需要有一個面向CPU的C編譯器。CUDA可以支持多種運行在Windows XP和Linux操作系統(tǒng)下的C開發(fā)系統(tǒng)諸如Microsoft Visual C++等。右圖是NVIDI
A C編譯器結構。
其中,EDG將CPU和GPU的代碼分離;Open64生成GPU PTX(Parallel Thread eXecution)匯編碼。CUDA運行需要CUDA runtime driver的支持,而Profiler則可以提供GPU和CPU kernel調用和內存拷貝的時序分析,從而對性能進行評估并且發(fā)現(xiàn)潛在的性能上的問題。
除了編譯器外,NVIDIA提供了一些非常實用的函數(shù)庫。目前有兩個數(shù)字計算庫包含在已經(jīng)發(fā)布的軟件包里面,分別是CUDA FFT和CUDA BLAS子程序庫。CUDA FFT是快速傅立葉變換(Fast Fourier Transform,FFT)的子程序庫,快速傅立葉變換是信號處理之類應用的基本算法。
四、基于CUDA技術視頻壓縮軟件介紹
由于CUDA技術出現(xiàn)的時間不長,目前基于這一技術的視頻壓縮軟件并不多見,比較知名的CUDA視頻壓縮軟件主要有三款,分別是:Badaboom Media Converter、TMPGEnc 4.0 XPress和PowerDirector。而這三款軟件中又以Badaboom Media Converter最著名,推出的時間也最早。Badaboom
是一款由NVIDIA和Elemental聯(lián)合推出的消費級視頻轉碼軟件。軟件操作界面簡約直觀,操作方式簡單易懂,用戶很容易上手。BadaBOOM軟件是NVIDIA
CUDA通用計算技術的應用,這就意味著它是用C語言編寫的,專為NVIDIA GPU而優(yōu)化,確切地說就是GPU來實現(xiàn)視頻轉換加速。Badaboom利用GPU進行大部分轉碼工作,因此CPU的占用率很低。BadaBOOM的轉碼性能基本和GPU流處理器數(shù)量成線性關系。即使是入門級的只擁有32個流處理的Geforce 9500GT顯卡,使用BadaBOOM軟件來進行編碼也能夠領先目前最高端的四核處理器數(shù)倍。
在國外一個專業(yè)網(wǎng)站的測試中,用Badaboom和老牌的使用CPU進行編碼的Mainconcept H.264 Encoder軟件進行了對比測試。對同一段視頻的轉換,Badaboom配合Geforce 9500GT顯卡以接近三倍的速度差距毫無疑問的拿下了勝利,差距相當明顯。可以肯定,如果換上擁有128個GPU流處理器的Geforce 9800GTX,Badaboom的轉換速度還會成倍提高。在測試中我們還注意到Mainconcept H.264 Encoder的CPU平均占用率達到了90%,而Badaboom的CPU平均占用率僅為33%??梢奀UDA技術確實大大減輕了CPU的負擔。
參考文獻:
[1]Rob Farber,CUDA了解和使用共享內存。西北太平洋國家實驗室,2008.
[2]Rob Farber,CUDA用于大量數(shù)據(jù)的超級計算。西北太平洋國家實驗室,2008.
[3]鄧培智,CUDA編程模型,NVIDIA,2008.
[4]周洪敏、龔建榮,視頻壓縮編碼的新發(fā)展H.264,南京郵電學院,2006.