Amdahlův zákon
Author
Albert FloresZávislost zvýšení výkonu na počtu procesorů, barvy značí objem zlepšované části systému v procentech Amdahlův zákon je pravidlo používané v informatice k vyjádření maximálního předpokládaného zlepšení systému poté, co je vylepšena pouze některá z jeho částí. Využívá se např. u víceprocesorových systémů k předpovězení teoretického maximálního zrychlení při přidávání dalších procesorů.
Zákon je pojmenován po americkém počítačovém architektovi Genu Amdahlovi. Poprvé byl představen na konferenci AFIPS Spring Joint Computer Conference v roce 1967.
Výpočet
Velikost zlepšení můžeme označit jako zrychlení S a bude nám určovat, kolikrát je běh úlohy s vylepšením rychlejší.
:S = \frac{\text{výkonnost při použití zlepšení}}{\text{výkonnost bez použití zlepšení}} = \frac{P_{\text{nový}}}{P_{\text{původní}}}
nebo také pomocí
:S = \frac{\text{doba výpočtu bez použití zlepšení}}{\text{doba výpočtu při použití zlepšení}} = \frac{T_{\text{původní}}}{T_{\text{nový}}}
Pokud chceme počítat celkový zisk na vylepšení určitých částí, můžeme použít následující postup:
Nejdříve definujeme proměnné
:F_E = \frac{\text{původní doba výpočtu zlepšené části}}{\text{původní celková doba výpočtu}} \le 1 :S_E = \frac{\text{původní doba výpočtu zlepšené části úlohy}}{\text{doba výpočtu zlepšené části úlohy}} > 1
poté můžeme spočítat dobu výpočtu po zlepšení
:T_{\text{po zlepšení}} = T_{\text{před zlepšením}} * ((1 - F_E) + \frac{F_E}{S_E})
celkové zrychlení S poté můžeme počítat jako
:S_{\text{celkové}} = \frac{T_{\text{před zlepšením}}}{T_{\text{po zlepšení}}} = \frac{1}{(1 - F_E) + \frac{F_E}{S_E}}. Procentuální zlepšení získáme takto: :\text{Zlepšení} (%) = 100 \left( 1 - \frac{1}{S_{\text{celkové}}}\right)= 100 \left( F_E - \frac{F_E}{S_E}\right).
Příklady
Dílčí zrychlení
Předpokládejme, že výpočet trvá 30 % času, zbytek času je nevyužit či se čeká na I/O. Dále předpokládejme, že výpočet můžeme 5× zrychlit. Jaká bude celková hodnota zrychlení?
:F_E = 0{,}3 :S_E = 5 :S_{\text{celkové zrychlení}} = \frac{1}{(1 - 0{,}3) + \frac{0{,}3}{5}} = \frac{1}{0{,}76} \doteq 1{,}316 :\text{Zlepšení} = 0,3 - 0,06 = 0,24.
Z výpočtu je vidět, že systém bude zrychlen o 24 %.
Paralelizace části výpočtu
Pokud například při výpočtu nějakého problému lze 12 % tohoto výpočtu urychlit paralelním zapojením použitých procesorů (a zbylých 88 % se bude dále řešit sériově), je podle Amdahlova zákona maximální možné zrychlení vylepšené verze (tedy při počtu procesorů blížících se limitně nekonečnu) rovno 1/(1 − 0,12) = 1,136. Zlepšení bude (0,12 − 0).
Tedy při rozdělení sériová část - paralelní část v poměru 88:12 lze přidáváním dalších procesorů docílit zrychlení jen o oněch 12 %, neboť sériovou část nezrychlujeme a zůstane stejná.