[问题] 让replication更快速

楼主: also5566 (愚人节快乐)   2016-06-21 23:12:15
[问题类型]:
效能咨询(我想让R 跑更快)
[软件熟悉度]:
入门(写过其他程式,只是对语法不熟悉)
[问题叙述]:
我写了一个模拟研究的function
里面包含了随机变量的产生以及后续的一些运算
需要有500次重复
产出结果是一个list
里面的元素包含一些参数估计、共变异数矩阵等等
因为我操弄变项总共有60种组合
每个都要重复500次
目前是用for loop来跑
1个组合大约需要20-30分钟
所有组合跑完就要20-30小时
function若有一些瑕疵就需要重跑20-30小时
因此希望可以让这个过程更快
[程式范例]:
setwd('dir1')
for (i in 1:500){
trial=formatC(i, width = 3, flag = '0')
res<-compute()
filename<-paste0(trial,".Rdata")
save(res,file=filename)
}
其中compute() 即为我的function
[环境叙述]:
[关键字]:
作者: celestialgod (天)   2016-06-21 23:25:00
要看你算的内容,可不可以向量化运算最简单的方法就是用snow平行 (在板上搜寻就有)
楼主: also5566 (愚人节快乐)   2016-06-21 23:42:00
我的东西就是重复随机抽样然后运算而已也是因为里面有抽样的步骤 不知道snow会不会造成相依 ?
作者: celestialgod (天)   2016-06-21 23:48:00
snow里面会在每一个subprocess用不同的seed相依倒是不用担心运算是重点 要看怎么算才能决定达到最大加速的方法
楼主: also5566 (愚人节快乐)   2016-06-21 23:53:00
谢谢c大,我会去研究一下snow要怎么设置,我的运算中有两部我自己觉得比较慢的,一个是要依照某些规则生成一个design matrix,另一个是要用最大概似法求最佳解。整体过程有满多步骤的。

Links booklink

Contact Us: admin [ a t ] ucptt.com