Transcript Document

以OpenMP設計
H.264視訊編碼平行運算系統
報告者:何敬傑
指導教授:陳弘明
報告大綱
 研究背景
 研究動機
 研究目的
 預期結果
 應用技術
 未來發展
研究背景
•H.264/AVC視訊編碼標準
數位電視
網路行動視訊
影音傳送
儲存媒體
舉例來說:一個彩色視訊影像,每秒播放三十張的1920 x 1080格式畫面,將需要
1920 * 1080 像素/畫面張數 * 3 位元/像素 * 30 畫面/秒 =186,624,000位元
/秒。
研究背景
輸入
儲存畫面
+
_
DCT轉
換
量化
熵編碼
反量化
參考畫面
反DCT轉
換
+
運動補償
+
儲存畫面
(I,P)
運動向量
運動估計
欲編碼畫面
Current frame
參考畫面
Reference frame
佔了60%~80%執行時間
緩衝器
輸出
研究背景
(i+k,j+l)
(u,v)
參考畫面(ft-1)
目前畫面(ft)
N 1 N 1
SAD (u, v)   ft (i  k , j  l )  ft 1 (i  k  u, j  l  v)
k 0 l 0
(u,v): 移動搜尋視窗之座標
N:區塊大小 ex: 16 x 16、8 x 8 、 4 x 4
研究背景
 平行化於共享記憶體(可擁有個別記憶體空間)
 擴充於現有程式碼(C/C++、Fortran)
 需載入Header File(omp.h)
 混合併行編程模型構建的應用程序
研究背景
 使用限制
 程式中只有彼此不相關的敘述以及可以獨立執行的任
務才能被平行化。
 程式碼必須經過適當的修改才能被平行執行。
 觀念
 一個程序(Process)被執行時至少要有一個執行緒
(Thread),但也可同時擁有多個執行緒來進行處理。
 程序間的資源是彼此獨立不共用的,但是在同一程序
下的所有執行緒共同分享該程序的所有資源。
研究背景
主執行序
平行執行序
差異
 選用的 API 與實際執行程式的平臺架構有關。
 共享記憶體
適用API:
OpenMP、Pthreads
差異
 選用的 API 與實際執行程式的平臺架構有關。
 分散式記憶體
適用API:
MPI (Message Passing Interface)
差異
 選用的 API 與實際執行程式的平臺架構有關。
 異質裝置結構(GPGPU)
適用API:
CUDA、OpenCL、與 DirectCompute
Loop Construct
 使用限制
 迴圈的迭代次數必須是可數的,且有明確的整數型態
初始值與終止條件,每次步進的增減幅度也必須是固
定的整數。
 迴圈中每個被切割出來的部份在運算上必須是獨立地,
即計算過程中不需要用到其它部分所產生的資訊,並
且執行各個部分可以不必按照順序。
 迴圈內不能有跳出迴圈的敘述。
Loop Construct
主執行序
平行執行序
Loop Construct
研究動機
研究動機
 多核心電腦普及化
 多核心電腦已非常容易取得
 演算法減少視訊編碼的時間方式通常犧牲微量品質
 使用平行運算可保有品質也可以減少時間
研究目的
研究目的
 使用OpenMP多核心平行處理技術達到減少視訊編碼
時間且品質保持原來水準。
預期結果
預期結果
 在保有原本品質的情況下,時間降低。
 編碼時間與核心數量呈反比。
應用技術
應用技術
 JM
 H.264視訊編碼的環境
 ME Package
 視訊編碼中僅運行運動估計的測試環境
 OpenMP
 多核心平行化處理技術
 Full Search
 完全搜尋演算法
 正常情況下品質最佳
未來發展
未來發展
 若單機測試完成,則可以開始使用不同架構的平行
化處理,如MPI、Hadoop…等等多機平行化技術。
 若是單一演算法成功,可分配給不同核心做不同演
算法,取得該區塊最佳解。
謝謝各位評審聆聽