关于使用GPU进行并行化的新手建议

时间:2019-11-06 21:03:41

标签: r parallel-processing gpu

我正在尝试学习如何使用GPU进行并行化。我有一个特定的问题:我想并行化的粒子过滤器。问题是我一直在阅读,我真的不明白a)是否有可能,b)如有可能,从哪里开始编程。这是R中的最小代码,有助于理解我的问题:

library(NPflow)

N   = 1000
mup = c(0.5,0,0.3)
S   = matrix(c(1,0,0,0.5,1,0,-0.7,0.3,1),3,3,byrow=T)
X   = mup + S%*%rnorm(3)
C   = S%*%t(S)
mupr = matrix(rnorm(3*N),3)
Cr  = lapply(rep(4,N),wishrnd,Sigma=C)
llk = mmvnpdfC(X, mean=mupr, varcovM=Cr, Log = TRUE)

代码的最后一行针对给定的1000个均值和1000个可能的协方差矩阵为向量X [3x1]计算了一个多元正态pdf。使用NPflow包,我可以使用功能mmvnpdfC,其功能与Matlab中的mvnpdf相似。确实,这与for循环类似:

llkfor = NULL

for (n in 1:N){

    llkfor[n] = mvnpdf(X,mupr[,n],Cr[n])

}

当然,这个简单的代码运行得非常快,但是我的模型会大很多,问题是我是否可以使用GPU并行化先前的“ for-loop”。在我的申请中,我将要求N至少为50,000。当然,我可以与CPU并行化,但是我只能访问4个内核,因此我打算投资购买一块性能好的NVIDIA卡。

任何建议/推荐/阅读材料都将非常有用。

提前谢谢大家!

0 个答案:

没有答案