視頻硬體解碼能力對於CPU 和gpu 哪個更苛刻 有最新Mac Pro 最高配都硬解不了的視?
視頻 解碼 cpu gpu soc
一般的視頻硬體加速都在GPU上有專門的指令集優化,例如NV的CUDA。當然CPU也是能解的,不過效率上會差不少。另外現在INTEL的CPU都自帶GPU了,應該不存在誰負責解的問題。。。
/××××××××××××××××××××××××××××××××××××××××××××××××
詳細的回答一下吧
×××××××××××××××××××××××××××××××××××××××××××××××/首先,單就浮點運算能力而言,GPU秒殺CPU!
不過,計算機對視頻解碼的速度取決於許多的參數(當然碼率是一個)。從平台端來說,不同的操作系統、視頻容器、視頻播放器、編解碼器對解碼的速度影響是決定性的:在win7的環境下,計算機對大部分格式的視頻編解碼的運算是基於多核多線程的,但是對於Rmvb這樣的拖油瓶來說,硬解不能只能軟解,GPU只能歇菜;從演算法端來說,MPEG-1與MPEG-2、H264之間的硬解效率差的很遠。對於不同參數的視頻解碼任務,CPU和GPU處理方式的不同會導致效率的不可量化,針對不同的運行環境效率也可能相差巨大。
然後是CPU和GPU的具體分析了:
GPU顧名思義,血源里就是專註於Graphic運算的。GPU最廣為人知的應用當屬遊戲渲染,而遊戲渲染所需的圖形學計算大量依賴多維矩陣操作,這也導致了在長期的研發過程中,GPU被極端的優化成基礎矩陣運算加速器。但是遊戲渲染畢竟是一個小眾的市場,野心很大的NV, ATI(現在已經不復存在了:()們將目光瞄準了視頻編解碼的應用。視頻編解碼運算總的來說是基於空間相似度的壓縮技術,其運算的基本容器就是矩陣,可以說是GPU處理的天然領域。但是在視頻編解碼的處理過程中,GPU卻並不是能夠獨立完成的,GPU能夠完成的過程包括運動預測,運動補償、幀內與幀間壓縮的DCT變換這些涉及矩陣的部分,在這些部分里,矩陣可以被以元素為單位分割成大量可並行的運算單元,對於DCT量化、變長編碼這樣的基礎數值運算則需要以串列的方式進行處理,GPU就無能為力了。所以說比較CPU和GPU的視頻編解碼效率對CPU是不公平的,因為在實際應用中通過GPU的硬體加速解碼實際上需要大量CPU的幫助才能實現。
CPU從概念上來說是General purpose的,意即能夠處理所有計算機的運算請求。從設計角度來說,CPU需要應付來自計算機的所有運算請求,其內部的核心在於分支預測和高速緩存,主要用於處理系統的負荷,而GPU只需要針對並行浮點運算做優化即可,其處理的數據和任務對象都相對單一。從數據結構的角度來說,在處理視頻編解碼任務時,CPU需要將視頻畫面的原子信息即像素值抽象為一個巨大的整型數組,其存儲方式和索引結構都是稀疏的。而GPU運算將數據封裝成矩陣的格式,即上文提到的矩陣運算加速器,實現了更高效的內存操作和運算,並且在分散式運算的大趨勢下,基於多線程GPU運算的開發庫(如CUDA)能夠將GPU的運算髮揮到極致。當然,CPU的內核里也對多媒體運算做了大量的優化,比如大名鼎鼎的擴展指令集MMX、SSE系列,這些指令集應該是現有視頻編解碼應用中最至關重要的加速工具。另外一點就是,CPU的解碼依然依賴於計算機的軟體實現,例如在現有的開源框架下,CPU的編解碼一般是通過FFMPEG這樣的工具加以實現的,這樣的軟體效率也是決定CPU編解碼效率的一大因素。
所以對於視頻編解碼任務而言,這是GPU天生的強項,與單純CPU解碼相比,其針對特定codec優化後的硬體加速性能完勝;但是GPU解碼的過程,卻必須依賴於CPU的調度和某些特定的運算支持。這就好比一個團隊里,GPU是年輕氣盛的編程高手,C++多線程寫得飛起,但是他的頭上有一個資深的架構師/全棧工程師CPU,能夠解決一切的問題,還得時不時的給小弟們擦屁股。
個人愚見,以上
關於具體的評測,可以參考這篇文章:http://www.behardware.com/articles/828-27/h-264-encoding-cpu-vs-gpu-nvidia-cuda-amd-stream-intel-mediasdk-and-x264.html
推薦閱讀:
※什麼軟體錄製下來的FLV視頻小而且清晰度高的?
※推特為什麼要把GIF做成MP4的視頻格式?有什麼利弊呢?
※FLV視頻格式如何加速播放?
※為什麼視頻發布一般用rmvb和mkv而不用flash用flv和f4v?(主要考慮壓縮比,次要考慮流媒體特性)
※第一部使用16:9格式的TV動畫是哪部?