2011-03-23 67 views
1

我必须使用CUDA开发数据挖掘算法。我搜索了很多,发现除FpGrowth之外,大多数算法已经实现。
你认为它是一个好主意吗?你能给我一些关于如何实施它的想法吗?使用CUDA的Fp增长算法

回答

-2

我不知道FpGrowth,但我想你已经读过论文(http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.162.1209&rep=rep1&type=pdf等)。我想你是CUDA的新手,这使得实现这些复杂而困难的事情成为可能。

使用CUDA获得良好性能的关键是大规模的统一并行和同步。 CUDA Zone http://www.nvidia.com/object/cuda_apps_flash_new.html有很多很好的例子,它们的工作原理和方法如何。学习CUDA的好的起点是编程指南http://developer.download.nvidia.com/compute/cuda/3_2_prod/toolkit/docs/CUDA_C_Programming_Guide.pdf

一个常见的问题是“我有这个C代码,我如何将它移植到CUDA”。答案是不!在CUDA中,没有指针,没有字符串,没有打印,没有文件,大部分你已经学到的有效代码是错误的。

更有希望的方法是以更抽象的方式思考底层算法。确定可以并行进行的工作,考虑一个好的数据结构(可能涉及大型数组),实现一个原型。依靠像Thrust http://code.google.com/p/thrust/这样的CUDA库来获得第一个版本可能会更容易。

关于FpGrowth,有什么可以并行完成的吗?构建动态树和遍历树一般不被认为在CUDA中可以轻松实现。

+2

“在CUDA中没有指针,没有字符串,没有打印”?这是最好的误导。 CUDA肯定有指针。您也可以轻松使用char *字符串。你甚至可以在最近的版本中使用printf来打印,但如果你想要很好的性能,你可能不应该使用printf。 – Matt 2011-04-07 10:14:58

1

我会回答你的第一个问题: “它是一个好主意吗?”。好吧,我认为如果你需要它是个好主意。但是,如果你只是想做,因为它没有完成,也许它不是一个好主意。

对于第二个问题,请确保您了解FPGrowth。您可以阅读描述FPGrowth的原始论文。您也可以查看“数据挖掘简介”一书。它有一个易于理解的FPGrowth描述。在您理解FPGrowth之后,您可以看到如何使用CUDA实现它......这是我的建议。