eli*_*zik 5 c arrays parallel-processing openmp reduction
我试图通过使用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];
Run Code Online (Sandbox Code Playgroud)
您想要执行的操作是前缀 sum。它可以并行完成。一种简单的方法是将Throw::inclusive_scan与 OpenMP 或 TBB 后端结合使用。
thrust::inclusive_scan(thrust::omp::par, ftab, ftab + 65536, fab);
Run Code Online (Sandbox Code Playgroud)
或者
thrust::inclusive_scan(thrust::tbb::par, ftab, ftab + 65536, fab);
Run Code Online (Sandbox Code Playgroud)
您也可以按照Wikipedia 页面中的引用自行实现它。