OpenMP 應用 thread 的方式來達到「平行處理」的目的,也解決了資料分散處理、合併的問題。因此是該好好學習它了,利用 Eclipse 的方便,開發、除錯 OpenMP 的程式應該是個好主意。
接下來介紹一下,如何在 Fedora (或 Linux) 中,用 Eclipse 開發 OpenMP 程式。
之前已經寫過一些用 Eclipse 開發 C 、 OpenCV 的文章,所以這次就直接切入重點。需要前情提要,請參考 "在 Fedora 中,用 Eclipse 寫第一個程式 HelloWorld" 及 "在 Fedora 中,用 Eclipse 開發 OpenCV 程式" 兩篇。
一、建立新專案 HelloOpenMP
一開始就寫 OpenMP 程式怎麼可能,先下載個現成的 HelloOpenMP.c 程式吧! 這是美國.Lawrence Livermore 國家實驗室 "OpenMP 教程" 中的範例,待會把它貼到 HelloWorld.c 上,覆蓋掉原來的程式。注意:編譯前,在程式的 main() 最後加上 " return 1; ",不然編譯會出現錯誤訊息。
二、設定專案參數
從「選單」→「專案(P)」點選「內容(P)」,以設定專案的內容。- 當跳出專案設定視窗後,從左欄的「C/C++ Build」點選「Settings」,接著再設定右欄 Settings。在右欄中的「Configuration:」選 "[All Configurations]",使「除錯版」與「釋出版」有相同設定。
- 設定編譯的參數要從「Tool Settings」→「GCC C Compiler」點選「Miscellaneous」。在右方的「Other flags」的最後加上 "-fopenmp" 。
最後要設定 Link (鏈結) 的參數,一樣從「Tool Settings」→「GCC C Linker」點選「Miscellaneous」,在右方的「Linker flags」中加上 "-fopenmp" 。
按確定後,完成專案的編譯、連結參數之設定。
三、編譯、執行
按「鐵鎚」選定「釋出版」模式,再按一次「鐵鎚」就會進行「編譯」。接著按「執行」鈕,開始執行程式。測試的電腦是雙處理器,多按幾次會發現執行的結果都不一樣。
Hello World from thread = 0或
Hello World from thread = 1
Number of threads = 2
Hello World from thread = 1或
Number of threads = 2
Hello World from thread = 0
Number of threads = 2
Hello World from thread = 1
Hello World from thread = 0
已測試版本:
- Fedora: 14
- Eclipse: 3.6.1
沒有留言:
張貼留言
感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)