Visual Studio 中的 OpenMP 任务

13

我正在尝试学习基于任务的编程使用OMP库,作为示例,我复制并粘贴了下面书中的代码,但它输出错误。

 'task' : expected an OpenMP directive name  

 'taskwait' : expected an OpenMP directive name

我可以运行omp并行for循环但无法运行tasks。你知道在Visual Studio中是否需要进行任何进一步的omp tasking调整吗?

 #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个回答

18

很不幸,即使是Visual Studio 2019,仍然只支持OpenMP 2.0,而“Tasks”是OpenMP 3.0的一个新增功能,并且在撰写本文时当前标准为5.0。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接