2010 03 25
基于MPI的H.264并行編碼代碼移植與優化
范 文
洛陽理工學院計算機信息工程系 洛陽 471023
摘 要 H.264獲得出色壓縮效果和質量的代價是壓縮編碼算法復雜度的增加。為了尋求更高的編碼速
度,集群并行計算被運用到H.264的視頻編碼計算中。分析H.264可實現并行計算的任務單元選擇;采用
了片(slice)級的H.264并行編碼計算方法,實現了基于MPI并行環境的X264源代碼移植;針對實驗室的小
型集群平臺,通過測試給出較優的并行任務分配方案,結果表明對標清視頻在分8片以上并行編碼時能夠
達到實時編碼的要求。
關鍵詞 H.264;視頻編碼;并行計算;MPI
引言
隨著計算機、通信、廣播等技術的發展,數字視
頻(Digital Video)已應用于許多領域,如可視電話、會
議電視、安全監控、高清晰度電視(HDTV),視頻點播
(VOD)等。多媒體視頻應用的廣泛普及,高質量的視頻
服務市場潛力巨大。實時的高清晰視頻編碼傳輸技術成
為視頻發展重點。視頻業務的實時應用,面臨著視頻圖
像的大數據量、有限的通信信道的傳輸率、存儲容量及
計算機的處理速度的瓶頸。如果單靠增加通信信道的帶
寬、存儲器容量及提高計算機的運算速度,效果有限而
且也不經濟。而對視頻數據進行高效的編碼壓縮,不僅
可以提高通信傳輸效率也節省了存儲空間。
數字視頻壓縮技術在各種需求的推動下,不斷得到
發展和提高。由視頻編碼專家小組(VCEG)和運動圖像
專家小組(MPEG)成立的聯合視頻專家小組JVT (Joint
Video Term)共同制定的H.26L標準草案,其成果成為
MPEG-4的第十部分,于2002年底正式命名為H.264,
并且成為ITU-T和MPEG聯合專家組JVT制訂的下一代
視頻編碼標準AVC(Advanced Video Coding)的基礎[1]。
它具備很多以往同類標準沒有的優點,適用范圍廣泛,
發展潛力巨大。
為了獲得更好的視頻編碼效果,視頻編碼計算的復
雜性也就隨之極大的增加,它對計算機的處理能力要求
也越來越高。僅依賴于單核計算機處理器速度的提高,
現在還無法達到高清和標清視頻的實時H.264編碼壓
縮。因此需要尋求一種利用現有的資源能夠更高效地完
成復雜任務的方法:通過高速網絡,充分利用網絡連接
的計算機資源,實現復雜問題的并行計算。本文研究利
用MPI來實現視頻編碼的并行處理,實現H.264并行視
頻編碼計算,從而有效提升了H.264編碼的速度。在實
時的高清、標清視頻編碼壓縮方面,對H.264編碼壓縮
代碼的并行處理移植實現,是一個較新并具有應用價值
的研究,這也是本論文研究的主要課題。
1 并行計算
并行計算,簡單地講就是在并行計算機或分布式計
算機等高性能計算系統上所做的大型復雜計算,其物質
基礎是高性能并行計算機(包括分布式網絡計算機)。并
行計算的發展基于兩方面的認識:第一,單處理機性能
不可能滿足大規模計算和工程問題計算的需求,而并行
計算機則是實現高性能計算、解決挑戰性問題的唯一途
徑;第二,同時性和并行性是客觀物質世界存在的普遍
屬性,具有實際物理背景的計算問題在許多情況下都可
劃分為能夠并行計算的多個子任務。
實現并行算法的常用軟件環境是操作系統( 如
Research & Development
研究與開發
Research & Development
26 信息通信技術
L i n u x , Windows等)配合并行計算環境加上工具
語言(如C, C++, Fortran)。并行計算環境隨著近
年來分布式M P P 系統與工作站集群系統的發展得
到了迅速發展,相繼出現了PVM,MPI,Express,
Linda,PARMACS,P4,Nx和Zipcode等基于消息傳遞的
并行計算環境,目前常用的是PVM和MPI。我們選用
MPI并行環境進行研究。
MPI(Message Passing Interface)是并行計算機的
消息傳遞接口標準的簡稱,提供了一組可用于消息傳
遞的通信原語。MPI的標準化開始于1992年4月29日至
30在威吉尼亞的威廉姆斯堡召開的分布存儲環境中消
息傳遞標準的討論會,由Dongarra、Hempel、Hey和
Walker建議的初始草案,在1992年11月推出并在1993
年2月完成了修訂版,這就是MPI1.0。1995年6月推出
了MPI的新版本MPI1.1,對原來的MPI作了進一步的
修改完善和擴充。MPI僅僅提供并行庫,而不是一門語
言,是一種對原來的串行程序設計改動最小的并行化方
法[2]。這樣,原來的串行編譯器也能夠使用,不需要任
何修改。編程者只需要在原來的串行程序中加入對并行
庫的調用,就可以實現并行程序設計。
MPI庫可以被Fortran77,Fortran90,C,C++調
用,從語法上說它遵守所有對庫函數/過程的調用規
則,和一般的函數/過程沒有什么區別。MPI是目前最
重要的并行編程工具,它具有移植性好,功能強大,效
率高等多種優點。
2 H.264并行化編碼分析與實現
H.264的碼流數據層次包括一個表頭、一個或多
個圖像片及序列的結束標志碼。如圖1所示,視頻序
列(Sequence)是由一系列的圖像(Picture)組成,每幀圖
像由一個或多個片(slice)組成,每個片又由多個宏塊
(Macroblock)組成[3]。
為了追求更高的壓縮效率,去除圖像序列間時間冗
余度,同時滿足多媒體播放等隨機存取要求,H.264將
視頻序列中的圖像幀劃分為I幀圖像(幀內編碼圖像)、P
幀圖像(預測編碼圖像)和B幀圖像(雙向預測編碼圖像);
組成圖像的16×16大小的宏塊(Macroblock)又可以分為
4個8×8的塊(Block)。在H.264中,組成片(Slice)的連
續宏塊是按照一定編碼順序排列的,Slice表示的是一個
獨立的編碼單元,也就是說它不需要參考同一幀中其他
Slice來進行編碼。通過有效的調度算法,從以上這些數
據結構中選擇一個合適的并行任務單元,能夠獲得一個
高效率的并行編碼處理器[4]。
主從模式并行處理的工作流程模型如圖1所示。
本論文試驗環境為小型的工作站集群。工作站機群
是將聯網的多臺工作站組成一個并行集群,適用于中等
規模的并行系統,價格便宜、配置靈活,但規模及并行
效率受網絡設備的制約。所用的節點機器是由5臺DELL
工作站組成,由千兆交換機和千兆網卡連接組成的小型
集群,采用Windows操作系統。每臺工作站的配置為
Intel Xeon DualCore CPU 5130 2.0GHz兩顆、內存
4G、千兆網卡。每臺機器安裝有MPI的MPICH-1.2.5
實現版本。本文選擇X264源代碼作為實現H.264并行編
碼的原因,是由于X264中采用了一些算法優化,程序
結構優化及MMX, SSE, SSE2等指令優化,對原本消
耗較大的去塊濾波器等做了較大程度的優化。
具體實現過程如圖2所示。
3 結論
移植后的并行H.264編碼程序可以運行在不同的
系統平臺上。根據實驗室使用的Windows平臺小型集
群,每個節點有兩個雙核2.0GHz CPU的特點,我們
用多個不同的視頻序列,采用不同的任務分配方式,測
試并行編碼統計數據。
通過測試結果及實驗分析,得出以下結論:影響
大分辨率視頻H.264并行編碼加速比的一個主要原因是
網絡通信問題。提高并行編碼速度的一種方法是做并
行編碼時先把要編碼視頻數據存放在各臺節點機器上,
讓每個節點機器上運行的任務程序從本節點機器上讀取
相應的數據片進行編碼。因為YUV的視頻序列數據量
很大,這種靜態的數據獲取可以節約大量的通信開銷。
但是這種靜態的數據調用,對于要實現實時分發并行編
研究與開發
2010 03 27
碼是沒有意義的,所以我們的H.264并行編碼方案是直
接從主機向各從機實時的分配圖像幀片數據。由于要通
過一個節點機器的網卡出口,同時向多臺從機節點并發
數據,所以主機網絡發送就成為一個提高并行編碼速度
的瓶頸。雖然對于目前的720*576數據可以達到實時編
碼,但是更高分辨率的視頻圖像,數據增加必然給主機
端的網絡發送造成壓力。這些可能需要雙網卡的綁定,
或者其他的數據獲取方式,提高并行傳輸的數據量。
實現并行編碼還要根據不同的平臺,實現不同的策
略。如上述的實驗室5臺工作站組成的集群平臺,根據
它的特點我們得出適應并行編碼的最佳條件:
1) 當分配相同工作任務數量時,在主機上工作的
任務數越多效率越高,因為每臺機器是2個雙核CPU相
當于有4個核,可以同時執行4個任務。在主機上工作任
務多就意味著可以盡量少的通過網絡傳輸數據,節省整
體的通信時間。
2) 同樣并行片編碼任務數目時,在充分利用主機
的處理器條件下,相同的任務數量分配機器數越多速度
越快。因為H.264編碼對內存的要求較高,當多個任務
分配在一個節點機器上的不同CPU核時,在一個節點
機器上各處理器共享內存,工作時對內存資源的需求造
成了沖突。所以要獲得高的并行效率,需要根據集群平
臺的實際情況優化任務分配策略,這也是同一個程序能
獲得不同并行效果的因素。
3) 經過多組視頻圖像的測試,發現在8片時編碼的
平均速度為27.32fps,并且每組視頻序列也都達到了實
時編碼的要求。
在實驗室5臺并行機器能實現上述任意任務的分
配,是由于我們可以寫配置文件來指定任務工作方式、
任務分配節點位置、數量。在這種小型的集群平臺上我
們可以按照我們的要求,最優地分配任務。學校集群平
臺上的實驗結果與實驗室5臺有所不同,是因為我們不
Research & Development
圖1 主從模式并行處理的工作模型
28 信息通信技術
圖2 X264程序并行執行流程
研究與開發
2010 03 29
作者簡歷
H.264 Code Parallel Implementation and Optimization
Based on MPI
Fan Wen
Computer and Information Engineering Department, Luoyang Institute of Science and
Technology, Luo Yang 471023, China
Abstract The cost of H.264 geting good coding effect and quality is algorithms complexity increased.
The High Perfermance Parallel Computing was used in the H.264 video coding for getting faster
speed, Choosing slice as a unit for H.264 Parallel Computing and implementing X264 codec Parallel
Computing with MPI, then the best Parallel task work effi ciency based on lab′s cluster was got and test
results indicated that the parallel coding speed of SD Video can meet real-time requirement when sliceses
are more than 8.
Keywords H.264; Video Coding; Parallel Computing; MPI
范 文
洛陽理工學院,計算機與信息工程系。
能像實驗室平臺那樣可以在主機上多分配執行任務,節
省部分通信時間。學校的集群平臺上完全是把每片數據
都通過網絡發送給從機節點進行編碼計算,耗費網絡通
信時間較多,這是兩個平臺實驗數據有差別的一個原
因。學校這種規模較大,為眾多公眾服務的集群,我們
不易按配置文件來指定任務在節點的工作方式,因為可
能同時有別的用戶在使用。對于不同的集群平臺要根據
實際情況優化并行任務。
參考文獻
[1]
[2]
[3]
[4]
Iain E.G.Richardson.H.264 and MPEG-4
Video Compression Wiley.2003
都志輝.高性能計算之并行編程技術—MPI并行程
序設計.北京:清華大學出版社,2001
I T U - T R e c . H . 2 6 4 / I S O / I E C 1 1 4 9 6 - 1 0 .
Advanced Video Coding.Final Committee
Draft,Document JVT-F100,2002.12
孫彥輝.基于H_264編碼碼率控制方法研究[D].中
南大學大學碩士學位論文,2008
Research & Development
基于MPI的H.264并行編碼代碼移植與優化
范 文
洛陽理工學院計算機信息工程系 洛陽 471023
摘 要 H.264獲得出色壓縮效果和質量的代價是壓縮編碼算法復雜度的增加。為了尋求更高的編碼速
度,集群并行計算被運用到H.264的視頻編碼計算中。分析H.264可實現并行計算的任務單元選擇;采用
了片(slice)級的H.264并行編碼計算方法,實現了基于MPI并行環境的X264源代碼移植;針對實驗室的小
型集群平臺,通過測試給出較優的并行任務分配方案,結果表明對標清視頻在分8片以上并行編碼時能夠
達到實時編碼的要求。
關鍵詞 H.264;視頻編碼;并行計算;MPI
引言
隨著計算機、通信、廣播等技術的發展,數字視
頻(Digital Video)已應用于許多領域,如可視電話、會
議電視、安全監控、高清晰度電視(HDTV),視頻點播
(VOD)等。多媒體視頻應用的廣泛普及,高質量的視頻
服務市場潛力巨大。實時的高清晰視頻編碼傳輸技術成
為視頻發展重點。視頻業務的實時應用,面臨著視頻圖
像的大數據量、有限的通信信道的傳輸率、存儲容量及
計算機的處理速度的瓶頸。如果單靠增加通信信道的帶
寬、存儲器容量及提高計算機的運算速度,效果有限而
且也不經濟。而對視頻數據進行高效的編碼壓縮,不僅
可以提高通信傳輸效率也節省了存儲空間。
數字視頻壓縮技術在各種需求的推動下,不斷得到
發展和提高。由視頻編碼專家小組(VCEG)和運動圖像
專家小組(MPEG)成立的聯合視頻專家小組JVT (Joint
Video Term)共同制定的H.26L標準草案,其成果成為
MPEG-4的第十部分,于2002年底正式命名為H.264,
并且成為ITU-T和MPEG聯合專家組JVT制訂的下一代
視頻編碼標準AVC(Advanced Video Coding)的基礎[1]。
它具備很多以往同類標準沒有的優點,適用范圍廣泛,
發展潛力巨大。
為了獲得更好的視頻編碼效果,視頻編碼計算的復
雜性也就隨之極大的增加,它對計算機的處理能力要求
也越來越高。僅依賴于單核計算機處理器速度的提高,
現在還無法達到高清和標清視頻的實時H.264編碼壓
縮。因此需要尋求一種利用現有的資源能夠更高效地完
成復雜任務的方法:通過高速網絡,充分利用網絡連接
的計算機資源,實現復雜問題的并行計算。本文研究利
用MPI來實現視頻編碼的并行處理,實現H.264并行視
頻編碼計算,從而有效提升了H.264編碼的速度。在實
時的高清、標清視頻編碼壓縮方面,對H.264編碼壓縮
代碼的并行處理移植實現,是一個較新并具有應用價值
的研究,這也是本論文研究的主要課題。
1 并行計算
并行計算,簡單地講就是在并行計算機或分布式計
算機等高性能計算系統上所做的大型復雜計算,其物質
基礎是高性能并行計算機(包括分布式網絡計算機)。并
行計算的發展基于兩方面的認識:第一,單處理機性能
不可能滿足大規模計算和工程問題計算的需求,而并行
計算機則是實現高性能計算、解決挑戰性問題的唯一途
徑;第二,同時性和并行性是客觀物質世界存在的普遍
屬性,具有實際物理背景的計算問題在許多情況下都可
劃分為能夠并行計算的多個子任務。
實現并行算法的常用軟件環境是操作系統( 如
Research & Development
研究與開發
Research & Development
26 信息通信技術
L i n u x , Windows等)配合并行計算環境加上工具
語言(如C, C++, Fortran)。并行計算環境隨著近
年來分布式M P P 系統與工作站集群系統的發展得
到了迅速發展,相繼出現了PVM,MPI,Express,
Linda,PARMACS,P4,Nx和Zipcode等基于消息傳遞的
并行計算環境,目前常用的是PVM和MPI。我們選用
MPI并行環境進行研究。
MPI(Message Passing Interface)是并行計算機的
消息傳遞接口標準的簡稱,提供了一組可用于消息傳
遞的通信原語。MPI的標準化開始于1992年4月29日至
30在威吉尼亞的威廉姆斯堡召開的分布存儲環境中消
息傳遞標準的討論會,由Dongarra、Hempel、Hey和
Walker建議的初始草案,在1992年11月推出并在1993
年2月完成了修訂版,這就是MPI1.0。1995年6月推出
了MPI的新版本MPI1.1,對原來的MPI作了進一步的
修改完善和擴充。MPI僅僅提供并行庫,而不是一門語
言,是一種對原來的串行程序設計改動最小的并行化方
法[2]。這樣,原來的串行編譯器也能夠使用,不需要任
何修改。編程者只需要在原來的串行程序中加入對并行
庫的調用,就可以實現并行程序設計。
MPI庫可以被Fortran77,Fortran90,C,C++調
用,從語法上說它遵守所有對庫函數/過程的調用規
則,和一般的函數/過程沒有什么區別。MPI是目前最
重要的并行編程工具,它具有移植性好,功能強大,效
率高等多種優點。
2 H.264并行化編碼分析與實現
H.264的碼流數據層次包括一個表頭、一個或多
個圖像片及序列的結束標志碼。如圖1所示,視頻序
列(Sequence)是由一系列的圖像(Picture)組成,每幀圖
像由一個或多個片(slice)組成,每個片又由多個宏塊
(Macroblock)組成[3]。
為了追求更高的壓縮效率,去除圖像序列間時間冗
余度,同時滿足多媒體播放等隨機存取要求,H.264將
視頻序列中的圖像幀劃分為I幀圖像(幀內編碼圖像)、P
幀圖像(預測編碼圖像)和B幀圖像(雙向預測編碼圖像);
組成圖像的16×16大小的宏塊(Macroblock)又可以分為
4個8×8的塊(Block)。在H.264中,組成片(Slice)的連
續宏塊是按照一定編碼順序排列的,Slice表示的是一個
獨立的編碼單元,也就是說它不需要參考同一幀中其他
Slice來進行編碼。通過有效的調度算法,從以上這些數
據結構中選擇一個合適的并行任務單元,能夠獲得一個
高效率的并行編碼處理器[4]。
主從模式并行處理的工作流程模型如圖1所示。
本論文試驗環境為小型的工作站集群。工作站機群
是將聯網的多臺工作站組成一個并行集群,適用于中等
規模的并行系統,價格便宜、配置靈活,但規模及并行
效率受網絡設備的制約。所用的節點機器是由5臺DELL
工作站組成,由千兆交換機和千兆網卡連接組成的小型
集群,采用Windows操作系統。每臺工作站的配置為
Intel Xeon DualCore CPU 5130 2.0GHz兩顆、內存
4G、千兆網卡。每臺機器安裝有MPI的MPICH-1.2.5
實現版本。本文選擇X264源代碼作為實現H.264并行編
碼的原因,是由于X264中采用了一些算法優化,程序
結構優化及MMX, SSE, SSE2等指令優化,對原本消
耗較大的去塊濾波器等做了較大程度的優化。
具體實現過程如圖2所示。
3 結論
移植后的并行H.264編碼程序可以運行在不同的
系統平臺上。根據實驗室使用的Windows平臺小型集
群,每個節點有兩個雙核2.0GHz CPU的特點,我們
用多個不同的視頻序列,采用不同的任務分配方式,測
試并行編碼統計數據。
通過測試結果及實驗分析,得出以下結論:影響
大分辨率視頻H.264并行編碼加速比的一個主要原因是
網絡通信問題。提高并行編碼速度的一種方法是做并
行編碼時先把要編碼視頻數據存放在各臺節點機器上,
讓每個節點機器上運行的任務程序從本節點機器上讀取
相應的數據片進行編碼。因為YUV的視頻序列數據量
很大,這種靜態的數據獲取可以節約大量的通信開銷。
但是這種靜態的數據調用,對于要實現實時分發并行編
研究與開發
2010 03 27
碼是沒有意義的,所以我們的H.264并行編碼方案是直
接從主機向各從機實時的分配圖像幀片數據。由于要通
過一個節點機器的網卡出口,同時向多臺從機節點并發
數據,所以主機網絡發送就成為一個提高并行編碼速度
的瓶頸。雖然對于目前的720*576數據可以達到實時編
碼,但是更高分辨率的視頻圖像,數據增加必然給主機
端的網絡發送造成壓力。這些可能需要雙網卡的綁定,
或者其他的數據獲取方式,提高并行傳輸的數據量。
實現并行編碼還要根據不同的平臺,實現不同的策
略。如上述的實驗室5臺工作站組成的集群平臺,根據
它的特點我們得出適應并行編碼的最佳條件:
1) 當分配相同工作任務數量時,在主機上工作的
任務數越多效率越高,因為每臺機器是2個雙核CPU相
當于有4個核,可以同時執行4個任務。在主機上工作任
務多就意味著可以盡量少的通過網絡傳輸數據,節省整
體的通信時間。
2) 同樣并行片編碼任務數目時,在充分利用主機
的處理器條件下,相同的任務數量分配機器數越多速度
越快。因為H.264編碼對內存的要求較高,當多個任務
分配在一個節點機器上的不同CPU核時,在一個節點
機器上各處理器共享內存,工作時對內存資源的需求造
成了沖突。所以要獲得高的并行效率,需要根據集群平
臺的實際情況優化任務分配策略,這也是同一個程序能
獲得不同并行效果的因素。
3) 經過多組視頻圖像的測試,發現在8片時編碼的
平均速度為27.32fps,并且每組視頻序列也都達到了實
時編碼的要求。
在實驗室5臺并行機器能實現上述任意任務的分
配,是由于我們可以寫配置文件來指定任務工作方式、
任務分配節點位置、數量。在這種小型的集群平臺上我
們可以按照我們的要求,最優地分配任務。學校集群平
臺上的實驗結果與實驗室5臺有所不同,是因為我們不
Research & Development
圖1 主從模式并行處理的工作模型
28 信息通信技術
圖2 X264程序并行執行流程
研究與開發
2010 03 29
作者簡歷
H.264 Code Parallel Implementation and Optimization
Based on MPI
Fan Wen
Computer and Information Engineering Department, Luoyang Institute of Science and
Technology, Luo Yang 471023, China
Abstract The cost of H.264 geting good coding effect and quality is algorithms complexity increased.
The High Perfermance Parallel Computing was used in the H.264 video coding for getting faster
speed, Choosing slice as a unit for H.264 Parallel Computing and implementing X264 codec Parallel
Computing with MPI, then the best Parallel task work effi ciency based on lab′s cluster was got and test
results indicated that the parallel coding speed of SD Video can meet real-time requirement when sliceses
are more than 8.
Keywords H.264; Video Coding; Parallel Computing; MPI
范 文
洛陽理工學院,計算機與信息工程系。
能像實驗室平臺那樣可以在主機上多分配執行任務,節
省部分通信時間。學校的集群平臺上完全是把每片數據
都通過網絡發送給從機節點進行編碼計算,耗費網絡通
信時間較多,這是兩個平臺實驗數據有差別的一個原
因。學校這種規模較大,為眾多公眾服務的集群,我們
不易按配置文件來指定任務在節點的工作方式,因為可
能同時有別的用戶在使用。對于不同的集群平臺要根據
實際情況優化并行任務。
參考文獻
[1]
[2]
[3]
[4]
Iain E.G.Richardson.H.264 and MPEG-4
Video Compression Wiley.2003
都志輝.高性能計算之并行編程技術—MPI并行程
序設計.北京:清華大學出版社,2001
I T U - T R e c . H . 2 6 4 / I S O / I E C 1 1 4 9 6 - 1 0 .
Advanced Video Coding.Final Committee
Draft,Document JVT-F100,2002.12
孫彥輝.基于H_264編碼碼率控制方法研究[D].中
南大學大學碩士學位論文,2008
Research & Development