看板 R_Language 關於我們 聯絡資訊
> sapply(c(1:10), function(x) actv_fun(data,bo_matrix,x)) [1] 0.5 0.5 0.5 3.0 1.5 17.5 9.0 0.5 2.5 2.5 > parSapply(cl,c(1:10), function(x) actv_fun(data,bo_matrix,x)) Error in checkForRemoteErrors(val) : 6 nodes produced errors; first error: 沒有這個函數 "actv_fun" http://imgur.com/nMZbBme 一樣的東西 sapply都可以執行 但是為什麼用到parSapply 卻會出現沒有這個函數?? sapply不是可以用嗎? 該不會parSapply只能用內定的函數吧? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.231.230.74 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1462547875.A.00E.html
JackBaska: 這問題我上禮拜遇過,parallel的slave不會分享記憶區塊 05/06 23:21
JackBaska: 要重新載入或是重新定義 05/06 23:22
什麼意思?要怎麼做?
JackBaska: package重新require/function重新定義或是用字串包在 05/06 23:27
JackBaska: 傳進去的資料list 使用 eval 重新宣告,雖然這樣用eval 05/06 23:27
可以舉例說明嗎>< 謝謝
JackBaska: 有點多餘,複製貼上就好,但我比較懶...... 05/06 23:28
我是用自己寫的function ※ 編輯: f496328mm (36.231.230.74), 05/06/2016 23:29:03
JackBaska: 記得所有資料要包起來傳進去,除非你的計算沒有外部資料 05/06 23:28
JackBaska: 我的意思是自己寫的function,如果你懶得一個一個複製 05/06 23:29
JackBaska: 貼進par裡面讓他重新在裡面宣告,可以包成字串然後用eva 05/06 23:30
JackBaska: 例子在我前幾天問Rmpi回應到板上得文最下面,重新requir 05/06 23:31
恩恩 看到了 謝謝 研究中 ※ 編輯: f496328mm (36.231.230.74), 05/06/2016 23:35:45
JackBaska: 其實想法只是,你開平行其實就是多開好幾個R,你R剛開 05/06 23:37
JackBaska: 只會有你預載給他的變數還有function,所以全部重來 05/06 23:37
JackBaska: 這樣講可能會比較好理解 05/06 23:38
JackBaska: 可參考 Wush 大的系列平行文章 05/07 00:03
celestialgod: clusterExport(cl, "actv_fun") 05/07 00:18
celestialgod: 不用包進去eval,直接export出去就好 05/07 00:18
celestialgod: 套件用clusterEvalQ去做library/require 05/07 00:19
celestialgod: snow package的套件說明 建議全部瀏覽一次 05/07 00:19
感謝大大 成功了 也稍微了解SNOW了 多謝JackBaska 和celestialgod ※ 編輯: f496328mm (36.231.230.74), 05/07/2016 00:29:32
JackBaska: 還在摸之中,感謝Ce大 05/07 00:29