Я не знаю 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 нет указателей, строк, печати, файлов, и большинство того, что вы узнали об эффективном коде, неверно.
Более многообещающий подход заключается в более абстрактном подходе к основному алгоритму,Определите, что можно сделать параллельно, подумайте о хорошей структуре данных (возможно, с большими массивами), внедрите прототип.Возможно, будет проще полагаться на библиотеки CUDA, такие как Thrust http://code.google.com/p/thrust/, чтобы заработала первая версия.
Что касается FpGrowth, можно ли что-нибудь сделать параллельно?Построение динамических деревьев и обход деревьев, как правило, не очень легко реализуются в CUDA.