Download presentation
Presentation is loading. Please wait.
1
GPU分散式演算法與CPU多執行緒演算法之單機系統模擬
2
Outline Multi-Threading(多執行緒) Threads API OpenMP的特點
OpenMP vs. Multi-Threading 單機系統模擬 Conclusion 2/1/2010 ICAL
3
Multi-Threading(多執行緒)
Thread是在CPU執行的最基本單位,在傳統 的單一Thread的程式,同時只能使用一個 CPU,無法完全發揮多CPU或多核心CPU的 運算能力。 Multi-Threading是一種將Process內的工作分 成多個Thread的技術。能使一個Process同時 運用多顆CPU或多個核心CPU,以充份運用 硬體運算資源。 2/1/2010 ICAL
4
Threads API Windows API – Threads POSIX Threads (Pthreads)
微軟提供在Windows系統上,可被各種語言乎 叫的API,其中有一部份的函數可運用於建立 、管理Threads,進而撰寫出Multi-Threading 的 程式。 POSIX Threads (Pthreads) 專用於Unix-like POSIX 系統,如Linux、Solaris 的一套可建立、管理Threads的API。此API後來 也出現可在微軟Windows平台上執行的版本。 2/1/2010 ICAL
5
OpenMP的特點 專用於共享記憶體架構多執行緒程式開發 的跨平台API 支援C、C++、Fortran語言
提供對平行演算法高階的抽象描述,可有 效降低開發平行運算程式的難度和複雜度 ,使程式開發者更加專注於平行演算法本 身,而不需要去處理具體的細節 2/1/2010 ICAL
6
OpenMP的特點(續) 使用Threads API的方式來進行多核心程式設計 ,必須自行創建threads,自行設計分配各 threads的工作、順序,自行協調規劃各threads 在存取記憶體時的行為並加以保護以防止計算 發生錯誤,自行匯集統合各threads的計算結果 ,並刪除threads。 OpenMP只需在欲平行化的程式碼前加入一些 相關註釋,OpenMP會自動將創建threads、管 理threads、匯整結果並刪除threads,各細節自 動處理完畢,可節省大量開發時間。 2/1/2010 ICAL
7
OpenMP vs. Multi-Threading
優點:因許多細節都自動的被處理,開發方便快速 缺點:也因細節的被自動處理,程式人員欲開發的 細節受到限制,無法針對硬體進行效能優化 Multi-Threading 優點:Threads的創建、管理的各種細節都由自行 處理,可對硬體做效能優化與特殊處理 缺點:因Threads的大小細節需自行處理,在程式 開發上耗時耗力 2/1/2010 ICAL
8
單機系統模擬 系統模擬使用OpenMP、Windows API Threads、CUDA,以測試使用OpenMP或 Threads兩種不同的程式開發方式效能差距 。 將一張已被SVD分解的影像資料,會分解 為紅綠藍3種顏色,每個顏色3個1024×1024 的距陣。系統模擬分別使用只動用單一核 心的CPU、四核心CPU和大量核心GPU以矩 陣相乘的方式進行還原。 2/1/2010 ICAL
9
模擬測試環境 GPU CPU Device NVIDA Geforce 9600 GSO Cores 96 Processor Clock
1375 MHz Standard Memory 384 MB Memory Bandwidth 38.4 GB/sec CPU Device Intel Core 2 Quad Q9300 Cores 4 Processor Clock 2.5 GHz FSB speed 1333 MHz L2 Cache 6 MB 11/17/09
10
測試結果 Single-CPU OpenMP Windows API Threads CUDA Red 45.157 sec.
Green sec. sec. sec. Blue sec. sec. sec. Total (sec.) sec. sec. sec. 1.734 sec. 2/1/2010 ICAL
11
分析 經以上實驗結果可發現,無論使用OpenMP 或Threads API,在效能上的差距仍相當接 近,因此在進行選擇時,可以不需要太考 慮效能因素。 雖然OpenMP在程式開發上非常簡單便利, 但也因此無法決定threads較細節的部份。反 之,使用Windows Threads API或Pthreads則 因需自行決定threads的細節,而可以對硬體 進行特殊的控制或進一步對效能進行優化 。 2/1/2010 ICAL
12
Conclusion OpenMP程式開發簡單快速,但無法控制細 節, Threads API程式開發較困難耗時,但自 行決行threads運作細節。 同一種演算法使用OpenMP或Threads API效 能相近,但Threads API可進一步對硬體進行 效能優化。 雲端運算主機使用CPU與NVIDIA CUDA GPU協同運算,在時間、人力充足的情況下 ,可以考慮使用Threads API對硬體做進一步 效能優化。 2/1/2010 ICAL
Similar presentations