我尝试编写了一个小的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;
}