求一个类似分果子问题的算法。比如有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:
求一个类似分果子问题的算法。比如有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:
这种问题不需要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啊。
这个方法挺好的。
感谢大神贡献思路
嗯。确实这个问题CPU能够解决,但是初始赋值比较大,运算时间还是有点长。只是看看用CUDA能否把这个问题简化一下。
亲。真心不长的。才100ms,还是简单写的无任何优化的CPU程序。
有的时候,真心建议不要为了CUDA而CUDA的。
CPU解决此问题,典型的递归,就几行代码。但正因为如此,可能前后依赖严重。不那么适合GPU。
您觉得呢?
就这个问题而言CUDA枚举肯定比CPU递归慢。枚举的数据有效率仅为数万分之一,太小。
嗯。说的有理。
正因为我是初学者所以才问的。。:lol
对CUDA不是很深入。正在学习中。。感谢指点:loveliness:
嗯。了解了。初学所以很多不懂的。。:lol多谢指点啦