【发布时间】:2013-06-28 22:51:00
【问题描述】:
这是我在 R 中进行并行计算的第一步。下面的代码会导致以下错误。我一无所知,因为我写的内容中没有 mclapply 函数,至少我没有明确说明。
错误:
Error in mclapply(argsList, FUN, mc.preschedule = preschedule, mc.set.seed = set.seed, :
(list) object cannot be coerced to type 'integer'
Calls: %dopar% -> <Anonymous> -> mclapply
Execution halted
代码:
dist<-array(0, dim=c(320,500,25))
mc<-8
cl<-makeCluster(mc)
registerDoMC(cl)
opts<-list(chunkSize=10)
for(a in 1:25) {
dist[,,a]<-foreach(x=1:500, .combine='cbind', .options.mc=opts) %:%
foreach(y=1:320, .combine='c') %dopar% {
gcd.slc(crdsx[y,x], crdsy[y,x], lot[a,5], lot[a,4])
}
}
stopCluster(cl)
在不同的机器上,它可以很好地工作
registerDoParallel(cl)
而不是
registerDoMC(cl)
【问题讨论】:
-
能否将 sessionInfo() 添加到 OP 中?
-
当您使用
registerDoMC注册并行后端时,函数doMC设置为在您调用函数%dopar%时执行。doMC包含对mclapply的调用,所以它就是从这里来的。
标签: r parallel-processing