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…等等多機平行化技術。
若是單一演算法成功,可分配給不同核心做不同演
算法,取得該區塊最佳解。
謝謝各位評審聆聽