Comece agoraComece grátis

Medições com parSapply()

Rodar o jogo de dados é um caso de embarrassingly parallel. Esse tipo de simulação geralmente (mas nem sempre) traz um bom ganho de desempenho. Como antes, você pode usar microbenchmark() ou system.time(). Para simplificar, vamos usar system.time() neste exercício.

Este exercicio faz parte do curso

Escrevendo código R eficiente

Ver curso

Instruções do exercicio

A função play() já está definida no seu workspace. Vamos supor que você quer jogar cem mil partidas.

  • Defina no_of_games como 1e5.
  • Use system.time() para medir o tempo de play() sendo chamada repetidamente em série.
    • Chame sapply() com 1:no_of_games e a função wrapper play().
    • Atribua o resultado a serial.
    • Envolva essa chamada em system.time() para cronometrar.
  • Crie um objeto de cluster com 4 núcleos e exporte a função play() para ele.
  • Use system.time() para medir o tempo de play() sendo chamada repetidamente em paralelo.
    • Reaproveite o código que você usou para criar serial, mas faça-o funcionar em paralelo.

exercicio interativo prático

Tente este exercicio completando este código de exemplo.

# 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 e Executar Código