C中使用openMP的线程数问题

时间:2013-10-15 16:17:51

标签: c openmp

代码:

#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的一些排列吗?

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 ++

)禁用