ComenzarEmpieza gratis

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

Ver curso

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_games como 1e5.
  • Usa system.time() para medir el tiempo de llamar repetidamente a play() en serie.
    • Llama a sapply() con 1:no_of_games y la función contenedora play().
    • Asigna el resultado a serial.
    • Encapsula esta llamada en system.time() para medirla.
  • 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 a play() en paralelo.
    • Reutiliza el código que usaste para crear serial, pero haz que funcione en paralelo.

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)
Editar y ejecutar código