Amdahlův zákon ( anglicky Amdahlův zákon , někdy též Amdahlův zákon - Ware ) - ilustruje omezení růstu výkonu výpočetního systému s nárůstem počtu kalkulaček . Gene Amdahl formuloval zákon v roce 1967, když objevil omezení růstu produktivity při paralelních výpočtech , které je v podstatě jednoduché, ale obsahově nepřekonatelné : „V případě, že je úkol rozdělen na několik částí, celková doba jeho provádění na paralelním systému nemůže být kratší než doba provádění pomalého fragmentu“ [1] . Podle tohoto zákona je zrychlení provádění programu v důsledku paralelizace jeho instrukcí na sadě kalkulaček omezeno časem potřebným k provedení jeho sekvenčních instrukcí.
Nechť je třeba vyřešit nějaký výpočetní problém. Předpokládejme, že jeho algoritmus je takový, že podíl z celkového množství výpočtů lze získat pouze sekvenčními výpočty, a proto lze podíl ideálně paralelizovat (to znamená, že doba výpočtu bude nepřímo úměrná počtu zapojených uzlů). ). Pak zrychlení, které lze získat na výpočetním systému procesorů, ve srovnání s jednoprocesorovým řešením nepřekročí hodnotu
Tabulka ukazuje, kolikrát rychleji bude program proveden s podílem sekvenčních výpočtů při použití procesorů.
\ | deset | 100 | 1000 |
---|---|---|---|
0 | deset | 100 | 1000 |
deset % | 5,263 | 9,174 | 9,910 |
25 % | 3,077 | 3,883 | 3,988 |
40 % | 2,174 | 2,463 | 2,496 |
Tabulka ukazuje, že pouze algoritmus, který vůbec neobsahuje sekvenční výpočty ( ), umožňuje získat lineární nárůst výkonu s nárůstem počtu počítačů v systému. Pokud je podíl sekvenčních výpočtů v algoritmu 25 %, pak zvýšení počtu procesorů na 10 způsobí zrychlení 3,077krát a zvýšení počtu procesorů na 1000 způsobí zrychlení 3,988krát.
Odtud je také zřejmé, že při podílu sekvenčních výpočtů nemůže celkový nárůst výkonu překročit . Pokud je tedy polovina kódu sekvenční, pak celkový zisk nikdy nepřekročí dvě.
Amdahlův zákon ukazuje, že zvýšení výpočetní účinnosti závisí na algoritmu problému a je shora omezeno pro jakýkoli problém s . Ne pro každý úkol má smysl zvyšovat počet procesorů v počítačovém systému.
Pokud navíc vezmeme v úvahu čas potřebný pro přenos dat mezi uzly výpočetního systému, pak bude mít závislost doby výpočtu na počtu uzlů minimální . To omezuje škálovatelnost výpočetního systému, to znamená, že od určitého okamžiku přidání nových uzlů do systému prodlouží čas na výpočet problému.