openmp常用總結

2021-10-19 13:55:08 字數 1503 閱讀 3091

執行時函式

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 通過該函...