Trecerea la parApply
Pentru a rula cod în paralel folosind pachetul parallel, fluxul de lucru de bază are trei pași.
- Creează un cluster cu
makeCluster(). - Efectuează calculele dorite.
- Oprește clusterul cu
stopCluster().
Cel mai simplu mod de a crea un cluster este să transmiți un număr către makeCluster(). Aceasta creează un cluster de tip implicit, care rulează codul pe atâtea nuclee câte ai specificat.
Obiectul dd este un data frame cu 10 coloane și 100 de rânduri. Codul de mai jos folosește apply() pentru a calcula medianele coloanelor:
apply(dd, 2, median)
Pentru a rula acest cod în paralel, înlocuiești apply() cu parApply(). Argumentele funcției sunt aceleași, cu excepția faptului că aceasta primește un argument de tip cluster înaintea argumentelor obișnuite ale apply().
Acest exercițiu face parte din cursul
Scrierea codului R eficient
Instrucțiuni pentru exercițiu
- Folosește funcția
detectCores()pentru a afișa în consolă numărul de nuclee disponibile. - Creează un cluster cu
makeCluster()și setează numărul de nuclee utilizate la 2. Salvează rezultatul în variabilacl. - Rescrie funcția
apply()de mai sus folosindparApply(). Reține că primul argument trebuie să fie acum obiectul cluster,cl. - Oprește clusterul folosind
stopCluster().
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# Determine the number of available cores
___
# Create a cluster via makeCluster
cl <- makeCluster(___)
# Parallelize this code
apply(dd, 2, median)
# Stop the cluster
stopCluster(cl)