[問題] 讓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