Amdahl törvénye

Gene Amdahl 1967-ban fogalmazta meg azt a megfigyelését, ami az adott programkód párhuzamosítására nézve irányadó adattal szolgál a teoretikusan elérhető maximális sebességnövekedésre vonatkozóan. Az IBM-nél is dolgozó szakember gyakorlatilag egy képlettel állt elő, amit igen nehéz szöveges formába önteni, így a közérthetőség érdekében a példákkal való szemléltetés a legjobb módszer.

Gene Amdahl
Gene Amdahl

Az alábbi képletben a P jelenti a programkód párhuzamosítható részét, míg az N a processzormagok számát. Az S lényegében egy irányadó adat lesz arra vonatkozóan, hogy a programkód párhuzamosítható részeit figyelembe véve a megcélzott mennyiségű processzorral a program mekkora gyorsulásra tehet szert elméletben. Ez első olvasásra valószínűleg idegenül hat, de a példák mellett már érthető lesz a lényege.

Tegyük fel, hogy az egész kód szekvenciális, vagyis nincs párhuzamosítható rész. Ekkor nyilván csak egyetlen processzormagon fog futni, de a megcélzott hardver legyen nyolcmagos. Nyilván ezt még számolni sem érdemes, csupán a példa kedvért részletezzük. A fenti képletbe behelyettesítve az értékeket az alábbi számítás jön ki, és az S értéke 1 lesz, vagyis hiába van nyolcmagos processzorunk, akkor is csak egyetlen magon fog futni a program.

Ennek inverze, ha a teljes kód párhuzamosítható, így elvben a nyolc processzormag kihasználása maximális lesz. Az adatok behelyettesítése után ki is jön ez az eredmény, így a képlet megint jól vizsgázott.

A két végletet persze csak az ellenőrzés érdekében használtuk, így álljon itt egy tényleg érdekes példa. Legyen a kód 90%-a párhuzamosítható, és természetesen maradjon a nyolcmagos processzor is. Ebben az esetben a gyorsulás elméleti értéke kerekítve 4,706-szoros lesz, ami az alábbi számítással jön ki.

A példák után bátran lehet számolni. A gyakorlat szempontjából elmondható, hogy a lehetséges gyorsítás mértéke mindig kisebb, mint egy konstans érték, ami igen kedvezőtlen a programkód párhuzamosítására vonatkozóan. Ha a programkód 95%-a párhuzamosítható, akkor a maximális elérhető gyorsulás elméletben hússzoros lehet függetlenül attól, hogy hány processzormag dolgozik a feladaton.

Amdahl törvénye viszont nem veszi számításba, hogy a megoldandó feladatok mérete az idő előrehaladtával növekedhet, amire a Gustafson-Barsis-törvény reagál.

A témához extra adalék, hogy az Intel korábban egy érdekes megfigyelést tett Amdahl törvényével kapcsolatban. A cég szerint ha az algoritmusban előfordul nem párhuzamosítható programrész, akkor az már képtelen maximális processzorkihasználást elérni két mag esetén, de ettől még gyorsulni fog három, vagy több mag használata mellett.

Hirdetés