Vilka typer av problem gynnas av parallell beräkning

Effektiv R-kod

Colin Gillespie

Jumping Rivers & Newcastle University

Matlagning

En extra hand

För många kockar

För många kockar som förstör en soppa

Effektiv R-kod

Att köra parallellt

  • Inte alla analyser kan utnyttja flera kärnor
    • Många statistiska algoritmer kan bara använda en enda kärna

Vad kan parallell beräkning hjälpa med?

Effektiv R-kod

Monte Carlo-simuleringar

for(i in 1:8)
    sims[i] <- monte_carlo()
# User defined function
combine_simulations(sims)
  • Maskin med 8 kärnor
    • En simulering per kärna
    • Kombinera resultaten i slutet
  • Embarrassingly parallel
Effektiv R-kod

Allt kan inte köras parallellt

x <- 1:8
for(i in 2:8)
    x[i] <- x[i-1]
x[8] = x[7] = ... x[2] = x[1] = 1
  • Kan vi köra detta parallellt?
    • NEJ
      • Utvärderingsordningen vid parallell beräkning kan inte förutsägas
      • Vi får fel svar, eftersom x[3] kan utvärderas före x[2]
Effektiv R-kod

Tumregel

Kan loopen köras framåt och bakåt?

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

for(i in 8:1)
    sim[i] <- monte_carlo_simulation()
  • Båda looparna ger samma resultat
  • Vi kan därför köra looparna parallellt
Effektiv R-kod

Tumregel

Kan loopen köras framåt och bakåt?

x <- 1:8
for(i in 2:8)
    x[i] <- x[i-1]
for(i in 8:2)
    x[i] <- x[i-1]
  • Looparna ger olika svar
    • Den första: x[8] = x[7] = ... = 1
    • Den andra: x[8] = x[7] = 7
  • Parallell beräkning kan inte användas

Kom ihåg: Om du kan köra loopen i omvänd ordning kan du troligtvis använda parallell beräkning.

Effektiv R-kod

Nu kör vi en övning!

Effektiv R-kod

Preparing Video For Download...