Амдалов закон
Амдалов закон, још познат као и Амдалов аргумент, се користи да се пронађе максимално очекивано побољшање свеукупног система, када се побољша само један део система. Често се користи у паралелној обради да би се предвидео теоретски максимално убрзање при коришћењу више процесора. Закон је добио име по рачунарском архитекти Џи̑ну Амдалу (Gene Amdahl). Закон је представљен у америчкој федерацији друштва за обрађивање података (енгл. American Federation of Information Processing Societies, AFIPS) на „Spring Joint“ рачунарској конференцији 1967.

Убрзање програма, који користи више процесора у паралелном окружењу, је ограничен временом које је потребно да се обради секвенцијални део програма. На пример, ако је програму потребно 20 сати коришћења једног језгра, и ако се одређени део програма (коме треба сат времена да се изврши) не може паралелизовати, док се осталих 95% (19 сати) може паралелизовати, онда, без обзира на то колико је процесора посвећено паралелном извршавању програма, минимално време извршавање не може бити мање од једног сата. Одатле је убрзање ограничено на највише 20 пута веће.

Дефиниција 
Дато нам је:
 , број нити извршавања
 , део алгоритма који је строго серијалан

Време , које је потребно неком алгоритму да се заврши када се извршава на  нити, одговара:

Дакле, теоретско убрзање које се може добити извршавањем алгоритма на систему који је способан да изврши  нити је:

Опис 
Амдалов закон је модел за везу између очекиваног убрзања паралелне имплементације неког алгоритма и алгоритма који се извршава серијално, под претпоставком да величина проблема остаје иста при паралелизацији. На пример, ако за један проблем, алгоритам паралелно имплементиран ради 12% операција произвољном брзином (док осталих 88% операција није паралелизовано), Амдалов закон тврди да је максимално убрзање паралелизованог алгоритма  пута веће од алгоритма који није паралелно импплементиран.

Технички, закон се бави убрзањем које се остварује од побољшања до израчунавања које утиче на размеру P тог израчунавања где побољшање има убрзање S. На пример, ако 30% израчунавања може бити предмет убрзања, P ће бити 0,3. Ако побољшање учини погођени део дупло бржим, S ће бити 2. Амдалов закон тврди да ће укупно убрзање бити:

Да би видели како је ова формула изведена, претпоставимо да је време извршавања старог извршавања било 1 (за неку јединицу времена). Време извршавања новог извршавања ће бити дужине дела који није побољшан (1 − P) плус дужине дела колико треба побољшаном делу да се изврши. Време које је потребно да се изврши побољшани део једнак је претходној дужини времена извршавања овог дела, подељеног убрзањем. Тиме добијамо дужину времена побољшаног дела P/S. Коначно убрзање се рачуна дељењем старог времена извршавања, новим временом извршавања, које се израчунава формулом горе.

Још један пример овога: дат нам је секвенцијалан задатак који се дели на четири узастопна дела: P1, P2, P3 и P4 који се извршавају, процентуално, 11%, 18%, 23% и 48%, редом. Онда нам је речено да P1 не убрзава (тако да је S1 = 1) док P2 убрзава 5 пута, P3 убрзава 20 пута и P4 убрзава 1.6 пута. Коришћењем формуле
P1/S1 + P2/S2 + P3/S3 + P4/S4, видимо да је ново секвенцијално време извршавања:

или мало мање од  тј. почетног времена извршавања. Коришћењем формуле , укупан добитак на убрзању је 1 / 0,4575 = 2,186, или мало више него дупло веће од почетне брзине. Приметимо како убрзања од 20 и 5 пута немају пуно ефекта на укупну брзину када P1 (11%) не убрзава, а P4 (48%) убрзава само 1.6 пута.

Паралелизација 
У случају паралелелизације, Амдалов закон тврди да ако је P део програма који се може учинити паралелним (тј. може имати корист од паралелизације), и ако је 1 − P део који се не може паралелизовати (остаје серијски), онда максимално убрзање, које се може постићи коришћењем N процесора, је:

.

У граници, ако N тежи бесконачности, максимално убрзање тежи 1 / (1 − P). У пракси, однос перформансе и цене пада драстично како се N повећава једном када има и најмања компонента (1 − P).

