1

作为一个附带项目,我想为我的 NVidia 显卡实现一个隐马尔可夫模型,这样我就可以让它快速执行并使用多个内核。

我正在查看 Forward-Backward 算法,想知道我可以在这里并行处理什么?例如,如果你看一下算法的前向部分,矩阵乘法可以划分为并行完成,但是依赖于上一步的算法的迭代部分可以以任何方式并行化吗?是否有某种数学技巧可以在这里应用?

谢谢,

http://en.wikipedia.org/wiki/Forward%E2%80%93backward_algorithm#Example

4

2 回答 2

2

您的评估是正确的 - 您可以并行化矩阵乘法(即跨状态),但不能并行化递归步骤。我刚刚发表了一篇关于我使用 HMM 和 GPU 工作的博文。在这里查看:

http://sgmustadio.wordpress.com/2012/02/27/hidden-markov-models-in-cuda-gpu/

于 2012-03-02T01:14:12.900 回答
1

如果您仍在从事此项目,您可能需要查看HMMlibparredHMMlib

sgmustadio 正确地指出您不能并行化递归步骤,但似乎这些作者想出了一个聪明的方法来将 Forward 和 Viterbi 算法简化为一系列矩阵乘法和减少。

于 2013-06-18T13:51:16.867 回答