задача: требуется имя директивы OpenMP - PullRequest
0 голосов
/ 30 мая 2018

Вот мой код:

#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" .
Если я прокомментирую всю "прагму"msgstr "все работает нормально, поэтому проблема с OpenMPНекоторые другие программы с "#pragma omp parallel" работают нормально, это просто проблема с директивой "task".
В чем может быть проблема?

1 Ответ

0 голосов
/ 30 мая 2018

Visual C ++ поддерживает стандарт OpenMP 2.0.

OpenMP представил задач с OpenMP 3.0

, т. Е. Он не поддерживается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...