通过 OpenMP 提高速度并减少速度

问题描述 投票:0回答:1

我会使用 OpenMP 提高这些代码的速度。

for (i = 1; i < length; i++)
{
   for (j = 1; j < i; j++)
     sum_c += c[j];
   c[i] = sum_c + W[i];
   sum_c = 0;
}

我尝试使用这些解决方案

for (i = 1; i < length; i++)
{
   #pragma omp parallel for num_threads(NTHREADS) reduction(+:sum_c)
   for (j = 1; j < i; j++)
     sum_c += c[j];
   c[i] = sum_c + W[i];
   sum_c = 0;
}

但我只增加

的加速
length=100000

还有更好的解决方案吗?代码可以重写。

c openmp pragma
1个回答
0
投票

您使用内循环重复工作很多。通过以下单循环可以获得相同的结果。

sum_c = 0;
for (i = 1; i < length; i++)
{
   c[i] = sum_c + W[i];
   sum_c += c[i];
}
© www.soinside.com 2019 - 2024. All rights reserved.