openmp簡單介紹

2021-10-09 10:53:05 字數 1362 閱讀 9272

penmp是乙個業界的標準,很早以前就有了。我們可以在c/c++和fortran使用openmp、很容易的引入多執行緒。在學習使用這個之前應該有一定的c、c++的基礎。

vs中啟用openmp很簡單,很多主流的編譯環境都內建了openmp。在專案上右鍵->屬性->配置屬性->c/c+±>語言->openmp支援,選擇「是」即可。

openmp 的執行模型採用 fork-join 的形式,其中 fork 建立新執行緒或者喚醒已有執行緒; join即多執行緒的會合。 fork-join 執行模型在剛開始執行的時候,只有乙個稱為「主線程」的執行執行緒存在。主線程在執行過程中,當遇到需要進行平行計算的時候,派生出執行緒來執行並行任務。在並行執行的時候,主線程和派生執行緒共同工作。在並行**執行結束後,派生執行緒退出或者阻塞,不再工作,控制流程回到單獨的主線程中。

概念性的東西大家可以看看相關書籍,直接上怎麼用吧!

1. void main(int argc, char *ar**)  

//並行域的結束

}

上面的輸出結果為:

hello, world!

hello, world!

hello, world!

hello, world!

這裡的結果由本身電腦決定,當然可以在vs中寫上對應的執行緒的數量!

函式名 作用

omp_in_parallel 判斷當前是否在並行域中

omp_get_thread_num 返回執行緒號

omp_set_num_threads 設定後續並行域中的執行緒個數

omp_get_num_threads 返回當前並行區域中的執行緒數

omp_get_max_threads 獲取並行域可用的最大執行緒數目

omp_get_num_procs 返回系統中處理器個數

omp_get_dynamic 判斷是否支援動態改變執行緒數目

omp_set_dynamic 啟用或關閉執行緒數目的動態改變

omp_get_nested 判斷系統是否支援並行巢狀

omp_set_nested 啟用或關閉並行巢狀

omp_init(_nest) _ lock 初始化乙個(巢狀) 鎖

omp_destroy(_nest)_lock 銷毀乙個(巢狀)鎖

omp_set(_nest)_lock (巢狀)加鎖操作

omp_unset(_nest)_lock (巢狀)解鎖操作

omp_test(_nest)_lock 非阻塞的(巢狀)加鎖

omp_get_wtime 獲取 wall time 時間

omp_set_wtime 設定 wall time 時間

第一次寫,還有點不知道怎麼搞,慢慢來吧。後面在慢慢完善!

簡單了解OpenMP

openmp 是 open multiprocessing 的縮寫。openmp 並不是乙個簡單的函式庫,而是乙個諸多編譯器支援的框架,或者說是協議吧,總之,不需要任何配置,你就可以在 visual studio 或者 gcc 中使用它了。pragma omp parallel vs中配置 很多需要...

openmp配置指南 openmp開發環境配置

語句繫結和巢狀規則 庫函式和環境變數設定 12.openmp計算例項 13.openmp應用程式設計的效能分析 2013 8 18 3 6.9 openmp執行緒同步與執行緒資料語句 資料競爭問題.介紹輕量級虛擬化技術 docker 的核心概念和基本架構,並基於 docker 技術在 linux 平...

openMP(平行計算) 超簡單快速上手

vs等編譯器中開啟openmp支援 將 project 的properties中c c 裡language的openmp support開啟 引數為 openmp 包含標頭檔案 include 在需要並行化的for迴圈前加入 pragma指令 pragma omp parallel for 這就三步...