Đó là các bước đầu tiên của tôi với tính toán song song trong R. Mã bên dưới dẫn đến lỗi sau. Tôi không biết gì, vì không có chức năng bí mật trong những gì tôi viết, ít nhất tôi đã không đặt nó một cách rõ ràng.vòng lặp foreach song song sản xuất lỗi mclapply
Lỗi:
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
Code:
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)
Trên một máy tính khác nhau, nó hoạt động độc đáo với
registerDoParallel(cl)
thay vì
registerDoMC(cl)
bạn có thể thêm sessionInfo() vào OP không? –
Khi bạn đăng ký một chương trình phụ trợ song song với 'registerDoMC', hàm' doMC' được đặt để thực hiện khi bạn gọi hàm '% dopar%'. 'doMC' bao gồm một cuộc gọi đến' mclapply', vì vậy đó là nơi nó xuất phát. – BenBarnes