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來指明自己的意圖,由此編譯器可以自動將程式進行並行化,並在必要之處加入同步互斥以及通訊。當選擇忽略這...