我想找到的,可以从给定片组的11个字来形成所有可能的单词组合。 是否有可能做到这一点的CUDA? 如果是比怎么样。 谢谢!
Answer 1:
是的,你可以做排列在CUDA,其实,SR。 黄邵Voon拥有的实现与CUDA和OpenCL排列组合算法 。
只要你想他没有用String,但这不是你不得不作出这样的转变,他用(字母)到你(的话)算法结束后的符号的方法的一个主要问题。 想象他在字符的二维数组保存所有的排列,你勘查所有的矩阵,而不是打印的实际字符打印你想要的字(例如, if(matrix[i][j] == 'A') printf("Anaconda");
)。
基准
“我已经在基准CUDA对CPU的应用程序。在基准测试中使用的CPU和GPU,分别为460英特尔酷睿i7 870(8个核),2.93GHZ和NVIDIA GeForce该CPU的应用程序充分利用8芯找到排列该CPU的应用是使用阶乘分解拆分不同的CPU核之间,并在每个工作线程的第n个置换,STL next_permutation是用来寻找从第一第n置换每个连续排列11个元件的计算置换的结果在下面列出。 11种元素的排列中发现的总数为39916800。数组的大小需要存储执行结果,39916800×11 = 439084800,这是我的哪个1GB内存GPU可以存储排列的最大数量“。
关闭| 复制代码CPU:550ms
用纯阶乘分解(中等定时)CUDA版本1:550ms的OpenCL:581ms
第2版,每阶乘分解(中等定时)CUDA 1个next_permutation:317ms的OpenCL:373ms
681ms的OpenCL:每阶乘分解(中等定时)CUDA 9 next_permutation版本3 456ms
文章来源: Use CUDA to compute all possible combinations of words?