gpt4 book ai didi

c - 如何使用缩减并行化这个 for 循环?

转载 作者:太空狗 更新时间:2023-10-29 15:05:26 25 4
gpt4 key购买 nike

我试图通过使用 Openmp 使这个 for 循环并行化,我认识到这个循环中有减少,所以我添加了“#pragma omp parallel for reduction(+,ftab)”,但它没有工作,它给出了我这个错误:错误:找不到“ftab”的用户定义缩减。

   #pragma omp parallel for reduction(+:ftab)
for (i = 1; i <= 65536; i++) ftab[i] += ftab[i-1];

最佳答案

你要做的操作是prefix sum .它可以并行完成。一个简单的方法是使用 thrust::inclusive_scan使用 OpenMP 或 TBB 后端。

thrust::inclusive_scan(thrust::omp::par, ftab, ftab + 65536, fab);

thrust::inclusive_scan(thrust::tbb::par, ftab, ftab + 65536, fab);

您也可以按照 the Wikipedia page 中的引用自行实现.

关于c - 如何使用缩减并行化这个 for 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37854257/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com