C语言metropolis方法,如何使用Metropolis-Hastings算法将C或C++代码合并到我的R代码中以加速MCMC程序...

Spacedman..

18

首先确保你的慢R版本是正确的.调试R代码可能比调试C代码更容易.完成了吗?大.您现在可以使用正确的代码进行比较.

接下来,找出花时间的东西.使用Rprof运行代码,看看花了多少时间.我为一些我继承过的代码做了这个,发现它花了90%的时间在t()函数中.这是因为程序员有一个矩阵A,并且在无数个地方做了t(A).我在开始时做了一个tA = t(A),并用tA替换每个t(A).大力加速,不费吹灰之力.首先描述您的代码.

现在,你已经找到了瓶颈.是你可以加速R的代码吗?它是一个可以矢量化的循环吗?去做.根据您的黄金标准正确代码检查您的结果.总是.是的,我知道很难比较依赖随机数的算法,因此设置种子相同并再试一次.

还不够快?好的,现在也许你需要在C或C++或Fortran中重写部分(一般是最低级别的部分,以及那些花费大部分时间进行分析的部分),或者如果你真的想用GPU代码那么.

再次,真的检查代码给出与正确的R代码相同的答案.真的检查一下.如果在此阶段您在常规方法中找到任何错误,请将其修复为您认为正确的R代码和最新版本,并重新运行所有测试.建立大量的自动测试.经常运行它们.

阅读有关代码重构的内容.它被称为重构,因为如果你告诉你的老板你正在重写你的代码,他或她会说'你为什么不第一次正确写它?'.如果你说你正在重构你的代码,他们会说"嗯......很好".这实际上是发生的.

正如其他人所说,Rcpp是胜利的.

是的:http://www.cafepress.co.uk/cp/customize/product2.aspx?from = CustomDesigner&number = 618625436 (11认同)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值