Začněte nyníZačněte zdarma

Měření času parSapply()

Spouštění kostkové hry je embarrassingly parallel problém. Takovéto simulace obvykle (ale ne vždy) přináší dobré zrychlení. Stejně jako dříve můžeme použít microbenchmark() nebo system.time(). Pro jednoduchost použijeme v tomto cvičení system.time().

Toto cvičení je součástí kurzu

Efektivní kód v R

Zobrazit kurz

Pokyny k cvičení

Funkce play() je již definována ve tvém prostředí. Budeme předpokládat, že chceme odehrát sto tisíc her.

  • Nastav no_of_games na 1e5.
  • Pomocí system.time() změř dobu, po kterou se play() opakovaně volá sériově.
    • Zavolej sapply() s argumenty 1:no_of_games a obalovací funkcí play().
    • Výsledek přiřaď do proměnné serial.
    • Celé volání obal do system.time(), aby se změřil čas.
  • Vytvoř cluster objekt se 4 jádry a exportuj do něj funkci play().
  • Pomocí system.time() změř dobu, po kterou se play() opakovaně volá paralelně.
    • Uprav kód, který jsi použil/a pro vytvoření serial, tak aby běžel paralelně.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

# Set the number of games to play
no_of_games <- ___

# Time serial version
system.time(serial <- sapply(1:___, function(i) play()))

# Set up cluster
cl <- makeCluster(___)
clusterExport(cl, "play")

# Time parallel version
system.time(par <- ___)

# Stop cluster
stopCluster(cl)
Upravit a spustit kód