请解释以下并行代码模板

时间:2015-10-05 10:48:59

标签: c multithreading parallel-processing

嗨,我是并行编程的新手,在阅读它时,我在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 
      .
      .
      .

}

1 个答案:

答案 0 :(得分:0)

首先,我想说这是一个提问的好地方,因为你自己显然没有对此事做过任何研究(特别是因为这个模板非常自我解释)。

我会简要地为您解释一下:

#include <omp.h>

允许访问openmp库,以便您可以使用它的所有功能。

main () {

请告诉我你了解这一行?不在这里返回int是非常糟糕的做法,但是你应该有一个int main

int var1, var2, var3;

定义3个整数。 在编写serial code的地方,你可以在这里读取所有在一个线程/处理器上执行的普通代码。

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

这条线可能是最重要的。它基本上说下一组{ }中的代码可以并行执行。 private(var1, var2)表示每个线程都会获得这些变量的副本(即线程1 var1与线程2 var1)和{{不同1}}表示shared(var3)在所有线程上都是相同的(如果它在线程1上发生变化,它也会在线程2上发生变化)

代码并行执行,直到达到var3为止,如果您喜欢在一个线程上,代码将返回正常的操作模式。

你应该阅读一些基本的OMP教程,你可以在互联网上的任何地方找到一个非常简单的谷歌。

我希望这会让你开始。