我必须使用CUDA开发数据挖掘算法。我搜索了很多,发现除FpGrowth之外,大多数算法已经实现。
你认为它是一个好主意吗?你能给我一些关于如何实施它的想法吗?使用CUDA的Fp增长算法
回答
我不知道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中可以轻松实现。
我找到了一个网页,描述了如何绘制FP树以及如何识别该树的频繁模式。你可以访问该网站并阅读信息。
我会回答你的第一个问题: “它是一个好主意吗?”。好吧,我认为如果你需要它是个好主意。但是,如果你只是想做,因为它没有完成,也许它不是一个好主意。
对于第二个问题,请确保您了解FPGrowth。您可以阅读描述FPGrowth的原始论文。您也可以查看“数据挖掘简介”一书。它有一个易于理解的FPGrowth描述。在您理解FPGrowth之后,您可以看到如何使用CUDA实现它......这是我的建议。
- 1. FP增长算法
- 2. 在php codeignitor中的Fp增长算法
- 3. WEKA FP-增长java代码
- 4. 无法计算函数的增长率
- 5. 转换阶FP增长RDD输出到数据帧
- 6. 橙色工具fp-growth算法
- 7. 用循环的增长率计算
- 8. 无法理解最长增加子序列的算法
- 9. 增强算法
- 10. 使用groupby或aggregate来合并RDD或DataFrame中的每个事务中的项目以进行FP增长
- 11. 如何在Pyspark中使用Spark FP增长获得关联规则的升降价值?
- 12. 使用CUDA进行矩阵乘法,执行时间很长
- 13. 什么是FP-Growth算法的时空复杂性?
- 14. 如何使用sql计算增长百分比
- 15. Cuda中的凸多边形算法?
- 16. 无法使用Emgucv CUDA
- 17. 计算增长率和两个变量
- 18. 根据季节性计算增长
- 19. 估算算法从运行时间和变化率的增长顺序
- 20. 使用复合增长的Java程序
- 21. CUDA占用率计算器,
- 22. 使用方法计算三角形周长和圆周长
- 23. CUDA最大抑制算法不工作
- 24. 多GPU Cuda计算
- 25. 使用增长(伪)随机数发生器的长双
- 26. CUDA推力阵列长度
- 27. CUDA上的布尔运算
- 28. 增长表不能使用JSONModel
- 29. RabbitMQ内存使用增长过高
- 30. 使用fold *在Haskell中增长列表
“在CUDA中没有指针,没有字符串,没有打印”?这是最好的误导。 CUDA肯定有指针。您也可以轻松使用char *字符串。你甚至可以在最近的版本中使用printf来打印,但如果你想要很好的性能,你可能不应该使用printf。 – Matt 2011-04-07 10:14:58