#pragma omp parallel num_threads无效

时间:2014-06-25 19:39:21

标签: c++ c parallel-processing openmp

    #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

3 个答案:

答案 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

您应该使用前一个