Qu'est-ce que la loi d'Amdahl ?
ĂnoncĂ©e en 1967 par l'architecte informatique Gene Amdahl, la loi d'Amdahl prĂ©dit l'accĂ©lĂ©ration thĂ©orique maximale d'une tĂąche lorsqu'une partie seulement de celle-ci peut ĂȘtre parallĂ©lisĂ©e. Pierre angulaire du calcul parallĂšle, elle aide les ingĂ©nieurs Ă fixer des attentes rĂ©alistes avant d'investir dans davantage de processeurs, de cĆurs ou de threads.
Comment utiliser ce calculateur
Renseignez deux valeurs : la fraction parallĂšle (p) â la proportion du programme (comprise entre 0 et 1) qui peut s'exĂ©cuter en parallĂšle â et le facteur d'accĂ©lĂ©ration (s), gĂ©nĂ©ralement le nombre de processeurs ou de cĆurs appliquĂ©s Ă cette partie parallĂšle. Le calculateur affiche alors l'accĂ©lĂ©ration globale, l'accĂ©lĂ©ration thĂ©orique maximale et l'efficacitĂ© parallĂšle.
La formule expliquée
L'équation s'écrit $$\text{Accélération} = \frac{1}{(1 - p) + \dfrac{p}{s}}$$ Le terme \((1 - p)\) correspond à la fraction séquentielle, impossible à accélérer. à mesure que \(s\) devient trÚs grand, \(p/s\) tend vers zéro : l'accélération plafonne donc à \(1/(1 - p)\). C'est pourquoi un programme parallÚle à 90 % ne pourra jamais aller plus de 10à plus vite, quel que soit le nombre de processeurs ajoutés.
Exemple concret
Supposons que 90 % d'un programme soit parallélisable (\(p = 0{,}9\)) et que vous utilisiez 4 processeurs (\(s = 4\)). Le dénominateur vaut alors $$(1 - 0{,}9) + \frac{0{,}9}{4} = 0{,}1 + 0{,}225 = 0{,}325$$ L'accélération est de \(1 / 0{,}325 \approx 3{,}08\times\). L'accélération maximale possible atteint \(1 / 0{,}1 = 10\times\), et l'efficacité s'élÚve à \(3{,}08 / 4 \approx 76{,}9\,\%\).
Interprétation de votre résultat
L'accĂ©lĂ©ration globale est ce que vous obtenez rĂ©ellement avec le nombre de processeurs \(s\) que vous avez saisi â par exemple, un rĂ©sultat de 4,71Ă signifie que le programme parallĂ©lisĂ© s'exĂ©cute environ 4,71 fois plus rapidement que la version monoprocesseur. L'accĂ©lĂ©ration maximale, \(1/(1-p)\), est le plafond absolu que vous approcheriez avec infiniment de processeurs. L'Ă©cart entre les deux vous indique combien d'espace vous reste : si votre accĂ©lĂ©ration globale est dĂ©jĂ proche du maximum, l'ajout de matĂ©riel aidera Ă peine.
L'efficacitĂ© rĂ©pond Ă la question « Ă quel point j'utilise bien les processeurs que je paye ? » Une efficacitĂ© proche de 100 % signifie que chaque processeur contribue pratiquement Ă une unitĂ© complĂšte d'accĂ©lĂ©ration â une excellente utilisation des ressources. Une faible efficacitĂ© (disons, moins de 30 %) signifie que la plupart des processeurs sont inactifs ou attendent la partie sĂ©rie, vous payez donc pour du matĂ©riel qui fait peu de travail utile.
La fraction sĂ©rie \(1-p\) est la limite dĂ©cisive. MĂȘme une petite fraction sĂ©rie limite fortement les performances : Ă \(p=0,95\) le plafond n'est que de 20Ă, donc au-delĂ d'environ 16â32 processeurs, chaque nouveau processeur ajoute presque rien. Une rĂšgle pratique est d'arrĂȘter d'ajouter des processeurs une fois que l'efficacitĂ© baisse en dessous de votre seuil acceptable (souvent 50â70 % pour un travail sensible aux coĂ»ts), car au-delĂ de ce point vous dĂ©pensez de l'argent pour des gains qui s'amenuisent. Pour augmenter le plafond, vous devez rĂ©duire la fraction sĂ©rie elle-mĂȘme â les modifications algorithmiques qui augmentent \(p\) rapportent gĂ©nĂ©ralement beaucoup plus que simplement ajouter des cĆurs.
Termes clés et variables
- Fraction parallĂšle (\(p\)) â la proportion du travail du programme qui peut ĂȘtre exĂ©cutĂ©e en parallĂšle, exprimĂ©e en nombre dĂ©cimal entre 0 et 1. Une valeur de 0,9 signifie que 90 % de la charge de travail peut ĂȘtre rĂ©partie entre les processeurs.
- Fraction sĂ©rie (\(1-p\)) â la portion qui doit s'exĂ©cuter sĂ©quentiellement sur un seul processeur et ne peut pas ĂȘtre accĂ©lĂ©rĂ©e par parallĂ©lisation. Cette fraction fixe la limite supĂ©rieure absolue sur l'accĂ©lĂ©ration globale.
- AccĂ©lĂ©ration de la partie parallĂšle (\(s\)) â le facteur par lequel la portion parallĂ©lisable est accĂ©lĂ©rĂ©e, gĂ©nĂ©ralement Ă©gal au nombre de processeurs ou de cĆurs qui y sont appliquĂ©s.
- AccĂ©lĂ©ration globale â le rapport du temps d'exĂ©cution monoprocesseur au temps d'exĂ©cution parallĂšle, \(1/\big((1-p)+p/s\big)\). C'est le gain de performance dans le monde rĂ©el.
- AccĂ©lĂ©ration maximale â la limite thĂ©orique \(1/(1-p)\) atteinte Ă mesure que \(s\) croĂźt sans limite, dĂ©terminĂ©e uniquement par la fraction sĂ©rie.
- EfficacitĂ© parallĂšle â accĂ©lĂ©ration globale divisĂ©e par le nombre de processeurs, \(\text{AccĂ©lĂ©ration}/s\), exprimĂ©e en pourcentage ; elle mesure l'efficacitĂ© avec laquelle chaque processeur est utilisĂ©.
FAQ
Pourquoi ajouter des processeurs offre-t-il des gains décroissants ? Parce que la partie séquentielle devient le goulet d'étranglement. DÚs qu'elle prédomine, les processeurs supplémentaires n'apportent presque plus rien.
Qu'est-ce que l'efficacité parallÚle ? C'est l'accélération divisée par le nombre de processeurs, exprimée en pourcentage : elle mesure à quel point chaque processeur est réellement exploité.
En quoi cela diffÚre-t-il de la loi de Gustafson ? La loi d'Amdahl suppose une taille de problÚme fixe ; la loi de Gustafson, elle, considÚre que le problÚme grandit avec le nombre de processeurs, ce qui donne des résultats plus optimistes.