Као пример, ако је P 90%, онда је 1 − P 10% и проблем се може убрзати највише 10 пута, без обзира на то колика је вредност N. Због тога је паралелна обрада корисна само за, или мале бројеве процесора, или проблеме који имају јако велику вредност P (такозвани неометано паралелни проблеми). Велики део вештине паралелног програмирања се састоји од покушаја да се смањи компонента 1 – P на што мању вредност.

P се може проценити коришћењем измереног убрзања (SU) на одређеном броју процесора (NP) коришћењем:

.

P, процењено на овај начин, се може користити у Амдаловом закону да би се предвидело убрзање за другачији број процесора.

Веза са законом опадајућих повратних вредности 
Амдалов закон се често спаја са законом опадајућих повратних вредности, с обзиром само на специјалан случај када применом Амдаловог закона, демонстрирамо закон опадајућих повратних вредности. Ако се оптимално изабере шта жели да се побољша (у смислу остваривања убрзања), онда се могу видети монотона опадања неких побољшања док се нека друга још више побољшавају. Међутим, ако се избор изврши неоптимално, после побољшања мање оптималних компоненти и прелажења на побољшање више оптималних компоненти, могу се видети повећања побољшања. Често је рационално побољшати систем у редоследу који није оптималан зато што је нека побољшања теже достићи или зато што захтевају више времена.

Амдалов закон представља закон опадајућих повратних вредности ако се узима у обзир која сорта повратних вредности се добија додавањем више процесора некој машини ако се покреће рачунање фиксне величине које ће искористити све доступне процесоре до максимума. Сваки нови процесор који се дода систему ће додати мање снаге према граници .

Ова анализа занемарује друге потенцијалне случајеве где се јављају уска грла (као што су пропусни опсег меморије и пропусни опсег улаза/излаза) ако се не скалира са бројем процесора. Међутим, узимајући у обрзир ове случајеве уских грла би тежило да, још детаљније, демонстрира, опадајуће повратне вредности додавањем само процесора.

Убрзање у секвенцијалном програму 

Максимално убрзање у побољшаном секвенцијалном програму, где је неки део убрзан  пута је ограничено неједнакошћу:

где је  () део времена (пре побољшања) потрошено у делу које није побољшано. На пример (видети слику десно:)

 Ако учинимо део B пет пута бржим (), , , и , онда
 
 Ако учинимо део А два пута бржим (), , , и , онда
 

Стога, дупло бржи А део је бољи случај него пет пута бржи B део. Проценат побољшања у брзини се рачуна:

 Побољшањем дела А дупло, добија се повећање укупне брзине програма за 1,6 пута, што значи да је програм бржи за 37,5%.
 Међутим, побољшањем дела B пет пута, што захтева и више напора, ће резултовати да укупан програм буде само 20% бржи.

Однос са Густафсоновим законом 
Џон Л. Густафсон је 1988. године истакао Густафсонов закон: људи обично нису заинтересовани за решавање фиксних проблема у најкраћем временском року (као што описује Амдалов закон), већ ће радије решавати комплексније проблеме (тј. најпрецизнију могућу апроксимацију) у фиксном „разумном“ временском периоду. Ако се не-паралелизовани део проблема поправи, или ако расте јако споро са величином проблема (тј. O(log n)), онда додатни процесори могу повећати величину могућег проблема без икаквих ограничења.

Види још 
 Муров закон
 Густафсонов закон

Референце

Референце

Спољашње везе 

 Cases where Amdahl's law is inapplicable
 Oral history interview with Gene M. Amdahl Charles Babbage Institute, University of Minnesota. Амдал дискутује свој дипломски рад и свој WISC дизајн на универзитету у Висконсину. Дискутује своју улогу у дизајнирању неколико рачунара за IBM укључујући STRETCH, IBM 701, и IBM 704. Дискутује свој рад са Натанијелом Рохестером и IBM-овим менаџментом процеса дизајнирања. Помиње рад са Ramo-Wooldridge, Aeronutronic, и Computer Sciences Corporation
 Reevaluating Amdahl's Law
 A simple interactive Amdahl's Law calculator
 "Amdahl's Law" by Joel F. Klein, Wolfram Demonstrations Project, 2007.
 Amdahl's Law in the Multicore Era
 Amdahl's Law explanation
 Blog Post: "What the $#@! is Parallelism, Anyhow?"
 Amdahl's Law applied to OS system calls on multicore CPU

