執行時函式
win 10、vs2017
#include
intmain()
//並行結束,序列區域
return0;
}
目的:接下來乙個區域內指令全部執行緒執行
理解:當執行緒執行到並行指令後,建立指定數目或者預設數目的執行緒並成為該組執行緒的主線程。
當執行完並行區域後,只有主線程繼續執行。
指令:parallel
#include
#include
void
main()
}
提供了for指令、sections指令、single指令三種指令,每一種指令又提供了若干子句。
for指令:用於對for迴圈進行並行。
預設將for迴圈均分給執行緒,可以使用子句schedual來進行更改。
預設只對外層結構進行並行處理,可以借助子句collapse來進行修改。
sections指令:將**分為區域,每個**執行乙個區域。
single指令:區域內僅乙個執行緒執行
c/c++支援兩種合併指令parallel for和parallel sections,等價於上述指令。
parallel for**示例:
#include
#include
void
main()
//並行求和
#pragma omp parallel for num_threads(10) schedule(dynamic, 5)
for(i =
0; i <
100; i++
) c[i]
= a[i]
+ b[i]
;}
指令
效果master
僅由主線程進行執行
critical
設定乙個區域一次僅能有乙個執行緒執行,不同名字代表不同臨界區
barrier
同步執行緒組中的所有執行緒,先到達的執行緒進行等待
atomic
以原子方式訪問特定儲存方式
ordered
與for結合使用,指定該迴圈為序列執行
threadprivate
指定複製變數,每個執行緒有自己的副本,持久有效
子句效果
private
私有變數
shared
共享變數
default
firstprivate
private與列表變數的自動初始化結合
lastprivate
私有變數最後變數付給變數
此外還有copyin、copyprivate、reduction等子句。
(待補充)
OpenMP常用指令釋義
1 pragma omp for int j 0 pragma omp for for j 0 j 4 j 執行以上 後列印出以下結果 j 0,threadid 0 j 1,threadid 0 j 2,threadid 0 j 3,threadid 0 單獨使用for,後續迴圈在乙個執行緒中執行。...
OpenMP常用指令釋義
1 pragma omp for int j 0 pragma omp for for j 0 j 4 j 執行以上 後列印出以下結果 j 0,threadid 0 j 1,threadid 0 j 2,threadid 0 j 3,threadid 0 單獨使用for,後續迴圈在乙個執行緒中執行。...
OpenMP中的常用函式
1 設定執行緒數目 其定義如下 void omp set num threads int num threads 通過該函式來指定其後用於平行計算的執行緒數目,其中引數num threads就是指定的執行緒數目。2 獲取執行緒數目 其定義如下 int omp get num threads 通過該函...