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
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_gamesna1e5. - Pomocí
system.time()změř dobu, po kterou seplay()opakovaně volá sériově.- Zavolej
sapply()s argumenty1:no_of_gamesa obalovací funkcíplay(). - Výsledek přiřaď do proměnné
serial. - Celé volání obal do
system.time(), aby se změřil čas.
- Zavolej
- Vytvoř cluster objekt se 4 jádry a exportuj do něj funkci
play(). - Pomocí
system.time()změř dobu, po kterou seplay()opakovaně volá paralelně.- Uprav kód, který jsi použil/a pro vytvoření
serial, tak aby běžel paralelně.
- Uprav kód, který jsi použil/a pro vytvoření
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)