充分利用多核心的程式

充分利用多核心的程式

底下是電腦王雜誌第49期〈玩軟體:萬用綠色虛軟體〉文章投稿的一部份,由於篇幅的限制,加上和主題的關聯性不高,因此挪到網站上刊登。 跑多執行緒程式或平行演算,才會增加多核心CPU的利用率,關於這一點,我們可以自己用Visual C++ 2008寫一個能平行運算的程式來驗證。先建立一個Win32 Console的專案:

編譯後可以自行檢驗看看,雙核心的使用效率有什麼改變。Windows的工作管理員和效能監視器,雖然都能監看每一顆核心的使用率,但是操作介面不太直覺。我們可以用Everest來觀察,試試透過OpenMP跑平行化和不用OpenMP有什麼差異,如果效果不顯著,可以再額外增加空白迴圈數。

充分利用多核心的程式
▲建立Win32 Console Application專案,也就是終端機介面的程式。

充分利用多核心的程式
▲Visual C++ 2008預設不支援OpenMP,要到「Configuration properties」>「C/C++」>「Language」>「OpenMP support」打開它。

充分利用多核心的程式
▲在還沒引入平行化處理程式碼時,可以發現迴圈是按照順序執行的。

充分利用多核心的程式
▲引入OpenMP後,發現迴圈被分兩半,「0到4」和「5到9」同時被執行,合併以後,數字就會交錯,但可以看出兩個半邊各自都是按順序執行的。

充分利用多核心的程式
▲在Everest裡點選「主機板」>「CPU」,就可以看每個核心的使用率。

Everest Ultimate網址:http://www.lavalys.com/

延伸閱讀:Heresy’s Live Space:http://heresy.spaces.live.com/blog
Heresy整理了OpenMP的心得筆記,包括什麼情況程式可以分割,以及怎麼分割,還有該使用什麼OpenMP的語法。

PC!ADV
作者

使用 Facebook 留言
發表回應
謹慎發言,尊重彼此。按此展開留言規則