Моя проблема в том, что у меня много вложенных функций и упаковочных функций, и это приводит к появлению в clusterExport ошибки.
Минимальный код выглядит следующим образом:
paral<-function(){
funk<-function(i,a,b,x1,x2,x3){
c<-zusatz1(x1,x2)
d<-zusatz2(x1,x3), silent = T
d1<-d[[1]]
return(mod(3,2)*a^d1+b*c)
}
numCores <- detectCores()
cl <- makeCluster(numCores)
#clusterExport(cl=cl, varlist=c("zusatz1","zusatz2","zusatz3","mod"))
clusterExport(cl=cl, varlist=c("a","b","x1","x2","x3"))
a<-3
b<-4
x1<-1
x2<-1.2
x3<-2
ausd<-parLapply(cl,1:500000,funk,a,b,x1,x2,x3)
stopCluster(cl)
return(ausd)
}
zusatz1<-function(x1,x2){
return(x1*x2)
}
zusatz2<-function(x1,x3){
x1<-zusatz3(x1)
return(list(x1/x3,x1+x3))
}
zusatz3<-function(x1){
return(x1)
}
Этот код можно запустить только с:
clusterExport(cl=cl, varlist=c("a","b","x1","x2","x3"))
вместо
clusterExport(cl=cl, varlist=c("zusatz1","zusatz2","zusatz3","mod"))