我必須使用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. 代碼增長的算法順序
- 6. 算法中的增長順序
- 7. 在Eclipse中運行apache mahout FP增長時的java.lang.NullPointerException
- 8. Cuda中的算法
- 9. 用CUDA增強
- 10. 轉換階FP增長RDD輸出到數據幀
- 11. 改進最長遞增順序算法
- 12. 橙色工具fp-growth算法
- 13. cuda算法結構
- 14. 用循環的增長率計算
- 15. Dijkstra在CUDA中的算法
- 16. 計算年增長率
- 17. 無法理解最長增加子序列的算法
- 18. CUDA流壓縮算法
- 19. NSFetchedResultsController(和UITableView)委託方法調用正在增長和增長
- 20. 使用groupby或aggregate來合併RDD或DataFrame中的每個事務中的項目以進行FP增長
- 21. 增強算法
- 22. 如何估算函數的增長?
- 23. 函數重新分配在cuda中增長的內存
- 24. CUDA atomicAdd()長長整型
- 25. 如何在Pyspark中使用Spark FP增長獲得關聯規則的升降價值?
- 26. Cuda AtomicAdd不增量
- 27. 使用CUDA進行矩陣乘法,執行時間很長
- 28. CUDA中的性能優化 - 我應該使用哪些算法?
- 29. 使用CUDA/OpenCL爲指定的ALU分配指令/算法?
- 30. Python中的排列增長算法和打印字符串
「在CUDA中沒有指針,沒有字符串,沒有打印」?這是最好的誤導。 CUDA肯定有指針。您也可以輕鬆使用char *字符串。你甚至可以在最近的版本中使用printf來打印,但如果你想要很好的性能,你可能不應該使用printf。 – Matt 2011-04-07 10:14:58