OpenMP tasks in Visual Studio

匿名 (未验证) 提交于 2019-12-03 08:36:05

问题:

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", n, fib(n));   } } 

回答1:

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



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!