CUDA初学者 求大神帮忙给出一个算法!!!!

求一个类似分果子问题的算法。比如有10个人,给出20个果子。求有多少种分法。

用串行的算法可以是 20、0、0、0、0、0、0、0、0、0
然后第一个减一变成 19、1、0、0、0、0、0、0、0、0
然后再减 19、0、1、0、0、0、0、0、0、0
…… ……
0、0、0、0、0、0、0、0、0、20

求一个思路~~~~~~~~~~~~~~~~~~:dizzy::dizzy:

这种问题不需要CUDA,直接用初等组合数学即可计算出。

可是实际要运算的数值非常大,用C语言写的程序跑了3天都没有跑完。所以想用CUDA做一下看看。

不知道你在搞啥?就你所述说的问题而言,根本不用写程序。用计算器,轻点几下鼠标,几秒钟就可以搞定了。3天时间干啥了?

LZ的意思是不是想把所有的可能都列出来啊。而不是“gpu”说的所有可能的个数。

对对对。就是列出所有个可能分布情况。

就是列举出一共有多少种情况。。。我最初是用C语言写的那种思路。因为数值很大,所以程序运行时间很长。。

枚举出来有意义吗?不断的反复递归,该问题属于CPU适合的,CUDA帮不了什么忙,只能更慢。

哦,想到一个好办法。就是枚举pow(21,9)=794280046581个情况,然后求和检测即可。用CUDA几分钟的事情。

我赞同您的观点。昨晚我尝试了下用CPU组合和排列了。并邀请好友一起独立验证此过程,

我们均在CPU上,分别用0.17s和0.1s完成了全部排列。(普通的apu和普通的酷睿2)

我们均在CPU上,用<1ms, 完成了全部组合。

所以建议还是CPU吧?

咱不能为了CUDA而CUDA啊。

这个方法挺好的。:smiley:
感谢大神贡献思路

嗯。确实这个问题CPU能够解决,但是初始赋值比较大,运算时间还是有点长。只是看看用CUDA能否把这个问题简化一下。

亲。真心不长的。才100ms,还是简单写的无任何优化的CPU程序。

有的时候,真心建议不要为了CUDA而CUDA的。

CPU解决此问题,典型的递归,就几行代码。但正因为如此,可能前后依赖严重。不那么适合GPU。

您觉得呢?

就这个问题而言CUDA枚举肯定比CPU递归慢。枚举的数据有效率仅为数万分之一,太小。

嗯。说的有理。
正因为我是初学者所以才问的。。:lol
对CUDA不是很深入。正在学习中。。感谢指点:loveliness:

嗯。了解了。初学所以很多不懂的。。:lol多谢指点啦