#include<omp.h>
#include<stdio.h>
#include<stdlib.h>
void main(int argc, int *argv[]){
#pragma omp parallel num_threads(3)
{
int tid = omp_get_thread_num();
printf("Hello world from thread = %d \n",tid);
if(tid == 0){
int nthreads = omp_get_num_threads();
printf("Number of threads = %d\n",nthreads);
}
}
}
我正在学习OpenMP,我不明白为什么当我指定了线程数3时它只执行一个线程? 程序ouptut:
Hello world from thread = 0
Number of threads = 1
答案 0 :(得分:2)
在VisualStudio中,只需打开OMP即可。您可以参考https://msdn.microsoft.com/de-de/library/fw509c3b(v=vs.120).aspx
答案 1 :(得分:0)
您需要使用-fopenmp
编译程序。
g++ a.cc -fopenmp
答案 2 :(得分:0)
omp_get_num_threads()返回正在使用的线程总数
omp_get_thread_num()返回当前线程ID
您应该使用前一个