Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.4k views
in Technique[技术] by (71.8m points)

c++ - OpenMP tasks in Visual Studio

I am trying to learn OMP library task based programming and as an example I copied and pasted the code below taken from a book and it outputs errors

 'task' : expected an OpenMP directive name  

and

 'taskwait' : expected an OpenMP directive name

I can run omp parallel for loops but not tasks. Do you know whether omp tasking needs any further adjustments in visual studio?

 #include "stdafx.h"
 #include <omp.h>

 int fib(int n)
 {
   int i, j;
   if (n<2)
    return n;
 else
 {
   #pragma omp task shared(i) firstprivate(n)
   i=fib(n-1);

   #pragma omp task shared(j) firstprivate(n)
   j=fib(n-2);

   #pragma omp taskwait
   return i+j;
 }
 }

 int main()
{
  int n = 10;

  omp_set_dynamic(0);
  omp_set_num_threads(4);

  #pragma omp parallel shared(n)
  {
     #pragma omp single
     printf ("fib(%d) = %d
", n, fib(n));
  }
}
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Unfortunately, even Visual Studio 2019 still only supports OpenMP 2.0, while Tasks were an OpenMP 3.0 addition and the current standard at the time of writing is 5.0.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...