我尝试并行化(使用snow::parLapply
)一些依赖于包的代码(即snow
以外的包)。必须使用parLapply
将clusterExport
调用的函数中引用的对象显式传递给集群。有没有办法将整个包传递给集群,而不必在clusterExport
中明确命名每个函数(包括用户函数调用的包的内部函数!)?
答案 0 :(得分:7)
在所有节点上安装软件包,并通过一个可用的命令在所有节点上调用代码library(thePackageYouUse)
,类似
clusterApply(cl, library(thePackageYouUse))
我认为最新R版本附带的parallel
软件包有示例 - 请参阅help(clusterApply)
中的boot
软件包,其中 ## A bootstrapping example, which can be done in many ways:
clusterEvalQ(cl, {
## set up each worker. Could also use clusterExport()
library(boot)
cd4.rg <- function(data, mle) MASS::mvrnorm(nrow(data), mle$m, mle$v)
cd4.mle <- list(m = colMeans(cd4), v = var(cd4))
NULL
})
软件包随处可见:
{{1}}