Re: [問題] 關於平行運算

看板R_Language作者 (吐吐林克)時間3年前 (2020/07/30 08:51), 編輯推噓1(104)
留言5則, 1人參與, 3年前最新討論串1/1
※ 引述《b10009047 (Nicklee)》之銘言: : [問題敘述]: : 大家好,最近接觸到'snow'這個用於平行運算的package後覺得十分有趣,剛好目前在做 : 的事情十分需要加快計算速度,因此嘗試使用parRapply, parSapply這些function : 突然發現,若是我在parRapply當中在包一個apply,或是parRapply function都會產生 : 問題,例如 : : library(snow) : library(Rmpi) : data <- matrix(1:6, ncol = 2) : target <- 11:16 : cl <- makeCluster(2, type = 'MPI') : parRapply(cl = cl, data, function(x) { : x <- t(as.matrix(x)) : parRapply(cl = cl, x, function(x){ : target[x] : }) : }) : stopCluster(cl) : 會回報錯誤訊息: : Error in checkForRemoteErrors(val) : : 2 nodes produced errors; first error: 找不到物件 'cl' : 唯一能想像的到的可能為,cl可能是在某個cpu下被定義的,但其他cpu並不知道cl的定義 : 因此產生以下錯誤訊息,此外也想不到其他可能的原因,想請教是否有人有碰過相同的 : 問題呢? : 謝謝各位! : [軟體熟悉度]: : 使用者(對R的基本使用還算熟悉) 大家好,最近也遇到相同的問題。 主要是想了解一個概念性的問題:平行運算究竟能否包兩層以上。 我用的套件是parallel 函數也是parlapply 在實作時有一個四層迴圈的程式 最內層用平行運算處理速度確實快很多。 但當我想將第二層(最內層算第一層最外層算第四層)也化成平行運算時就會遇到跟上面一樣的問題。 嘗試過各種方法 例如每一層的CPU重新定義(第一層指派為cl第二層指派為dl) 或是不同層用不同的套件執行平行運算。 但都會發生上述的錯誤訊息。 因此猜測平行運算本來就不能像迴圈一樣包好幾層。 請問是否有高手熟悉這方面的實作呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.231.201.186 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1596070272.A.28B.html

07/30 14:18, 3年前 , 1F
R future有討論這個問題 https://bit.ly/3hV5cSl
07/30 14:18, 1F

07/30 14:23, 3年前 , 2F
plan(list(tweak(multiprocess,workers = mxcores),#外圈
07/30 14:23, 2F

07/30 14:24, 3年前 , 3F
tweak(multiprocess, workers = nxcores)))#和內圈使用的
07/30 14:24, 3F

07/30 14:25, 3年前 , 4F
worker必須要規劃好 否則只會更慢..但future也可以規劃
07/30 14:25, 4F

07/30 14:26, 3年前 , 5F
不同node 所以若可以運用的資源愈多當然是可以nest..
07/30 14:26, 5F
文章代碼(AID): #1V8Xc0AB (R_Language)
文章代碼(AID): #1V8Xc0AB (R_Language)