Sto provando a parallelizzare (usando snow::parLapply
) un codice che dipende da un pacchetto (ad esempio un pacchetto diverso da snow
). Gli oggetti a cui si fa riferimento nella funzione chiamata da parLapply
devono essere passati esplicitamente al cluster utilizzando clusterExport
. Esiste un modo per passare un intero pacchetto al cluster anziché dover denominare esplicitamente ogni funzione (incluse le funzioni interne di un pacchetto chiamate dalle funzioni utente!) In clusterExport
?Passaggio di un intero pacchetto a un cluster di neve
5
A
risposta
6
Installare il pacchetto su tutti i nodi, e hanno la chiamata codice library(thePackageYouUse)
su tutti i nodi attraverso uno dei comandi disponibili, l'uovo qualcosa come
clusterApply(cl, library(thePackageYouUse))
Credo che il pacchetto parallel
che viene fornito con le recenti versioni R ha esempi - - si veda ad esempio qui dal help(clusterApply)
in cui il pacchetto viene caricato boot
ovunque:
## A bootstrapping example, which can be done in many ways:
clusterEvalQ(cl, {
## set up each worker. Could also use clusterExport()
library(boot)
cd4.rg <- function(data, mle) MASS::mvrnorm(nrow(data), mle$m, mle$v)
cd4.mle <- list(m = colMeans(cd4), v = var(cd4))
NULL
})
Problemi correlati
- 1. Salvataggio di un intero pacchetto di SharedPreferences
- 2. Passaggio di un intero array a una funzione
- 3. Passaggio di un campo a un altro
- 4. Passaggio di un numero a un componente
- 5. Passaggio di un intero file agli argomenti JVM
- 6. @link a un altro pacchetto all'interno di un pacchetto-info.java
- 7. Passaggio da schermo intero a non intero schermo pop/slide
- 8. Copia di una tabella da un cluster redshift a un altro cluster redshift (senza utilizzare s3)
- 9. Passaggio di un oggetto di classe a un kernel
- 10. passaggio di un argomento a un metodo di salvataggio personalizzato()
- 11. Passaggio di un HttpPostedFileBase a un metodo di controller
- 12. Passaggio di un array a Get-Job
- 13. Passaggio di un'interfaccia a un processo diverso
- 14. Passaggio di argomenti a un gestore eventi
- 15. Passaggio di oggetti a un UITypeEditor
- 16. Passaggio di un punto a una funzione
- 17. Aggiunta di un passaggio a gcc?
- 18. Aggiunta di un intero a NSMutableArray
- 19. Monitorare un cluster di nodi
- 20. Passaggio a una funzione di un elenco di elenchi
- 21. Passaggio di un array
- 22. Come rappresentare un numero intero superiore a un numero intero
- 23. Aggiunta di un pacchetto a un frammento da un FragmentActivity
- 24. Passaggio di un oggetto come parametro a un servizio Windows
- 25. Passaggio di un contesto contenente proprietà a un TypeConverter
- 26. Connessione a un cluster Redshift da pgAdmin
- 27. Come si accede a un singolo byte di un intero?
- 28. Cluster di cluster Networkx
- 29. TeamCity, passaggio di un ID generato in un passo di generazione a un passaggio di generazione successivo
- 30. XNA - Neve simulata
Grazie Dirk. Ci sono motivi per cui 'clusterExport (ls())' sarebbe pericoloso? Ciò non aiuterebbe con il passaggio delle funzioni dai pacchetti ma farebbe risparmiare un sacco di mal di testa per parallelizzare rapidamente i loop (qualcuno non è mio!) Che si basano su una tonnellata di variabili globali. – Michael
È solo un cattivo design in quanto utilizza un approccio scatter sparatutto più lavello. Progetta ciò che ti serve in una soluzione seriale, quindi rendilo parallelo. –
Abbastanza onesto, grazie per l'aiuto. – Michael