代码:
#include <stdio.h>
#include <stdlib.h>
#include <omp.h>
int main(int argc, char** argv){
omp_set_dynamic(0);
omp_set_num_threads(4);
#pragma omp paralell
{
printf("%d\n", omp_get_thread_num());
}
}
输出:
0
输出不应该是0,1,2和3的一些排列吗?
答案 0 :(得分:5)
编写omp_set_dynamic(0);
表示运行时不会动态调整线程数。此函数的参数应该非零以利用num的动态调整。线程。您还在代码中拼错了parallel
。
答案 1 :(得分:1)
如果你复制&amp;粘贴你的源代码,我认为它因为“并行”拼错了。 我刚刚发现,如果没有设置-W标志,gcc 会默默地忽略错误拼写openmp pragma。使用-Wall编译
warning: ignoring #pragma omp paralell [-Wunknown-pragmas]
#pragma omp paralell
因此,让gcc打印警告是个好主意。
答案 2 :(得分:0)
并且不要忘记启用OpenMP对编译器的支持,默认情况下对主流编译器(如gcc / icc / vc ++
)禁用