我是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。
答案 0 :(得分:0)
谢谢Alex,
我找到了一个解决方案,我需要做的就是在项目属性中启用OMP:
项目属性&gt;&gt; C / C ++&gt;&gt;语言&gt;&gt;打开MP支持=是