作者celestialgod (天)
看板R_Language
標題Re: [問題] for 迴圈的平行運算
時間Thu Oct 22 09:10:25 2015
snow跟parallel要你自己弄cluster去跑
snowfall提供相對簡單的環境,可以嘗試一下
library(snowfall)
library(parallel)
inputs <- 1:256
wn = seq(0.25,1,0.05)
wn1 = seq(0.3,1,0.05)
processInput <- function(v) {
sum(v)
}
inputs <- as.matrix(expand.grid(wn,wn1))
numCores <- detectCores()
sfInit(TRUE, numCores)
# sfExport("variableName") # you may need this
# shLibrary("packageName") # you may need this
sfApply(inputs,1, processInput)
sfStop()
※ 引述《tony255034 (5245566)》之銘言:
: [問題類型]:
: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
: [軟體熟悉度]:
: 新手(沒寫過程式,R 是我的第一次)
: [問題敘述]:
: 目前有一個數學模型,每次要跑20秒,懲罰係數大約為16*16種組合
: 想利用版上所說的RMPI來優化程式,但我是用雙for迴圈來代入懲罰係數的
: 目前是想平行運算各組合,將各組合結果儲存到一個陣列,
: 再去找出最小的AIC
: [程式範例]:
: wn = seq(0.25,1,0.05)
: wn1 = seq(0.25,1,0.05)
: AIC0 = 10^6
: for(i in 1:length(wn)){
: for(j in 1:length(wn1)){
: list[AIC,BIC] = Model(wn[i],wn1[j]);
: if(AIC < AIC0){
: finalAIC = AIC
: finalBIC = BIC
: }
: }
: }
: [環境敘述]:
: Win7 32bit R3.2.2
: [關鍵字]:
: Parallel Computing、RMPI
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.109.73.190
※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1445476229.A.C5A.html
推 tony255034: 感謝 有成功了 但想請教有外部算好的變數要代入 10/22 19:58
→ tony255034: function 裡面要怎麼取得 例如y=10但不再function中 10/22 19:59
sfExport 我特意留在上面的XDD
推 tony255034: 抱歉 沒看懂您的意思 感謝 我試成功了 獲益良多 ORZ 10/22 23:31
推 tony255034: 想請教要如何挑選numCores? 平行後單次執行時間變長 10/24 00:05
→ tony255034: 總時間確實有縮短 但以numCores=4 總時間僅縮小了2倍 10/24 00:06
→ tony255034: 單次時間增為2倍 執行次數減為1/4倍 總時間減為0.5倍 10/24 00:08
平行本來就不會縮短非常多 還要考慮到記憶體複製的問題
建議你把程式po上來看,怎樣改進比較快
※ 編輯: celestialgod (180.218.154.163), 10/24/2015 12:06:58