visual?

OpenMp提供的這種對於並行描述的高層抽象降低了並行編程的難度和複雜度,這樣程序員可以把更多的精力投入到並行算法本身,而非其具體實現細節。對基於數據分集的多線程程序設計,OpenMP是一個很好的選擇。同時,使用OpenMP也提供了更強的靈活性,可以較容易的適應不同的並行系統配置。線程粒度和負載平衡等是傳統多線程程序設計中的難題,但在OpenMp中,OpenMp庫從程序員手中接管了部分這兩方面的工作。

工具/原料

visual studio 2013

多核計算機

方法/步驟

創建一個名為OpenMP的空控制檯工程(即沒有VS2008不會生成任何文件

visual studio 多核併發開發

openMP支持的編程語言包括C語言、C++和Fortran,支持OpenMP的編譯器包括Sun Studio,Intel Compiler,Microsoft Visual Studio,GCC。我使用的是Microsoft Visual Studio 2008,CPU為Intel i5 四核,首先講一下在Microsoft Visual Studio 2008上openMP的配置。

visual studio 多核併發開發

添加一個名為OpenMP.cpp的源文件

visual studio 多核併發開發

“工程屬性->C/C++->OpenMP支持”設置如下圖:

helloworld 實例

#include #include #include // OpenMP編程需要包含的頭文件

int main(){#pragma omp parallel for for(int i = 0; i < 10; ++i) { std::cout << i << std::endl; }

return 0;};

visual studio 多核併發開發

要在Visual C++2005 中使用OpenMP其實不難,只要將 Project 的Properties中C/C++裡Language的OpenMP Support開啟(參數為 /openmp),就可以讓VC++2005 在編譯時支持OpenMP 的語法了;而在編寫使用OpenMP 的程序時,則需要先include OpenMP的頭文件:omp.h。

而要將 for 循環並行化處理,該怎麼做呢?非常簡單,只要在前面加上一行

#pragma omp parallel for

就夠了!

visual studio 多核併發開發

但是,作為高層抽象,OpenMp並不適合需要複雜的線程間同步和互斥的場合。OpenMp的另一個缺點是不能在非共享內存系統(如計算機集群)上使用。在這樣的系統上,MPI使用較多。

visual studio 多核併發開發

相關問題答案