日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OpenMP - 维基百科,自由的百科全书

發布時間:2024/3/12 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenMP - 维基百科,自由的百科全书 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
OpenMP - 維基百科,自由的百科全書

OpenMP - 維基百科,自由的百科全書

OpenMP

維基百科,自由的百科全書 跳轉到: 導航、 搜索

OpenMP(Open Multi-Processing)是由OpenMP Architecture Review Board牽頭提出的,并已被廣泛接受的,用于共享內存并行系統的多線程程序設計的一套指導性注釋(Compiler Directive)。OpenMP支持的編程語言包括C語言、C++和Fortran;而支持OpenMP的編譯器包括Sun Studio和Intel Compiler,以及開放源碼的GCC和Open64編譯器。OpenMP提供了對并行算法的高層的抽象描述,程序員通過在源代碼中加入專用的pragma來指明自己的意圖,由此編譯器可以自動將程序進行并行化,并在必要之處加入同步互斥以及通信。當選擇忽略這些pragma,或者編譯器不支持OpenMP時,程序又可退化為通常的程序(一般為串行),代碼仍然可以正常運作,只是不能利用多線程來加速程序執行。

目錄

?[隱藏]?
  • 1 特色
  • 2 語法
    • 2.1 例子
      • 2.1.1 執行結果
  • 3 環境變量
    • 3.1 例子
  • 4 爭議
  • 5 外部鏈接

[編輯] 特色

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

[編輯] 語法

#pragma omp <directive> [clause[[,] clause] ...]

[編輯] 例子

在 omp parallel 段內的程序代碼由多線程來執行:

int main(int argc, char* argv[]){#pragma omp parallel printf("Hello, world.\n");return 1;}

[編輯] 執行結果

% gcc omp.c (由單線程來執行) % ./a.out Hello, world.% gcc -fopenmp omp.c (由多線程來執行) % ./a.out Hello, world. Hello, world. Hello, world. Hello, world.

[編輯] 環境變量

OpenMP可以使用環境變量 OMP_NUM_THREADS以控制執行線程的數量。

[編輯] 例子

% gcc -fopenmp omp.c % setenv OMP_NUM_THREADS 2(由2線程來執行) % ./a.out Hello, world. Hello, world.

[編輯] 爭議

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

[編輯] 外部鏈接

posted on 2012-08-21 07:09?lexus 閱讀(...) 評論(...) 編輯 收藏

轉載于:https://www.cnblogs.com/lexus/archive/2012/08/21/2648422.html

總結

以上是生活随笔為你收集整理的OpenMP - 维基百科,自由的百科全书的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。