当我像这样使用 openmp 时:
#pragma omp parallel for reduction(max: dumax)
IDE 将在 Openmp 中引发错误“max”“reduction”无效
#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]));
}
}
MSVC 编译器被 OpenMP 版本 2.0 困住了,不幸的是,reduction(max:)
仅在 OpenMP C/C++ 标准 3.1 版中引入(2011 年 9 月)
因此,您可以更改编译器,或者使用一些私有变量以旧方式进行归约操作,并使用以下命令进行最终归约critical
积累
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)