任务:需要OpenMP指令名称

时间:2018-05-30 12:48:50

标签: c++ openmp

这是我的代码:

#include <stdio.h>
#include <cstdlib>
#include <locale>
#include <omp.h>

using namespace std;

typedef pair<int, int> pii;
typedef long long ll;

ll fib(int n) {
    if (n <= 1)
        return 1;
    ll a, b;
#pragma omp task shared(a)
    a = fib(n - 1);
#pragma omp task shared(b)
    b = fib(n - 2);
#pragma omp taskwait
    return a + b;
}

int main(int argc, char* argv[]) {
    setlocale(LC_ALL, "");
    int n;
    scanf_s("%d", &n);
    printf("Result: %lld\n", fib(n));
    system("pause");
    return 0;
}

<小时/> Visual Studio返回C3001错误“任务:需要OpenMP指令名称” 如果我评论所有“pragma”它工作正常,那么OpenMP一定存在问题。其他一些带有“#pragma omp parallel”的程序工作正常,这只是“任务”指令的问题。
可能是什么问题?

1 个答案:

答案 0 :(得分:3)

Visual C ++ supports OpenMP 2.0标准。

使用OpenMP 3.0的OpenMP introduced任务

即。它不受支持。