Amdahlův zákon

Zá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 = výkonnost při použití zlepšení výkonnost bez použití zlepšení = P nový P původní {\displaystyle 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 = doba výpočtu bez použití zlepšení doba výpočtu při použití zlepšení = T původní T nový {\displaystyle 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 = původní doba výpočtu zlepšené části původní celková doba výpočtu 1 {\displaystyle F_{E}={\frac {\text{původní doba výpočtu zlepšené části}}{\text{původní celková doba výpočtu}}}\leq 1}
S E = původní doba výpočtu zlepšené části úlohy doba výpočtu zlepšené části úlohy > 1 {\displaystyle 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 po zlepšení = T před zlepšením ( ( 1 F E ) + F E S E ) {\displaystyle 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 celkové = T před zlepšením T po zlepšení = 1 ( 1 F E ) + F E S E {\displaystyle 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:

Zlepšení ( % ) = 100 ( 1 1 S celkové ) {\displaystyle {\text{Zlepšení}}(\%)=100\left(1-{\frac {1}{S_{\text{celkové}}}}\right)} = 100 ( F E F E S E ) {\displaystyle =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 {\displaystyle F_{E}=0{,}3}
S E = 5 {\displaystyle S_{E}=5}
S celkové zrychlení = 1 ( 1 0 , 3 ) + 0 , 3 5 = 1 0 , 76 1,316 {\displaystyle S_{\text{celkové zrychlení}}={\frac {1}{(1-0{,}3)+{\frac {0{,}3}{5}}}}={\frac {1}{0{,}76}}\doteq 1{,}316}
Zlepšení = 0 , 3 0 , 06 = 0 , 24 {\displaystyle {\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á.

Odkazy

Reference

V tomto článku byl použit překlad textu z článku Amdahl's law na anglické Wikipedii.

Externí odkazy

  • Logo Wikimedia Commons Obrázky, zvuky či videa k tématu Amdahlův zákon na Wikimedia Commons
Pahýl
Pahýl
Tento článek je příliš stručný nebo postrádá důležité informace.
Pomozte Wikipedii tím, že jej vhodně rozšíříte. Nevkládejte však bez oprávnění cizí texty.