C'è un modo per inizializzare un cluster doSMP simile a clusterEvalQ
e clusterExport
nel pacchetto neve? Per esempio:Come è possibile inizializzare i lavoratori con doSMP?
x <- 1:10
y <- 10:1
z <- rnorm(10)
cl <- makeSOCKcluster(2)
clusterEvalQ(cl, library(quantmod))
clusterExport(cl, list("x","y","z"))
clusterEvalQ(cl, ls())
clusterEvalQ(cl, search())
C'è un'opzione initEnvir
a doSMP, ma ?doSMP
dice
‘initEnvir’ is a function to be executed by each worker before any tasks are executed associated with a foreach. Its purpose is to initialize the execution environment, or the worker in general. It is only executed by a worker if that worker executes at least one task associated with the foreach.
Ciascun lavoratore ha bisogno di una copia di diversi oggetti di grandi dimensioni al fine di eseguire l'espressione mando a foreach
. Inoltre, ho bisogno di chiamare foreach
diverse centinaia di volte, con versioni identiche di questi oggetti di grandi dimensioni. Sarebbe inefficiente copiare questi oggetti per ogni chiamata a foreach
.
Anche se non c'è un modo pronto per farlo, apprezzerei un kludge.
ho pensato che ci fosse l'accesso all'ambiente di base, che sarebbe negare la necessità di copiare. O mi sta sfuggendo qualcosa? – Iterator
Solo curioso perché stai implementando con doSMP invece di neve? Ho trovato la neve più stabile e portatile. – darckeen
@darckeen: Non sto solo implementando con doSMP. Sto creando opzioni per gli utenti di utilizzare qualsiasi back-end foreach che scelgono, incluso doSMP. –