2011-03-23 66 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實現它......這是我的建議。