Tiempos con parSapply()
Ejecutar el juego de dados es un caso de paralelismo trivial. Este tipo de simulaciones
suele (aunque no siempre) dar un buen aumento de velocidad. Como antes, podemos usar microbenchmark()
o system.time(). Para simplificar, en este ejercicio usaremos system.time().
Este ejercicio forma parte del curso
Escribir código R eficiente
Instrucciones del ejercicio
La función play() ya está definida en tu espacio de trabajo. Supondremos que queremos jugar cien mil partidas.
- Define
no_of_gamescomo1e5. - Usa
system.time()para medir el tiempo de llamar repetidamente aplay()en serie.- Llama a
sapply()con1:no_of_gamesy la función contenedoraplay(). - Asigna el resultado a
serial. - Encapsula esta llamada en
system.time()para medirla.
- Llama a
- Crea un objeto clúster de 4 núcleos y exporta la función
play()a él. - Usa
system.time()para medir el tiempo de llamar repetidamente aplay()en paralelo.- Reutiliza el código que usaste para crear
serial, pero haz que funcione en paralelo.
- Reutiliza el código que usaste para crear
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# 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)