Qu'est-ce que la loi d'Amdahl ?
Énoncée en 1967 par l'architecte informatique Gene Amdahl, la loi d'Amdahl prédit le gain de vitesse théorique maximal d'une tâche lorsqu'une partie seulement de celle-ci peut être parallélisée. Pilier du calcul parallèle, elle aide les ingénieurs à déterminer s'il vaut la peine d'ajouter des processeurs, des cœurs ou des threads supplémentaires. L'idée centrale est que la portion séquentielle (non parallélisable) d'un programme finit toujours par limiter sa vitesse d'exécution, quelles que soient les ressources allouées à la portion parallèle.
Comment utiliser ce calculateur
Renseignez deux valeurs : la portion parallélisable de votre programme, exprimée en pourcentage (la part du travail répartissable entre plusieurs processeurs), et l'accélération de la partie parallèle, qui correspond généralement au nombre de processeurs ou de cœurs qui l'exécutent. Le calculateur affiche l'accélération globale, l'accélération théorique maximale dans l'hypothèse d'une accélération parallèle infinie, ainsi que l'efficacité parallèle.
La formule expliquée
L'équation s'écrit
$$\text{Acc\'el\'eration} = \dfrac{1}{(1 - p) + \dfrac{p}{s}}$$où p désigne la fraction parallèle (comprise entre 0 et 1) et s l'accélération appliquée à cette fraction. Le terme \((1 - p)\) représente la part séquentielle, impossible à accélérer. Lorsque s tend vers l'infini, l'accélération converge vers \(\dfrac{1}{1-p}\), le plafond absolu imposé par la portion séquentielle.
Exemple concret
Supposons que 90 % d'un programme soit parallélisable (\(p = 0{,}9\)) et que vous l'exécutiez sur 8 processeurs (\(s = 8\)). Le dénominateur vaut alors
$$(1 - 0{,}9) + \frac{0{,}9}{8} = 0{,}1 + 0{,}1125 = 0{,}2125$$soit une accélération de \(\dfrac{1}{0{,}2125} \approx 4{,}71\times\). Même avec un nombre infini de processeurs, l'accélération maximale n'atteint que \(\dfrac{1}{0{,}1} = 10\times\), ce qui illustre comment les 10 % de portion séquentielle plafonnent les performances.
Interprétation de vos résultats
La valeur d'accélération vous indique combien de fois plus rapidement le programme s'exécute avec \(s\) processeurs par rapport à une exécution sur un seul processeur. Une accélération de 4× signifie que la charge de travail parallélisée s'achève en un quart du temps initial. Comme la loi d'Amdahl suppose une taille de problème fixe, l'accélération est limitée par la fraction série \(1-p\) qui ne peut pas être accélérée.
Le plafond des processeurs illimités, \(1/(1-p)\), est l'accélération maximale réalisable avec un matériel illimité. Par exemple, si 95% du travail est parallèle, le plafond est \(1/(1-0.95) = 20\times\); même un million de cœurs ne peuvent pas dépasser 20×. C'est le chiffre unique le plus important pour la planification : il fixe la limite supérieure de tout investissement dans des processeurs supplémentaires.
L'efficacité parallèle mesure la façon dont les processeurs sont utilisés et est définie comme l'accélération divisée par le nombre de processeurs, \(\text{efficacité} = \text{Accélération}/s\). Une efficacité de 1,0 (100%) représente une mise à l'échelle linéaire parfaite ; en pratique, elle diminue quand vous ajoutez des cœurs. Par exemple, un code parallèle à 90% sur 8 cœurs donne une accélération de 4,71×, donc l'efficacité est \(4,71/8 \approx 59\%\) — chaque cœur supplémentaire effectue progressivement moins de travail utile.
Ajouter des processeurs cesse d'être rentable quand l'accélération marginale par cœur supplémentaire devient faible relativement à son coût et quand l'efficacité tombe en dessous d'un seuil acceptable (souvent 50–70% en pratique). Une fois que l'accélération approche de son plafond, du matériel supplémentaire n'apporte presque rien. Pour relever le plafond lui-même, vous devez réduire la fraction série — en parallélisant davantage l'algorithme ou en réduisant la synchronisation et les entrées/sorties — plutôt que d'acheter plus de cœurs. Notez également que la loi d'Amdahl ignore les frais généraux de communication et de coordination, donc les accélérations réelles sont généralement inférieures à ces maxima théoriques.
FAQ
Pourquoi doubler le nombre de processeurs ne double-t-il pas la vitesse ? Parce que la portion séquentielle s'exécute toujours à la même vitesse, quel que soit le nombre de processeurs : son temps de traitement devient alors le goulot d'étranglement dominant.
Qu'est-ce que l'efficacité parallèle ? Il s'agit de l'accélération divisée par le nombre de processeurs, exprimée en pourcentage — une mesure de la bonne exploitation des ressources ajoutées.
En quoi diffère-t-elle de la loi de Gustafson ? La loi de Gustafson part du principe que la taille du problème croît avec le nombre de processeurs, offrant souvent une perspective plus optimiste que le modèle à charge de travail fixe d'Amdahl.