2015-10-05 31 views
-5

嗨我是新來的並行編程,並在閱讀它時,我遇到了C代碼模板,你能解釋我這是什麼意思,逐行?請解釋下面的並行代碼模板

#include <omp.h> 

main() { 

int var1, var2, var3; 

Serial code 
     . 
     . 
     . 

Beginning of parallel section. Fork a team of threads. 
Specify variable scoping 

#pragma omp parallel private(var1, var2) shared(var3) 
    { 

    Parallel section executed by all threads 
     . 
     . 
     . 

    All threads join master thread and disband 

    } 

Resume serial code 
     . 
     . 
     . 

} 
+2

所以你不明白*單行*? (另外,這是無效的,可編譯的C代碼。) – usr2564301

回答

0

首先,我想說,這是一個不好的地方要問的問題,因爲你明顯不給事自己(尤其是這個模板是非常自我解釋)做過研究。

我不過簡單介紹一下它給你:

#include <omp.h> 

允許訪問OpenMP庫,以便您可以使用它的全部功能。

main() { 

請告訴我你明白這一行嗎?然而,在這裏不返回一個int是非常糟糕的做法,但你應該真的有一個int main

int var1, var2, var3; 

定義3個整數。 其中編寫了serial code,你可以在這裏讀取所有在一個線程/處理器上執行的普通代碼。

#pragma omp parallel private(var1, var2) shared(var3) 

這條線也許是最重要的。它基本上說可以並行執行下一組{ }中的代碼。 (即線程1的var1與線程2的var1不相同)和shared(var3)意味着var3在所有線程上都是相同的(並且如果它在線程1上更改,它也會發生變化在線程2上)

代碼並行執行,直到達到},此時代碼返回到正常操作模式,如果您喜歡在一個線程上。

你真的應該閱讀一些基本的OMP教程,你可以通過一個非常簡單的谷歌在互聯網上的任何地方找到它。

我希望這可以讓你開始。