Jaké problémy těží z paralelního výpočtu

Efektivní kód v R

Colin Gillespie

Jumping Rivers & Newcastle University

Vaření

Pomocná ruka

Příliš mnoho kuchařů

Příliš mnoho kuchařů kazí vývar

Efektivní kód v R

Paralelní zpracování

  • Ne každá analýza může využít více jader
    • Mnoho statistických algoritmů pracuje pouze s jedním jádrem

Kde tedy paralelní výpočet pomůže?

Efektivní kód v R

Simulace Monte Carlo

for(i in 1:8)
    sims[i] <- monte_carlo()
# User defined function
combine_simulations(sims)
  • Počítač s 8 jádry
    • Jedna simulace na jádro
    • Výsledky se na konci sloučí
  • Embarrassingly parallel
Efektivní kód v R

Ne vše lze spustit paralelně

x <- 1:8
for(i in 2:8)
    x[i] <- x[i-1]
x[8] = x[7] = ... x[2] = x[1] = 1
  • Lze toto spustit paralelně?
    • NE
      • Pořadí vyhodnocení při paralelním výpočtu nelze předpovědět
      • Výsledek bude chybný, protože x[3] může být vyhodnoceno před x[2]
Efektivní kód v R

Pravidlo palce

Lze smyčku spustit dopředu i dozadu?

for(i in 1:8)
    sim[i] <- monte_carlo_simulation()

for(i in 8:1)
    sim[i] <- monte_carlo_simulation()
  • Obě smyčky dají stejný výsledek
  • Smyčky lze tedy spustit paralelně
Efektivní kód v R

Pravidlo palce

Lze smyčku spustit dopředu i dozadu?

x <- 1:8
for(i in 2:8)
    x[i] <- x[i-1]
for(i in 8:2)
    x[i] <- x[i-1]
  • Smyčky dají různé výsledky
    • První: x[8] = x[7] = ... = 1
    • Druhá: x[8] = x[7] = 7
  • Paralelní výpočet nelze použít

Pamatujte: Pokud lze smyčku spustit pozpátku, lze pravděpodobně použít paralelní výpočet.

Efektivní kód v R

Pojďme si procvičit!

Efektivní kód v R

Preparing Video For Download...