C ++ omp代码只能在一个线程上工作

时间:2014-11-12 10:15:27

标签: c++ multithreading parallel-processing openmp

我是OpenMP编程的新手,我有一个问题。我找到了一个使用OpenMP的简单代码示例。代码构建是成功的,但代码只在一个线程上运行。有一个代码:

#include <iostream>
#include <omp.h>

int main (int argc, const char * argv[])
{

    int nProcessors=omp_get_max_threads();

    std::cout<<nProcessors<<std::endl;


    omp_set_num_threads(nProcessors);
    std::cout<<omp_get_num_threads()<<std::endl;


#pragma omp parallel for 
    for(int i=0;i<5;i++){
        int tid=omp_get_thread_num();
        std::cout<<tid<<"\t tid"<<std::endl;
        int nThreads=omp_get_num_threads();
        std::cout<<nThreads<<"\t nThreads"<<std::endl;
    }


    exit(0);

}

它返回结果:

4
1
0        tid
1        nThreads
0        tid
1        nThreads
0        tid
1        nThreads
0        tid
1        nThreads
0        tid
1        nThreads
Press any key to continue . . .

任何人都能帮助我做错的事吗?顺便说一句,我使用的是英特尔i5 CPU。

1 个答案:

答案 0 :(得分:0)

谢谢Alex,

我找到了一个解决方案,我需要做的就是在项目属性中启用OMP:

项目属性&gt;&gt; C / C ++&gt;&gt;语言&gt;&gt;打开MP支持=是