這些是我在R中的並行計算的第一步。下面的代碼導致以下錯誤。我無能爲力,因爲我寫的內容中沒有mclapply函數,至少我沒有明確說明。並行foreach循環產生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'的調用,所以這就是它的來源。 – BenBarnes