Má smysl paralelizovat?

Paralelní programování v R

Nabeel Imam

Data Scientist

Stavba budovy

   

Stavba dalšího patra: sekvenční

 

Osazování oken dokončené konstrukce: paralelní

Budova ve výstavbě. Patra lze stavět pouze sekvenčně, okna lze osazovat paralelně.

Paralelní programování v R

Škála sekvenční–paralelní

Běžné výpočetní úlohy jsou zobrazeny na škále od sekvenčních na jednom konci po paralelní na druhém. Vytváření nových proměnných je blíže paralelnímu konci, kumulativní součet blíže sekvenčnímu.

Paralelní programování v R

Klasická numerická operace

Výpočet odmocnin milionu čísel

numbers <- 1:1000000


start <- Sys.time() sq_roots <- lapply(numbers, sqrt) end <- Sys.time()
end - start
Time difference of 1.044573 secs
Paralelní programování v R

Jak paralelizovat výpočet odmocniny?

Vývojový diagram paralelního výpočtu odmocnin. Celá čísla od jedné do milionu jsou rozdělena do pěti skupin po 200 000.

Paralelní programování v R

Jak paralelizovat výpočet odmocniny?

Rozdělená data jsou odeslána do clusteru složeného z více jader. Každá skupina čísel je odeslána na jedno jádro k výpočtu odmocniny. Pokud jsou všechna jádra obsazená, nové skupiny čekají na uvolnění jádra.

Paralelní programování v R

Jak paralelizovat výpočet odmocniny?

Odmocniny jsou sesbírány z každého jádra a sloučeny do milionu odmocnin.

Paralelní programování v R

Paralelizovaná numerická operace

Odmocniny milionu čísel paralelně

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
Paralelní programování v R

Ne tak rychlé, jak jsme čekali

Vývojový diagram paralelního výpočtu odmocnin čísel od jedné do milionu.

Paralelní programování v R

Ne tak rychlé, jak jsme čekali

Paralelní výpočet zahrnuje několik dodatečných kroků. Prvním je rozdělení dat.

Paralelní programování v R

Ne tak rychlé, jak jsme čekali

Po rozdělení je třeba každou podskupinu dat zkopírovat na jádra v clusteru.

Paralelní programování v R

Ne tak rychlé, jak jsme čekali

Po výpočtu je třeba výstupy z každého jádra shromáždit a sestavit výsledek.

Paralelní programování v R

Ne tak rychlé, jak jsme čekali

Část výpočetních zdrojů je spotřebována na řízení celého procesu.

Paralelní programování v R

Má tedy smysl paralelizovat?

U dostatečně složitých úloh zvažte:

Výhody

  • Rychlejší než sekvenční přístup
  • Dlouhodobě nákladově efektivnější

 

Nevýhody

  • Vyžaduje speciální znalosti (ale vy jste připraveni!)
  • Vysoká spotřeba paměti
Paralelní programování v R

Pojďme si procvičit!

Paralelní programování v R

Preparing Video For Download...