2010-11-02 26 views
2

R中的一種並行化方式是通過showfall包。要將自定義函數發送給工作人員,可以使用sfExport()(請參閱Joris的文章here)。是否有另一種方式在工作人員中加載額外的軟件包(並行計算)?

我有一個自定義函數,它依賴於非自動加載的非基本包的函數。因此,當我並行運行我的功能時,R因爲某些功能不可用(想到spatstat,splancs,sp ...等軟件包)而變得困難起來。到目前爲止,我通過在自定義函數中調用library()來解決這個問題。這會在第一次運行時加載軟件包,並可能在隨後的迭代中忽略。不過,我想知道是否有另一種方式告訴每個工作人員在第一次迭代時加載包並完成它(或者我是否錯過了一些東西,每次迭代都以tabula rasa開始?)。

回答

1

有降雪,sfLibrary()爲一個特定的命令。另見?「降雪工具」。強烈建議不要在每個節點上手動調用庫。 sfLibrary基本上是Dirk基於雪包提供的解決方案的一個包裝。

3

我不明白這個問題。

包經由library()加載,並且大部分的並行執行的功能支持。例如,snow包使用

clusterEvalQ(cl, library(boot)) 

爲「靜靜地」(即,不返回值)的呼叫評估給定表達式---這裏library() ---每個節點上。大多數並行執行框架都有類似的東西。

爲什麼你又需要一些不同的東西,什麼東西在這裏不起作用?

+0

謝謝Dirk花時間看@我的問題。我已經修改了第二段,希望現在更清楚我想實現的目標。 – 2010-11-02 13:20:49

+0

使用雪時正確,但在使用降雪時,強烈建議您手動在每個節點上調用library()。正確的命令是sfLibrary(),它基本上是解決方案的一個包裝。 – 2010-11-03 13:03:34

+0

我想有一個原因,我喜歡雪比降雪:)它更適合於doXXX框架和foreach包。 – 2010-11-03 14:00:25

相關問題