Moeten we paralleliseren?

Parallel programmeren in R

Nabeel Imam

Data Scientist

Laten we een gebouw bouwen

   

Een verdieping op de vorige bouwen: sequentieel

 

Ramen plaatsen in het afgewerkte skelet: parallel

Een gebouw in aanbouw. Verdiepingen moeten in volgorde, terwijl ramen parallel geplaatst kunnen worden.

Parallel programmeren in R

De sequentieel-parallel-schaal

Veelvoorkomende rekentaken op een schaal van sequentieel tot parallel. Nieuwe variabelen maken zit dichter bij parallel; cumulatieve som dichter bij sequentieel.

Parallel programmeren in R

Een klassieke numerieke operatie

De vierkantswortels van een miljoen getallen berekenen

numbers <- 1:1000000


start <- Sys.time() sq_roots <- lapply(numbers, sqrt) end <- Sys.time()
end - start
Time difference of 1.044573 secs
Parallel programmeren in R

Hoe kunnen we de wortelberekening paralleliseren?

Een stroomdiagram voor parallelle wortelberekening. Hele getallen van 1 tot een miljoen zijn verdeeld in vijf groepen van 200.000.

Parallel programmeren in R

Hoe kunnen we de wortelberekening paralleliseren?

De opgesplitste data gaat naar een cluster met meerdere cores. Elke groep getallen gaat naar één core voor de wortelberekening. Als alle cores bezet zijn, wachten nieuwe groepen tot er één vrij is.

Parallel programmeren in R

Hoe kunnen we de wortelberekening paralleliseren?

De wortels van elke core worden verzameld en samengevoegd tot een miljoen wortels.

Parallel programmeren in R

Een geparalleliseerde numerieke operatie

Vierkantswortels van een miljoen getallen in parallel

library(parallel)


my_cluster <- makeCluster(3)
start <- Sys.time() sq_roots <- parLapply(my_cluster, numbers, sqrt) end <- Sys.time()
stopCluster(my_cluster)
end - start
Time difference of 0.8416824 secs
Parallel programmeren in R

Niet zo snel als verwacht

Een stroomdiagram voor de parallelle berekening van wortels van getallen 1 tot een miljoen.

Parallel programmeren in R

Niet zo snel als verwacht

Parallel uitvoeren brengt extra stappen mee. De eerste is het splitsen van de data.

Parallel programmeren in R

Niet zo snel als verwacht

Na het splitsen moet elke subgroep naar de cores in het cluster worden gekopieerd.

Parallel programmeren in R

Niet zo snel als verwacht

Na de berekening moet de output van elke core verzameld worden tot het eindresultaat.

Parallel programmeren in R

Niet zo snel als verwacht

Er gaat ook rekenkracht naar de orkestratie van het proces.

Parallel programmeren in R

Moeten we dus paralleliseren?

Voor een voldoende complexe taak, denk aan:

Voordelen

  • Sneller dan sequentieel
  • Op termijn kostenefficiënter

 

Nadelen

  • Vereist speciale programmeervaardigheden (maar jij bent er klaar voor!)
  • Hoog geheugengebruik
Parallel programmeren in R

Laten we oefenen!

Parallel programmeren in R

Preparing Video For Download...