> 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只能用內定的函數吧?
這問題我上禮拜遇過,parallel的slave不會分享記憶區塊要重新載入或是重新定義package重新require/function重新定義或是用字串包在傳進去的資料list 使用 eval 重新宣告,雖然這樣用eval有點多餘,複製貼上就好,但我比較懶......記得所有資料要包起來傳進去,除非你的計算沒有外部資料我的意思是自己寫的function,如果你懶得一個一個複製貼進par裡面讓他重新在裡面宣告,可以包成字串然後用eva例子在我前幾天問Rmpi回應到板上得文最下面,重新requir其實想法只是,你開平行其實就是多開好幾個R,你R剛開只會有你預載給他的變數還有function,所以全部重來這樣講可能會比較好理解可參考 Wush 大的系列平行文章