我试图编写一个小的 C 程序来弄清楚 OpenMP 是如何工作的。这个例子应该计算 1 到 1000 的总和;但是,它在终端中打印出 0。我只能在注释掉这些#pragma东西后才能得到想要的结果。有人能告诉我原因吗?
本指南说#pragma omp for在当前团队的线程之间划分 for 循环的工作。它不创建线程,它只在当前执行团队的线程之间分配工作。所以我们应该在整个执行过程中只有一个主线程,对吗?
#include <stdio.h>
int main() {
int n, sum = 0;
#pragma omp for
for (n = 0; n <1000; n++) {
sum += n;
}
printf("%d\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)