我试图通过使用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中所引用 .
1 回答
您要执行的操作是prefix sum . 它可以并行完成 . 一种简单的方法是将thrust::inclusive_scan与OpenMP或TBB后端一起使用 .
要么
您也可以自己实现它,如the Wikipedia page中所引用 .