看板 R_Language 關於我們 聯絡資訊
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