并行,foreach,未找到导出的对象
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了并行,foreach,未找到导出的对象相关的知识,希望对你有一定的参考价值。
我有以下(示例)代码,它在计算集群上以被动模式执行:
> foo <- function(...)
> {
> require(copula)
> require(foreach)
> require(methods)
> require(np)
> require(parallel)
> {cl <- makeCluster(detectCores()-1) ; registerDoParallel(cl)}
...
> str(dat)
'data.frame': 31269 obs. of 15 variables
...
> clusterExport(cl=cl,varlist=c("dat",...))
> dumpster <- foreach(i=1:10,.packages=c("copula","foreach","np"),.export=c("dat"))%dopar%
> {... ; dat.new <- some.fn(dat) ; ...}
...
> stopCluster(cl)
> }
> foo(...)
Error in get(name, envir = envir) : object 'dat' not found
Calls: foo ... postNode -> sendData -> sendData.SOCKnode -> serialize -> get
Execution halted
我究竟做错了什么?
答案
你已经混淆了一些指令,以便命令这样做
library(doSNOW)
library(foreach)
cl <- makeCluster(detectCores()-1, type = "SOCK")
registerDoSNOW(cl)
我假设对象dat
已经可用,所以这就是你如何使用foreach
dumpster <- foreach(i=1:10,.packages=c("copula","np"), .combine = c)%dopar%{dat.new <- some.fn(dat)}
然后关闭群集
stopCluster(cl)
以上是关于并行,foreach,未找到导出的对象的主要内容,如果未能解决你的问题,请参考以下文章
如何将许多变量和函数从全局环境导出到 foreach 循环?
错误代码:错误域 = NSCocoaErrorDomain 代码 = 3840“JSON 文本没有以数组或对象和允许未设置片段的选项开头。”