小编use*_*500的帖子

OpenMP 自定义缩减变量

我被指派在不使用归约子句的情况下实现归约变量的想法。我设置了这个基本代码来测试它。

int i = 0;
int n = 100000000;
double sum = 0.0;
double val = 0.0;
for (int i = 0; i < n; ++i)
{
    val += 1;
}
sum += val;
Run Code Online (Sandbox Code Playgroud)

所以最后sum == n。

每个线程应该将val设置为私有变量,然后对sum的加法应该是线程收敛的关键部分,例如

int i = 0;
int n = 100000000;
double sum = 0.0;
double val = 0.0;
#pragma omp parallel for private(i, val) shared(n) num_threads(nthreads)
for (int i = 0; i < n; ++i)
{
    val += 1;
}
#pragma omp …
Run Code Online (Sandbox Code Playgroud)

c openmp

3
推荐指数
1
解决办法
3822
查看次数

标签 统计

c ×1

openmp ×1