почему Visual Studio 2019 не поддерживает ключевое слово «max» для сокращения Openmp? - PullRequest
0 голосов
/ 18 октября 2019

, когда я использую openmp следующим образом:

#pragma omp parallel for reduction(max: dumax)

В среде IDE возникнет ошибка "max" в Openmp: "сокращение" недопустимо

#pragma omp parallel for reduction(max: dumax)
for (int i = 1; i < n + 1; i++)
{
    for (int j = 1; j < n + 1; j++)
    {
    u[i][j] = 0.25 * u[i - 1][j] + 0.25 * u[i][j - 1] + 0.25 * u[i + 1][j] + 0.25 * u[i][j + 1] + h * h * f[i][j];
    dumax = max(dumax, abs(u[i][j] - uold[i][j]));
    }
}

1 Ответ

2 голосов
/ 18 октября 2019

Компилятор MSVC застрял с OpenMP версии 2.0, и, к сожалению для вас, reduction(max:) был представлен только с версией 3.1 стандарта OpenMP C / C ++ (это было в сентябре 2011 года)

Так что вы можете либоизменение компилятора или выполнение операции редукции по-старому с некоторыми частными переменными и окончательное редукция с critical накоплениями

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