Calculateur de la loi d’Amdahl
Données
| Part parallélisable | 95 % |
|---|---|
| Processeurs | 16 |
Calculateur de la loi d’Amdahl
Estimer l’accélération maximale d’un programme obtenue par parallélisation à l’aide de la loi d’Amdahl, à partir de la fraction parallélisable du travail et du nombre de processeurs.
Données
Charge de travail
Résultats
Saisissez une valeur pour afficher les résultats.
Accélération
Efficacité
La loi d’Amdahl
La loi d’Amdahl prédit de combien une tâche de taille fixe peut s’exécuter plus vite lorsqu’une partie en est exécutée en parallèle sur plusieurs processeurs. Elle répond à une question que tout ingénieur rencontre lorsqu’il fait passer un logiciel à l’échelle sur davantage de cœurs : si seule une partie du travail peut être parallélisée, quelle est l’accélération réaliste, et à partir de quel point ajouter du matériel cesse-t-il d’aider ? Le calculateur prend la fraction parallélisable du travail et un nombre de processeurs, puis renvoie l’accélération obtenue, le plafond théorique et l’efficacité parallèle.
Le goulet d’étranglement séquentiel
La plupart des programmes comportent un mélange de travaux. Certaines parties — itérations indépendantes d’une boucle, rendu de tuiles d’image distinctes, traitement d’enregistrements séparés — peuvent s’exécuter simultanément. D’autres parties — lecture d’un fichier de configuration, construction d’une structure de données dont tout le reste dépend, étape finale de réduction — doivent s’exécuter en séquence. Les parties séquentielles ne peuvent pas être accélérées par l’ajout de processeurs ; elles fixent donc un plancher au temps d’exécution total.
La loi d’Amdahl rend cela précis. Soit la fraction du temps d’exécution initial qui est parallélisable et la fraction séquentielle. Avec processeurs, la part parallèle se termine en du temps initial, tandis que la part séquentielle prend toujours . L’accélération globale est le temps initial divisé par le nouveau temps :
Le plafond
À mesure que croît, le terme tend vers zéro, mais le terme séquentiel reste inchangé. Le passage à la limite donne l’accélération maximale que le programme peut atteindre :
Un programme parallélisable à 95 % ne peut jamais dépasser une accélération de 20×, quel que soit le nombre de processeurs qu’on lui consacre. Un programme parallélisable à 50 % plafonne à 2×. C’est pourquoi réduire la fraction séquentielle — et pas seulement acheter davantage de cœurs — constitue souvent l’optimisation à plus fort levier.
Exemple chiffré
Supposons que 95 % d’une tâche soit parallélisable et que vous l’exécutiez sur 16 processeurs. L’accélération vaut :
S=(1−0,95)+160,951=0,05+0,0593751=0,1093751≈9,14Ainsi, 16 processeurs offrent une accélération d’environ 9,1× — bien en deçà d’un 16× parfait. Le plafond théorique est ici de , et l’efficacité parallèle vaut , ce qui signifie que près de la moitié de la capacité de calcul ajoutée est perdue à cause du goulet d’étranglement séquentiel.
Pourquoi l’efficacité compte
L’efficacité parallèle, , traduit la qualité de l’utilisation des processeurs supplémentaires. Une efficacité proche de 100 % indique un passage à l’échelle quasi linéaire ; une efficacité qui chute rapidement quand augmente signale que la fraction séquentielle domine et que davantage de matériel offre un mauvais rapport qualité-prix. La loi d’Amdahl décrit le passage à l’échelle fort — une charge de travail fixe sur davantage de processeurs. Lorsque la charge de travail elle-même croît avec le matériel, c’est la Calculateur de la loi de Gustafson, plus optimiste, qui s’applique.
Considérez la fraction parallélisable comme une estimation : elle se mesure généralement par profilage et varie souvent avec la taille du problème et le matériel, de sorte que l’accélération prédite est un repère du comportement attendu plutôt qu’une garantie.
Questions fréquentes (FAQ)
Qu’est-ce que la loi d’Amdahl ?
La loi d’Amdahl, formulée par Gene Amdahl en 1967, donne l’accélération théorique d’une tâche de taille fixe lorsqu’une partie en est parallélisée. Si une fraction p du travail peut s’exécuter en parallèle sur N processeurs et que la part restante 1 − p doit s’exécuter de manière séquentielle, l’accélération globale vaut S = 1 / ((1 − p) + p / N).
La part séquentielle impose un plafond infranchissable : quel que soit le nombre de processeurs ajoutés, le programme ne peut jamais s’exécuter plus de 1 / (1 − p) fois plus vite que l’original.
Pourquoi l’ajout de processeurs offre-t-il des rendements décroissants ?
À mesure que le nombre de processeurs augmente, la part parallèle du travail tend vers un temps nul, tandis que la part séquentielle reste constante. Une fois que la part parallèle est faible par rapport à la part séquentielle, chaque processeur supplémentaire ne modifie quasiment plus le temps d’exécution total.
Par exemple, avec 90 % de travail parallélisable, passer de 1 à 16 processeurs donne une accélération d’environ 6,4×, mais passer de 16 à 1 024 processeurs n’atteint qu’environ 9,9× — encore en deçà du plafond de 10×.
En quoi la loi d’Amdahl diffère-t-elle de la loi de Gustafson ?
La loi d’Amdahl suppose une taille de problème fixe et se demande de combien le programme s’exécute plus vite avec davantage de processeurs — en mettant l’accent sur la limite imposée par le travail séquentiel.
La loi de Gustafson suppose que la taille du problème croît avec les processeurs disponibles (un budget temps fixe, une charge de travail plus grande) et prévoit une accélération qui passe mieux à l’échelle. Les deux sont exactes ; elles répondent à des questions différentes, celle du passage à l’échelle fort par rapport au passage à l’échelle faible.
Comment estimer la part parallélisable de mon programme ?
La part parallélisable se mesure plutôt qu’elle ne s’estime au jugé. Profilez le programme pour déterminer la proportion du temps d’horloge passée dans du code pouvant s’exécuter de manière concurrente par rapport au code devant s’exécuter en séquence (initialisation des entrées/sorties, chaînes de dépendances, synchronisation).
Vous pouvez aussi la déduire de deux temps d’exécution mesurés à des nombres de processeurs différents, en réarrangeant la formule de l’accélération. Considérez toute estimation isolée comme approximative, car la fraction parallélisable varie souvent avec la taille du problème et le matériel.
Recommandations
Calculateur de la loi de Gustafson
Estimer l’accélération à l’échelle d’une charge de travail parallèle à l’aide de la loi de Gustafson, où la taille du problème croît avec le nombre de processeurs au lieu de rester fixe.