Devemos paralelizar?

Programação Paralela em R

Nabeel Imam

Data Scientist

Vamos construir um prédio

   

Construir um andar sobre o anterior: sequencial

 

Instalar janelas na estrutura pronta: paralelo

Um prédio está em construção. Andares só podem ser erguidos em sequência, enquanto janelas podem ser instaladas em paralelo.

Programação Paralela em R

A escala sequencial–paralelo

Tarefas computacionais comuns são colocadas numa escala, de sequencial a paralelo. Criar novas variáveis fica perto do lado paralelo, enquanto soma cumulativa fica perto do lado sequencial.

Programação Paralela em R

Uma operação numérica clássica

Calcular as raízes quadradas de um milhão de números

numbers <- 1:1000000


start <- Sys.time() sq_roots <- lapply(numbers, sqrt) end <- Sys.time()
end - start
Time difference of 1.044573 secs
Programação Paralela em R

Como paralelizar a raiz quadrada?

Um fluxograma para calcular raízes quadradas em paralelo. Números inteiros de um a um milhão são divididos em cinco grupos, cada um com 200.000.

Programação Paralela em R

Como paralelizar a raiz quadrada?

Os dados divididos são enviados para um cluster, com mais de um core. Cada grupo vai para um core para calcular a raiz quadrada. Se todos os cores estiverem ocupados, novos grupos aguardam um core livre.

Programação Paralela em R

Como paralelizar a raiz quadrada?

As raízes quadradas são coletadas de cada core e combinadas para obter um milhão de resultados.

Programação Paralela em R

Uma operação numérica paralelizada

Raízes quadradas de um milhão de números em paralelo

library(parallel)


my_cluster <- makeCluster(3)
start <- Sys.time() sq_roots <- parLapply(my_cluster, numbers, sqrt) end <- Sys.time()
stopCluster(my_cluster)
end - start
Time difference of 0.8416824 secs
Programação Paralela em R

Não foi tão rápido quanto esperávamos

Um fluxograma da execução paralela das raízes quadradas dos números de um a um milhão.

Programação Paralela em R

Não foi tão rápido quanto esperávamos

Execução paralela envolve tarefas extras. A primeira é dividir os dados.

Programação Paralela em R

Não foi tão rápido quanto esperávamos

Depois de dividir, cada subgrupo precisa ser copiado para os cores do cluster.

Programação Paralela em R

Não foi tão rápido quanto esperávamos

Após o cálculo, as saídas de cada core precisam ser reunidas para o resultado final.

Programação Paralela em R

Não foi tão rápido quanto esperávamos

Alguns recursos computacionais são gastos para orquestrar todo o processo.

Programação Paralela em R

Então, devemos paralelizar?

Para uma tarefa suficientemente complexa, considere:

Prós

  • Mais rápido que sequencial
  • Mais econômico no longo prazo

 

Contras

  • Exige habilidades especiais de programação (mas você já está pronto/a!)
  • Alto uso de memória
Programação Paralela em R

Vamos praticar!

Programação Paralela em R

Preparing Video For Download...