OpenMP 入門記錄1

2021-08-30 09:04:30 字數 1343 閱讀 5276

omp_get_thread_num();  獲得當前執行緒id,主線程為0

omp_get_num_threads();  獲得總的執行緒數目

分配n個執行緒,每個執行緒都去執行整個作用域的**段

#pragma omp parallel

for (int i = 0; i < 2; ++i)

輸出為:

3,hello0

3,hello1

2,hello0

2,hello1

1,hello0

1,hello1

0,hello0

0,hello1

//可以看到分配了四個執行緒執行,對每個執行緒都去執行整個for迴圈,強調這裡,要和parallel for區分開

#pragme omp parallel for 是把for迴圈拆開來分配給n個執行緒執行

reduction歸約,實際上的變數對於執行緒來說是私有的,只不過最後的時候進行歸約而已

#include #define n 1000

#define chunksize 100

#include int main ()

printf("%d\n", s);

int sum = 0;

#pragma omp parallel for reduction(+:sum)

for (int i = 0; i < 10; i++)

printf("%d\n",sum);

}

編譯:g++ -o openmp_c openmp_c.cpp -fopenmp

輸出的結果為:

2,14

2,21

1,31,25

3,80,14

0,40

0,42

3,39

1,30

42 //為什麼這裡是42,因為這裡已經離開編譯製到語句的作用域,剩下主線執行緒,主線程id為0

id1,0+3=3

id1,3+4=7

id1,7+5=12

id2,0+6=6

id2,6+7=13

id3,0+8=8

id3,8+9=17

id0,0+0=0

id0,0+1=1

id0,1+2=3

45//45 = 12+13+17+3

//下面這裡採用的是reduction歸約,可以看到,sum實際上對於執行緒來說是私有的,只不過最後的時候進行歸約而已

django入門記錄 1

步驟 1 安裝python和django 2 建立專案python admin startproject mysite 此處可以替換 3 至少需要乙個資料表,所以要建立乙個表 python manage.py migrate 4 然後就可以執行看看了,python manage.py runserv...

django入門記錄 1

步驟 1 安裝python和django 2 建立專案python admin startproject mysite 此處可以替換 3 至少需要乙個資料表,所以要建立乙個表 python manage.py migrate 4 然後就可以執行看看了,python manage.py runserv...

OpenMP入門教程(一)

open multi processing的縮寫,是乙個應用程式介面 api 可用於顯式指導多執行緒 共享記憶體的並行性。在專案程式已經完成好的情況下不需要大幅度的修改源 只需要加上專用的pragma來指明自己的意圖,由此編譯器可以自動將程式進行並行化,並在必要之處加入同步互斥以及通訊。當選擇忽略這...