并行因式计算

问题描述 投票:4回答:2

我想编写一个使用并行计算来计算整数的阶乘的程序(Open MP库)。>>

很显然,下面的程序处于竞争状态。

// Each loop iteration writes a value that a different iteration reads.
#pragma omp parallel for
for (i=2; i < 10; i++)
{
   factorial[i] = i * factorial[i-1];
}

我读到某处pow和阶乘计算无法并行完成。那么,是这样吗,还是可以修改以上程序(在C中,使用OPenMP库)以并行计算阶乘?]

我想编写一个使用并行计算(Open MP库)来计算整数的阶乘的程序。显然,下面的程序受比赛条件的影响。 //每次循环迭代...

c parallel-processing openmp factorial
2个回答
4
投票

您可以通过在数组上运行两次来并行执行此操作。第一次计算分产品并保存每个线程的总分产品。在第二遍中,通过上一个线程的总乘积来校正每个元素。这与并行执行累加总和(也称为前缀总和)相似,只是它是并行累加的乘积。


3
投票

如果它是一个大数,则在拆分乘法时可以进行并行阶乘

© www.soinside.com 2019 - 2024. All rights reserved.