您好,我是并行编程的新手,在阅读相关内容时,我遇到了一个 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
.
.
.
}
最佳答案
首先,我想说这是一个提出问题的不好的地方,因为您显然没有自己对此事进行任何研究(特别是因为这个模板非常不言自明)。
不过,我会简要地向您解释一下:
#include <omp.h>
允许访问 openmp 库,以便您可以使用其所有功能。
main () {
请告诉我你理解这句话吗?在这里不返回 int 是非常糟糕的做法,但是,您确实应该有一个 int main
。
int var1, var2, var3;
定义 3 个整数。
在编写串行代码
的地方,您可以在这里读取所有在一个线程/处理器上执行的普通代码。
#pragma omp parallel private(var1, var2) shared(var3)
这一行也许是最重要的。它基本上表示下一组 { }
中的代码可以并行执行。 private(var1, var2)
意味着每个线程都将获得自己的这些变量的副本(即线程 1 的 var1
与线程 2 的 var1
不同) code>) 和 shared(var3)
意味着 var3
在所有线程上都是相同的(如果它在线程 1 上发生变化,它也会在线程 2 上发生变化)
代码并行执行,直到达到 }
,此时如果您希望在一个线程上运行,代码将返回正常操作模式。
您确实应该阅读一些基本的 OMP 教程,您可以通过简单的 google 在互联网上的任何地方找到这些教程。
我希望这能让你开始。
关于c - 请解释以下并行代码模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32946762/