2A.i - Parallélisation locale (énoncé)

Links: notebook, html, PDF, python, slides, GitHub

Parallélisation avec joblib.

from jyquickhelper import add_notebook_menu
add_notebook_menu()

La parallélisation des calculs permet d’accélèrer l’exécution d’un programme au prix de deux contraintes :

  • La synchronisation : écrire un programme avec des calculs en parallèle est plus complexe. Il faut souvent attendre que des processus s’exécutant en parallèle se terminent avant de passer à l’étape suivante avec l’ensemble des résultats.

  • La communication : il faut communiquer aux différents processus d’exécutant en parallèle les tâches qu’ils doivent exécuter. Selon la parallélisation choisie, le coût n’est pas négligeable (communication réseau par exemple).

La parallélisation est assez récente. Elle est née avec les premiers processeurs multitâche et les premiers systèmes d’exploitation avec des interfaces graphiques.

joblib

from math import sqrt
from joblib import Parallel, delayed
%timeit Parallel(n_jobs=2)(delayed(sqrt)(i ** 2) for i in range(100000))
1 loop, best of 3: 2.23 s per loop
%timeit [sqrt(i ** 2) for i in range(100000)]
10 loops, best of 3: 70.7 ms per loop