[問題] snow中使用parSapply 找不到函數

看板R_Language作者 (為什麼會流淚)時間9年前 (2016/05/06 23:17), 9年前編輯推噓5(5013)
留言18則, 2人參與, 最新討論串1/2 (看更多)
> 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

05/06 23:21, , 1F
這問題我上禮拜遇過,parallel的slave不會分享記憶區塊
05/06 23:21, 1F

05/06 23:22, , 2F
要重新載入或是重新定義
05/06 23:22, 2F
什麼意思?要怎麼做?

05/06 23:27, , 3F
package重新require/function重新定義或是用字串包在
05/06 23:27, 3F

05/06 23:27, , 4F
傳進去的資料list 使用 eval 重新宣告,雖然這樣用eval
05/06 23:27, 4F
可以舉例說明嗎>< 謝謝

05/06 23:28, , 5F
有點多餘,複製貼上就好,但我比較懶......
05/06 23:28, 5F
我是用自己寫的function ※ 編輯: f496328mm (36.231.230.74), 05/06/2016 23:29:03

05/06 23:28, , 6F
記得所有資料要包起來傳進去,除非你的計算沒有外部資料
05/06 23:28, 6F

05/06 23:29, , 7F
我的意思是自己寫的function,如果你懶得一個一個複製
05/06 23:29, 7F

05/06 23:30, , 8F
貼進par裡面讓他重新在裡面宣告,可以包成字串然後用eva
05/06 23:30, 8F

05/06 23:31, , 9F
例子在我前幾天問Rmpi回應到板上得文最下面,重新requir
05/06 23:31, 9F
恩恩 看到了 謝謝 研究中 ※ 編輯: f496328mm (36.231.230.74), 05/06/2016 23:35:45

05/06 23:37, , 10F
其實想法只是,你開平行其實就是多開好幾個R,你R剛開
05/06 23:37, 10F

05/06 23:37, , 11F
只會有你預載給他的變數還有function,所以全部重來
05/06 23:37, 11F

05/06 23:38, , 12F
這樣講可能會比較好理解
05/06 23:38, 12F

05/07 00:03, , 13F
可參考 Wush 大的系列平行文章
05/07 00:03, 13F

05/07 00:18, , 14F
clusterExport(cl, "actv_fun")
05/07 00:18, 14F

05/07 00:18, , 15F
不用包進去eval,直接export出去就好
05/07 00:18, 15F

05/07 00:19, , 16F
套件用clusterEvalQ去做library/require
05/07 00:19, 16F

05/07 00:19, , 17F
snow package的套件說明 建議全部瀏覽一次
05/07 00:19, 17F
感謝大大 成功了 也稍微了解SNOW了 多謝JackBaska 和celestialgod ※ 編輯: f496328mm (36.231.230.74), 05/07/2016 00:29:32

05/07 00:29, , 18F
還在摸之中,感謝Ce大
05/07 00:29, 18F
文章代碼(AID): #1NBBMZ0E (R_Language)
文章代碼(AID): #1NBBMZ0E (R_Language)