Devrait-on paralléliser?

Programmation parallèle en R

Nabeel Imam

Data Scientist

Construisons un immeuble

   

Construire un étage au-dessus du précédent : séquentiel

 

Poser les fenêtres sur la structure finie : parallèle

Un immeuble est en construction. Les étages ne peuvent être construits qu'en séquence, tandis que les fenêtres peuvent être posées en parallèle.

Programmation parallèle en R

L'échelle séquentiel–parallèle

Des tâches de calcul courantes sont placées sur une échelle allant du séquentiel à un bout au parallèle à l'autre. La création de nouvelles variables est près du côté parallèle, tandis que la somme cumulative est près du côté séquentiel.

Programmation parallèle en R

Une opération numérique classique

Calculer les racines carrées d'un million de nombres

numbers <- 1:1000000


start <- Sys.time() sq_roots <- lapply(numbers, sqrt) end <- Sys.time()
end - start
Time difference of 1.044573 secs
Programmation parallèle en R

Comment paralléliser le calcul de la racine carrée?

Organigramme pour calculer des racines carrées en parallèle. Les entiers de un à un million sont divisés en cinq groupes de 200 000 chacun.

Programmation parallèle en R

Comment paralléliser le calcul de la racine carrée?

Les données divisées sont envoyées à un grappe composée de plusieurs cœurs. Chaque groupe de nombres est envoyé à un cœur pour le calcul de la racine carrée. Si tous les cœurs sont occupés, les nouveaux groupes attendent qu'un cœur se libère.

Programmation parallèle en R

Comment paralléliser le calcul de la racine carrée?

Les racines carrées sont récupérées de chaque cœur et combinées pour obtenir un million de valeurs.

Programmation parallèle en R

Une opération numérique parallélisée

Les racines carrées d'un million de nombres en parallèle

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
Programmation parallèle en R

Moins rapide que prévu

Organigramme du calcul parallèle des racines carrées des nombres de un à un million.

Programmation parallèle en R

Moins rapide que prévu

L'exécution en parallèle ajoute des tâches. La première est de scinder les données.

Programmation parallèle en R

Moins rapide que prévu

Après la division, chaque sous-groupe doit être copié vers les cœurs du grappe.

Programmation parallèle en R

Moins rapide que prévu

Après le calcul, il faut rassembler la sortie de chaque cœur pour obtenir le résultat final.

Programmation parallèle en R

Moins rapide que prévu

Une partie des ressources de calcul sert à orchestrer l'ensemble du processus.

Programmation parallèle en R

Alors, devrait-on paralléliser?

Pour une tâche assez complexe, à considérer :

Avantages

  • Plus rapide que le séquentiel
  • Plus économique à long terme

 

Inconvénients

  • Exige des compétences de programmation particulières (mais vous avez ce qu'il faut !)
  • Forte utilisation de la mémoire
Programmation parallèle en R

Passons à la pratique!

Programmation parallèle en R

Preparing Video For Download...