并行计算二项式系数

时间:2012-03-02 12:44:59

标签: algorithm cuda parallel-processing

任何人都知道如何并行实现二项式系数计算? 任何多核或CUDA资源都会有所帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

我会先做以下几点。

  • 创建一个大小为(n + 1)的数组,并用1,1,2,3 ...... n填充。
  • 使用产品操作对此阵列执行包容性扫描。在 这一点你将有数组[n] = n!。即array [0] = 0!,array 1 = 1! array [100] = 100!等等。
  • 现在你有从0开始的每个阶乘!到n !,你可以很容易地执行(n!/ p!*(n - p)!)。

第一个和最后一个操作可能需要自定义内核。第二个操作可以使用推力和inclusive_scan操作来完成。

修改

至于缺点,如上面评论中所提到的,即使在合理大的n大小的64位整数中也会出现严重问题。但这是您需要使用的基本算法。