2016-08-01 8 views
0

gefunden ich habe folgende (Probe) Code, der im passiven Modus auf Rechencluster ausgeführt wird:parallel, Forech exportierte Objekt nicht

> 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 

Was mache ich falsch? Vielen Dank!

Antwort

0

Sie haben einige Anweisungen gemischt, um um diese

library(doSNOW) 
library(foreach) 
cl <- makeCluster(detectCores()-1, type = "SOCK") 
registerDoSNOW(cl) 

Ich gehe davon aus auszukommen, dass das Objekt dat bereits availaible war und so ist dies, wie Sie die foreach verwenden

dumpster <- foreach(i=1:10,.packages=c("copula","np"), .combine = c)%dopar%{dat.new <- some.fn(dat)} 

Dann schließen Sie die Cluster

stopCluster(cl) 
+0

Vielen Dank für Ihre Antwort. Aber tatsächlich gab es nichts durcheinander. Ich entschied mich für das "Parallel" -Paket, da es meinen Bedürfnissen entsprach. Die anderen Pakete werden für meine Berechnungen benötigt und ich habe sie gepostet, für den Fall, dass einige Inkompatibilitäten ohne mein Wissen existieren. Der Grund war schließlich, dass "dat" zu groß war, um so oft innerhalb des Clusters repliziert zu werden, was zu Speicherproblemen und damit zum Bruch des Clusters führte. – DeeCeeDelux

+0

Ich hatte das selbe Problem selbst, ich hoffe, es hat alles geklappt. –

+0

Ja endlich ... Nur ein Schmerz in den Arsch, um herauszufinden, basierend auf dem "Objekt 'dat' nicht gefunden" Fehler, der - in meinen Augen - im Falle eines solchen Fehlers keinen Sinn macht. – DeeCeeDelux