Visual Studio中的OpenMP任务

OpenMP tasks in Visual Studio

本文关键字:任务 OpenMP 中的 Studio Visual      更新时间:2023-10-16

我正在尝试学习基于OMP库任务的编程,作为一个例子,我复制并粘贴了下面从一本书中获取的代码,它输出错误

 'task' : expected an OpenMP directive name  

 'taskwait' : expected an OpenMP directive name

我可以运行omp并行循环,但不能运行任务。你知道在visual studio中omp任务是否需要进一步的调整?

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

不幸的是,即使Visual Studio 2019仍然只支持OpenMP 2.0,而Tasks是OpenMP 3.0的补充,目前的标准是5.0。