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時,程式又可退化為通常的程式(一般為序列),**仍然可以正常運作,只是不能利用多執行緒來加速程式執行。
[隱藏]
3環境變數
4爭議5外部鏈結
openmp提供的這種對於並行描述的高層抽象降低了並行程式設計的難度和複雜度,這樣程式設計師可以把更多的精力投入到並行演算法本身,而非其具體實現細節。對基於資料分集的多執行緒程式設計,openmp是乙個很好的選擇。同時,使用openmp也提供了更強的靈活性,可以較容易的適應不同的並行系統配置。執行緒粒度和負載平衡等是傳統多執行緒程式設計中的難題,但在openmp中,openmp庫從程式設計師手中接管了部分這兩方面的工作。
#pragma omp [clause[[,] clause] ...]在 omp parallel 段內的程式**由多執行緒來執行:int main(int argc,
char
* argv)
[編輯]
執行結果
% gcc omp.c (由單執行緒來執行)openmp可以使用環境變數% ./a.out
hello, world.
% gcc -fopenmp omp.c (由多執行緒來執行)
% ./a.out
hello, world.
hello, world.
hello, world.
hello, world.
omp_num_threads以控制執行執行緒的數量。
% gcc -fopenmp omp.c作為高層抽象,openmp並不適合需要複雜的執行緒間同步和互斥的場合。 openmp的另乙個缺點是不能在非共享記憶體系統(如計算機集群)上使用。在這樣的系統上,mpi使用較多。% setenv omp_num_threads 2(由2執行緒來執行)
% ./a.out
hello, world.
hello, world.
WIKI 維基百科
今天.我又了解了乙個新的東東.wiki.wiki一詞源自夏威夷語的 wee kee wee kee 本是 快點快點 之意。在這裡wiki指的是一種超文字系統,系支援那些面向社群的協作式寫作,同時也包括一組支援這種寫作的輔助工具。有人認為,wiki系統屬於一種人類知識的網路系統,我們可以在web的基礎...
DevOps 維基百科
3 月,跳不動了?devops development和operations的組合詞 是一種重視 軟體開發人員 dev 和 it運維技術人員 ops 之間溝通合作的文化 運動或慣例。透過自動化 軟體交付 和 架構變更 的流程,來使得構建 測試 發布軟體能夠更加地快捷 頻繁和可靠。1 可以把devop...
維基百科 MediaWiki API 解析
使用開放的 api 做乙個自己的小專案,是乙個很好的學習方法。但好像開放的 api 選擇並不多。這裡給大家多乙個選擇,簡單介紹一下維基百科使用的 mediawiki api。先簡單介紹幾個容易混淆的概念。wiki 是一種在網路上開放且可供多人協同創作的超文字系統。wiki 站點可以由多人維護,不同人...