作为一个侧面项目,我想为我的NVidia显卡实现一个隐马尔可夫模型,这样我就可以让它快速执行并使用许多内核。
我在看前向后向算法,并想知道我能在这里做什么并行?例如,如果你看一下算法的前向部分,可以将矩阵乘法划分为并行完成,但依赖于前一步骤的算法的迭代部分能否以任何方式并行化?是否有某种数学技巧可以在这里应用?
谢谢,
MJ
http://en.wikipedia.org/wiki/Forward%E2%80%93backward_algorithm#Example
答案 0 :(得分:2)
您的评估是正确的 - 您可以并行化矩阵乘法(即跨州),但不能并行化递归步骤。我刚刚发了一篇关于我与HMM和GPU合作的博客文章。在这里查看:
http://sgmustadio.wordpress.com/2012/02/27/hidden-markov-models-in-cuda-gpu/
答案 1 :(得分:1)
如果您仍在使用此项目,可能需要查看HMMlib和parredHMMlib。
sgmustadio指出你不能并行化递归步骤是正确的,但似乎这些作者提出了一种聪明的方法来将Forward和Viterbi算法减少到一系列矩阵乘法和减少。