Faut-il 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 bâtis 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, du séquentiel d'un côté au parallèle de l'autre. Créer de nouvelles variables est proche du côté parallèle, tandis que la somme cumulée est proche 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 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 la racine carrée ?

Les données découpées sont envoyées à un cluster composé 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 la racine carrée ?

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

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 plusieurs tâches. La première est de découper les données.

Programmation parallèle en R

Moins rapide que prévu

Après découpage, chaque sous-groupe de données doit être copié vers les cœurs du cluster.

Programmation parallèle en R

Moins rapide que prévu

Après le calcul, la sortie de chaque cœur doit être rassemblée pour produire 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, faut-il paralléliser ?

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

Avantages

  • Plus rapide que le séquentiel
  • Plus économique sur la durée

 

Inconvénients

  • Nécessite des compétences spécifiques (mais vous avez tout ce qu'il faut !)
  • Forte consommation mémoire
Programmation parallèle en R

Passons à la pratique !

Programmation parallèle en R

Preparing Video For Download...