Паралелно рачунарство
Паралелна обрада
Амдалов закон , још познат као и Амдалов аргумент , се користи да се пронађе максимално очекивано побољшање свеукупног система , када се побољша само један део система . Често се користи у паралелној обради да би се предвидео теоретски максимално убрзање при коришћењу више процесора . Закон је добио име по рачунарском архитекти Џи̑ну Амдалу ( Gene Amdahl ) . Закон је представљен у америчкој федерацији друштва за обрађивање података ( енгл . American Federation of Information Processing Societies , AFIPS ) на „ Spring Joint “ рачунарској конференцији Убрзање програма , који користи више процесора у паралелном окружењу , је ограничен временом које је потребно да се обради секвенцијални део програма . На пример , ако је програму потребносати коришћења једног језгра , и ако се одређени део програма ( коме треба сат времена да се изврши ) не може паралелизовати , док се осталихсати ) може паралелизовати , онда , без обзира на то колико је процесора посвећено паралелном извршавању програма , минимално време извршавање не може бити мање од једног сата . Одатле је убрзање ограничено на највишепута веће . Дефиниција Дато нам је : , број нити извршавања , део алгоритма који је строго серијалан Време , које је потребно неком алгоритму да се заврши када се извршава на нити , одговара : Дакле , теоретско убрзање које се може добити извршавањем алгоритма на систему који је способан да изврши нити је : Опис Амдалов закон је модел за везу између очекиваног убрзања паралелне имплементације неког алгоритма и алгоритма који се извршава серијално , под претпоставком да величина проблема остаје иста при паралелизацији . На пример , ако за један проблем , алгоритам паралелно имплементиран ради операција произвољном брзином ( док осталих операција није паралелизовано ) , Амдалов закон тврди да је максимално убрзање паралелизованог алгоритма пута веће од алгоритма који није паралелно импплементиран . Технички , закон се бави убрзањем које се остварује од побољшања до израчунавања које утиче на размеру P тог израчунавања где побољшање има убрзање S . На пример , ако израчунавања може бити предмет убрзања , P ће бити3 . Ако побољшање учини погођени део дупло бржим , S ће бити Амдалов закон тврди да ће укупно убрзање бити : Да би видели како је ова формула изведена , претпоставимо да је време извршавања старог извршавања било( за неку јединицу времена ) . Време извршавања новог извршавања ће бити дужине дела који није побољшан− P ) плус дужине дела колико треба побољшаном делу да се изврши . Време које је потребно да се изврши побољшани део једнак је претходној дужини времена извршавања овог дела , подељеног убрзањем . Тиме добијамо дужину времена побољшаног дела P / S . Коначно убрзање се рачуна дељењем старог времена извршавања , новим временом извршавања , које се израчунава формулом горе . Још један пример овога : дат нам је секвенцијалан задатак који се дели на четири узастопна дела : P1 , P2 , P3 и P4 који се извршавају , процентуално , , , и , редом . Онда нам је речено да P1 не убрзава ( тако да је S1 =док P2 убрзавапута , P3 убрзавапута и P4 убрзава6 пута . Коришћењем формуле P1 / S1 + P2 / S2 + P3 / S3 + P4 / S4 , видимо да је ново секвенцијално време извршавања : или мало мање од тј. почетног времена извршавања . Коришћењем формуле , укупан добитак на убрзању је / 4575 =186 , или мало више него дупло веће од почетне брзине . Приметимо како убрзања одипута немају пуно ефекта на укупну брзину када P1 ) не убрзава , а P4 ) убрзава само6 пута . Паралелизација У случају паралелелизације , Амдалов закон тврди да ако је P део програма који се може учинити паралелним ( тј. може имати корист од паралелизације ) , и ако је− P део који се не може паралелизовати ( остаје серијски ) , онда максимално убрзање , које се може постићи коришћењем N процесора , је : . У граници , ако N тежи бесконачности , максимално убрзање тежи / − P ) . У пракси , однос перформансе и цене пада драстично како се N повећава једном када има и најмања компонента− P ) . Као пример , ако је P , онда је− P и проблем се може убрзати највишепута , без обзира на то колика је вредност N . Због тога је паралелна обрада корисна само за , или мале бројеве процесора , или проблеме који имају јако велику вредност P ( такозвани неометано паралелни проблеми ) . Велики део вештине паралелног програмирања се састоји од покушаја да се смањи компонента– P на што мању вредност . P се може проценити коришћењем измереног убрзања ( SU ) на одређеном броју процесора ( NP ) коришћењем : . P , процењено на овај начин , се може користити у Амдаловом закону да би се предвидело убрзање за другачији број процесора . Веза са законом опадајућих повратних вредности Амдалов закон се често спаја са законом опадајућих повратних вредности , с обзиром само на специјалан случај када применом Амдаловог закона , демонстрирамо закон опадајућих повратних вредности . Ако се оптимално изабере шта жели да се побољша ( у смислу остваривања убрзања ) , онда се могу видети монотона опадања неких побољшања док се нека друга још више побољшавају . Међутим , ако се избор изврши неоптимално , после побољшања мање оптималних компоненти и прелажења на побољшање више оптималних компоненти , могу се видети повећања побољшања . Често је рационално побољшати систем у редоследу који није оптималан зато што је нека побољшања теже достићи или зато што захтевају више времена . Амдалов закон представља закон опадајућих повратних вредности ако се узима у обзир која сорта повратних вредности се добија додавањем више процесора некој машини ако се покреће рачунање фиксне величине које ће искористити све доступне процесоре до максимума . Сваки нови процесор који се дода систему ће додати мање снаге према граници \ . Ова анализа занемарује друге потенцијалне случајеве где се јављају уска грла ( као што су пропусни опсег меморије и пропусни опсег улаза / излаза ) ако се не скалира са бројем процесора . Међутим , узимајући у обрзир ове случајеве уских грла би тежило да , још детаљније , демонстрира , опадајуће повратне вредности додавањем само процесора . Убрзање у секвенцијалном програму Максимално убрзање у побољшаном секвенцијалном програму , где је неки део убрзан пута је ограничено неједнакошћу : где је ( ) део времена ( пре побољшања ) потрошено у делу које није побољшано . На пример ( видети слику десно : ) Ако учинимо део B пет пута бржим ( ) , , , и , онда Ако учинимо део А два пута бржим ( ) , , , и , онда Стога , дупло бржи А део је бољи случај него пет пута бржи B део . Проценат побољшања у брзини се рачуна : Побољшањем дела А дупло , добија се повећање укупне брзине програма за6 пута , што значи да је програм бржи за5% . Међутим , побољшањем дела B пет пута , што захтева и више напора , ће резултовати да укупан програм буде само бржи . Однос са Густафсоновим законом Џон Л . Густафсон је године истакао Густафсонов закон : људи обично нису заинтересовани за решавање фиксних проблема у најкраћем временском року ( као што описује Амдалов закон ) , већ ће радије решавати комплексније проблеме ( тј. најпрецизнију могућу апроксимацију ) у фиксном „ разумном “ временском периоду . Ако се не-паралелизовани део проблема поправи , или ако расте јако споро са величином проблема ( тј. O( log n ) ) , онда додатни процесори могу повећати величину могућег проблема без икаквих ограничења . Види још Муров закон Густафсонов закон Референце Референце Спољашње везе Cases where Amdahl's law is inapplicable Oral history interview with Gene M . Amdahl Charles Babbage Institute , University of Minnesota . Амдал дискутује свој дипломски рад и свој WISC дизајн на универзитету у Висконсину . Дискутује своју улогу у дизајнирању неколико рачунара за IBM укључујући STRETCH , IBM и IBM Дискутује свој рад са Натанијелом Рохестером и IBM-овим менаџментом процеса дизајнирања . Помиње рад са Ramo-Wooldridge , Aeronutronic , и Computer Sciences Corporation Reevaluating Amdahl's Law A simple interactive Amdahl's Law calculator " Amdahl's Law " by Joel F . Klein , Wolfram Demonstrations Project , Amdahl's Law in the Multicore Era Amdahl's Law explanation Blog Post : " What the $ # @! is Parallelism , Anyhow ? " Amdahl's Law applied to OS system calls on multicore CPU Паралелно рачунарство Паралелна обрада