Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Accélération et loi d’Amdahl

Après cette leçon: Je peux estimer l’accélération obtenue avec plusieurs unités de calcul.

Leçon de 60 min1 commandeLab de calcul parallèle : comment pense un GPU, sans GPU, dans JupyterLab

Combien gagne-t-on avec plus de machines ?

Le calcul parallèle répartit un travail entre plusieurs unités de calcul qui avancent en même temps. La loi d’Amdahl dit de combien ce travail accélère, et pourquoi le gain a toujours une limite.

Un entrepôt prépare 400 colis. Des préparateurs en plus emballent plus vite, mais une seule personne peut établir la liste des tournées. Le labo de ce module n’a pas de GPU, c’est-à-dire pas de carte graphique : il montre le modèle sur lequel un GPU est construit.

À la fin de cette leçon

Remarque

Je peux estimer l’accélération obtenue avec plusieurs unités de calcul.

Mots clés

MotCe que ça veut dire
Parallèleplusieurs parties d’un travail faites en même temps
Unité de calculun cœur ou un processus qui fait une part du travail
Partie sériellela part du travail qui doit se faire dans l’ordre
Accélérationcombien de fois le travail va plus vite qu’avec une seule unité
Efficacitél’accélération divisée par le nombre d’unités
Loi d’Amdahlla règle qui fixe la limite de l’accélération

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Une partie du travail ne se partage pas

Certaines étapes se font dans l’ordre : on lit un fichier avant de le traiter. C’est la partie sérielle, notée s. Si la liste des tournées prend 25 % du temps et ne se partage pas, alors s vaut 0,25.

Le reste, 75 %, se partage entre n unités de calcul. Avec une seule unité, tout dure comme avant.

Exemple : s = 0,25 avec 4 unités

ÉtapeCalculRésultat
Part qui se partage1 - 0,250,75
Cette part sur 4 unités0,75 / 40,1875
Durée relative totale0,25 + 0,18750,4375
Accélération1 / 0,4375environ 2,29

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Calculer un tableau d’accélérations

Code: python
# Accélération pour une part sérielle de 25 % (0,25 en Python).
part_serielle = 0.25
for unites in [1, 2, 4, 8, 16]:
    acceleration = 1 / (part_serielle + (1 - part_serielle) / unites)
    print(unites, "unités :", round(acceleration, 2))
# Changez la part sérielle en 0.5 et relancez : le plafond baisse.

Le labo calcule la même formule

Le script amdahl.py du labo calcule ce tableau pour trois parts sérielles : 10 %, 25 % et 50 %, avec 1, 2, 4 et 8 unités. Il ne mesure aucun temps : c’est la formule, donc il affiche la même chose à chaque fois.

Le script affiche des mots en anglais : « workers » veut dire unités de calcul, et « percent » veut dire pour cent.

Lancer le tableau d’Amdahl du labo

Commande
docker exec jupyter python3 steps/amdahl.py

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Exemple : ce que le script affiche

Part sérielle1 unité2 unités4 unités8 unités
10 %1,01,823,084,71
25 %1,01,62,292,91
50 %1,01,331,61,78

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

L’accélération a un plafond

Même avec un nombre d’unités sans fin, la partie sérielle dure toujours autant. Le plafond est donc 1 divisé par s : 10,0 pour 10 %, 4,0 pour 25 %, 2,0 pour 50 %.

L’efficacité est l’accélération divisée par n. Avec 8 unités et 10 % de partie sérielle, elle vaut 4,71 / 8, soit 0,59. Chaque unité est utile un peu plus de la moitié du temps.

Une erreur fréquente

Attention

On croit souvent que 8 unités de calcul rendent le travail 8 fois plus rapide. C’est vrai seulement si rien ne doit se faire dans l’ordre. Dès qu’une partie reste sérielle, elle fixe un plafond : ajoutez des unités seulement si le gain restant en vaut le prix.

À propos de ce labo et de sa source: Lab de calcul parallèle : comment pense un GPU, sans GPU, dans JupyterLab

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.