Amdahlin laki ( englanniksi Amdahlin laki , joskus myös Amdahl's Law - Ware ) - havainnollistaa laskentajärjestelmän suorituskyvyn kasvun rajoittamista laskimien määrän lisääntyessä . Gene Amdahl muotoili lain vuonna 1967 havaittuaan rajoituksen tuottavuuden kasvulle laskelmien rinnakkaisvaiheessa , mikä on olemukseltaan yksinkertainen, mutta sisällöltään ylitsepääsemätön : ”Jos tehtävä on jaettu useaan osaan, sen kokonaisaika suoritus rinnakkaisjärjestelmässä ei voi olla lyhyempi kuin hitaan fragmentin suoritusaika" [1]. Tämän lain mukaan ohjelman suorittamisen kiihtyvyys, joka johtuu sen käskyjen rinnakkaissuunnista laskurijoukossa, on rajoitettu aika, joka tarvitaan sen peräkkäisten käskyjen suorittamiseen.
Olkoon tarpeen ratkaista jokin laskennallinen ongelma. Oletetaan, että sen algoritmi on sellainen, että osuus laskelmien kokonaismäärästä voidaan saada vain peräkkäisillä laskelmilla, ja vastaavasti osuus voidaan ihanteellisesti rinnastaa (eli laskenta-aika on kääntäen verrannollinen mukana olevien solmujen lukumäärään ). Tällöin prosessorien laskentajärjestelmällä saavutettava kiihtyvyys yhden prosessorin ratkaisuun verrattuna ei ylitä arvoa
Taulukosta näkyy, kuinka monta kertaa nopeammin ohjelma suoritetaan prosessoreita käytettäessä peräkkäisten laskutoimitusten osuudella.
\ | kymmenen | 100 | 1000 |
---|---|---|---|
0 | kymmenen | 100 | 1000 |
kymmenen % | 5.263 | 9.174 | 9.910 |
25 % | 3,077 | 3,883 | 3,988 |
40 % | 2.174 | 2,463 | 2,496 |
Taulukko osoittaa, että vain algoritmi, joka ei sisällä peräkkäisiä laskelmia ollenkaan ( ), mahdollistaa lineaarisen suorituskyvyn kasvun järjestelmän tietokoneiden määrän kasvaessa. Jos peräkkäisten laskelmien osuus algoritmissa on 25%, prosessorien lukumäärän lisääminen 10:een antaa 3,077-kertaisen nopeuden ja prosessorien määrän lisääminen 1000:een antaa 3,988-kertaisen nopeuden.
Tästä on myös selvää, että peräkkäisten laskelmien osuudella kokonaissuorituskyvyn lisäys ei voi ylittää . Joten jos puolet koodista on peräkkäistä, kokonaisvahvistus ei koskaan ylitä kahta.
Amdahlin laki osoittaa, että laskentatehokkuuden kasvu riippuu ongelma-algoritmista ja on ylhäältä rajoitettu mille tahansa ongelmalle . Ei jokaisessa tehtävässä ole järkevää lisätä prosessorien määrää tietokonejärjestelmässä.
Lisäksi, jos otamme huomioon laskentajärjestelmän solmujen väliseen tiedonsiirtoon tarvittavan ajan, niin laskenta-ajan riippuvuus solmujen lukumäärästä on minimissään . Tämä rajoittaa laskentajärjestelmän skaalautuvuutta , eli tarkoittaa, että jostain pisteestä lähtien uusien solmujen lisääminen järjestelmään lisää ongelman laskenta-aikaa.