MATLAB:在while循环中使用parfor(并行for循环)是否效率低下。

时间:2015-09-15 21:01:58

标签: matlab parfor mcmc

我在做MCMC(Monte Carlo Markov Chain)时遇到了麻烦。所以对于MCMC来说,我会运行10000次迭代,然后在每次迭代中,我将绘制一些参数。但是在每次迭代中,我都有一些独立的个人数据,所以我可以做parfor。然而,问题是,当MCMC继续时,似乎完成一次迭代的时间会迅速增长。很快,它非常耗时。 我的问题是:是否有任何有效的方法来结合parfor和while循环?

我有以下伪代码:

r=1;
while r<10000
parfor i=1:I
  make draws from proposal distribution 
  calculate acceptance rate  
  accept or reject current draw
end

r=r+1;
end

1 个答案:

答案 0 :(得分:0)

如果每个循环持续时间很短,则启动大量单独的parfor循环可能效率低下。不幸的是,正如您可能知道的那样,您不能break循环parfor。一种替代方案可能是使用parfeval。这个想法是进行许多parfeval次调用(但不是太多),然后当你有足够的结果时你可以终止。

This (fairly long) blog article显示了在您可能希望提前终止计算的情况下使用parfeval的示例。