PARALELNÍ PROCESY A PROGRAMOVÁNÍ 6 Analýza složitosti algoritmů - cena, ráce a efektivita Ing. Michal Bližňák, Ph.D. Zlín 2013 Tento studijní materiál vznikl za finanční odory Evroského sociálního fondu (ESF) a rozočtu české reubliky v rámci řešení rojektu: CZ 1.07/2.2.00/15.0463, MOD- ERNIZACE VÝUKOVÝCH MATERIÁLŮ A DIDAKTICKÝCH METOD
OBSAH 1 Obsah 1 Kvalitativní měřítka aralelizace algoritmu 3 1.1 Cena algoritmu....................................... 3 1.2 Paralelní ráce....................................... 3 1.3 Efektivita algoritmu.................................... 3 1.3.1 Brentův simulační rinci............................. 5 1.3.2 Izoefektivita aralelního algoritmu........................ 5 1.3.3 Absolutně minimální aralelní čas........................ 7 1.3.4 Kar-Flattova metrika............................... 7 2 Příklad analýzy aralelního algoritmu 9 3 Kontrolní otázky 12
OBSAH 2 STRUČNÝ OBSAH PŘEDNÁŠKY Kvalitativní měřítka aralelizace algoritmu Příklad analýzy aralelního algoritmu MOTIVACE Analýza složitosti algoritmů umožňuje zjistit časové a amět ové charakteristiky jednotlivých algoritmů. Na základě těchto analýz lze určit vhodnost jednotlivých algoritmů ro řešení konkrétních úloh a také to, zda má smysl určitý algoritmus imlementovat. Tato kaitola ojednává o analýze časové a amět ové složitosti sekvenčních a aralelních algoritmů a o možnostech určení kvalitativních měřítek aralelních algoritmů. CÍL Naučit se stanovit cenu, ráci a efektivitu aralelní algoritmu a rozkoumat jeho škálovatelnost.
Kvalitativní měřítka aralelizace algoritmu 3 1 Kvalitativní měřítka aralelizace algoritmu Stanovením zrychlení aralelního algoritmu jeho analýza zdaleka nekončí. Dalšími důležitými měřítky kvality aralelizace je cena, ráce a zejména efektivita nového aralelního algoritmu. Vyjádřením a zkoumáním těchto měřítek lze zjistit, zda byla aralelizace algoritmu rovedena otimálně a účelně. Také je zaotřebí rozkoumat, zda je daný aralelní algoritmus dostatečně škálovatelný, tzn. zda lze měnit očet výočetních jednotek (CPU) odílejících se na výočtu odle otřeb tak, aby nebyla negativně ovlivněna jak cena, tak i efektivita aralelního algoritmu. Následující kaitoly oisují stanovení jednotlivých kvalitativních měřítek aralelizace a ukazují také další metody vhodné ke zjištění říčin její říadné neefektivnosti. 1.1 Cena algoritmu Cena aralelního algoritmu vyjadřuje jakých nákladů jsme museli vynaložit na dosažení konkrétního aralelního času a je definována jako Obecně lze říci, že C K (n, ) = Ω(SU K (n)) C K A (n) = C(n, ) = T (n, ) (1) Definice 1 Můžeme-li tvrdit, že C K (n, ) = O(SU K (n)), ak je aralelní algoritmus cenově otimální. 1.2 Paralelní ráce Práce aralelního algoritmu ředstavuje celkový očet aktivně racujících rocesorů ve všech krocích aralelního algoritmu. Označme t 0 = T (n, ), ak aralelní ráci definujeme jako W K A (n) = W (n, ) = N 1 + N 2 +... + N t0 (2) kde N i je očet aktivně racujících rocesorů v kroku i = 1, 2,..., t 0. Je zřejmé, že W (n, ) C(n, ), jelikož C(n, ) zahrnuje také zahálející rocesory. V raxi se ro určení kvality aralelního algoritmu uvádí síše C(n, ), rotože jeho hodnota lée reflektuje celkové vytížení aralelního systému. To je dáno tím, že zahálející rocesory není vždy možné z důvodu architektonického omezení aralelního systému uvolnit ro další využití a roto je hodnota W (n, ) říliš otimistická. Definice 2 Platí-li tvrzení, že W K (n, ) = O(SU K (n)), ak lze aralelní algoritmus ovažovat za racovně otimální. 1.3 Efektivita algoritmu Jednou z nejdůležitějších metrik kvality aralelního algoritmu je jeho efektivita, kterou lze cháat jako míru vytížení rocesorů. Efekticitu aralelního algoritmu označujeme jako nebo zjednodušeně a lze ji vyjádřit vztahem E K A (n) (3) E(n, ) (4)
Kvalitativní měřítka aralelizace algoritmu 4 Vztah 5 lze rozvinout jako E(n, ) = SU K (n) C K (n, ) (5) E(n, ) = SU K (n) S(n, ) T (n, ) S(n, ) C K = = 1 (6) (n, ) T (n, ) což znamená, že efektivitu aralelního algoritmu lze cháat také jako jeho zrychlení na rocesor a její hodnota bude vždy 1 (v ideální říadě = 1 ro aralelní algoritmy s lineárním zrychlením). Z toho vylývá, že algoritmus je cenově otimální má lineární zrychlení má konstantní efektivitu. Obecně lze v souladu s Amdahlovým efektem říci, že rostoucí velikost roblému n a ři zachování konstantní hodnoty očtu rocesorů má tendenci zvyšovat zrychlení aralelního algoritmu a tím také jeho efektivitu. Naoak, neúměrné zvyšování očtu rocesorů má za následek růst aralelní režie a tím také snížení zrychlení a efektivity. Tyické růběhy aralelního času, zrychlení a efektivity jsou zobrazeny na obrázku 1. Obrázek 1: Tyické růběhy T (n, ), E(n, ) a S(n, ) v závislosti na změně n Zdroje neefektivity aralelního algoritmu mohou být nedostatek užitečné ráce ro daný očet rocesorů, velké komunikační náklady v orovnání s výočetní složitostí, velká synchronizační režie, šatná distribuce ráce (nerovnoměrné rozdělení ráce) mezi rocesory. Neefektivitu aralelního algoritmu lze odstranit dvojím zůsobem: technologicky a algoritmicky. Technologický řístu zahrnuje oužití rychlejšího komunikačního HW, zmenšení SW komunikační režie, řekrývání komunikačních a výočetních oerací. Algoritmický řístu zahrnuje resektování škálovatelnosti roblému volnou vhodné granularity,
Kvalitativní měřítka aralelizace algoritmu 5 dobré statické maování algoritmu na aralelní architekturu, rovnoměrné statické rozdělení výočetní zátěže, vhodné ředřazování komunikačních oerací řed místa v rogramu, kde jsou vyměňovaná data otřeba. Je zřejmé, že využití algoritmického řístuu bude ve většině říadů výhodnější; náklady na úravu a otimalizaci aralelního algoritmu budou menší než náklady na úravu (ugrade) výočetního HW. Z algoritmických možností snížení neefektivity aralelního algoritmu se ak nejčastěji využívá možnosti vhodného škálování aralelního algoritmu. Škálovatelností aralelního algoritmu budeme rozumět jeho schonost řizůsobit se měnícímu očtu rocesorů nebo velikosti řešeného roblému ři udržení co nejleší efektivity. 1.3.1 Brentův simulační rinci V říadě, že náš aralelní algoritmus oužívá nerakticky velké množstvíá rocesorů, lze jeho škálováním sníži cenu a tím zvýšit jeho efektivitu. Je-li očet rocesorů menší než stueň aralelizmu a ředokládáme-li nízké komunikační režie, můžeme oužít Brentův simulační rinci, odle kterého nemůže mít simulace řádově horší ani ráci ani cenu. Věta 1 Uvažujme roblém K o velikosti n řešitelný v t aralelních krocích na rocesorech ři zanedbání komunikační režie. Necht m i je očet oerací v kroku i. Pak W (n, ) = t i=1 m i a stačí = max t i=1 m i rocesorů, čímž dostaneme C(n, ) = t = max t i=1 m it. Uvažujme rocesorový očítač M s < týmiž rocesory. Jestliže lze u M též ignorovat komunikační režie jako u K, lze tentýž výočet na M rovést v T (n, ) aralelních krocích, kde T (n, ) = W (n, )/ + t (7) Důkaz 1 Paralelní kroky se simulují ostuněm kdy každý i-tý krok, ve kterém je nutné rovést m i oerací, lze na M simulovat v m i / krocích. Celková doba simulace roto bude T (n, ) = t m i / = i 1 t (m i / ) + t = i=1 t (m i )/ + t = W (n, )/ + t (8) i=1 a dále W (n, ) = W (n, ) C(n, ) = T (n, ) W (n, ) + t = W (n, ) + C(n, ) (9) Význam Brentova simulačního rinciu sočívá v tvrzení, že nerakticky velké množství rocesorů lze libovolně snižovat, řičemž doba výočtu oroste nejvýše úměrně a celková ráce, cena i efektivita zůstávají řádově stejné. Zvolíme-li ro simulaci vhodný menší očet rocesorů, může ři zachování stejné ráce cena algoritmu dokonce klesnout, rotože budou oužité rocesory více vytíženy. U algoritmu, u nichž nelze zanedbat komunikační režie je toto zaotřebí brát v úvahu. 1.3.2 Izoefektivita aralelního algoritmu Jak již bylo zmíněno, ři návrhu aralelního algoritmu je ro udržení konstantní efektivity zaotřebí srávně volit granularitu, tj. musíme zvolit srávný oměr mezi očtem rocesorů a velikostí řešeného roblému n. K tomu nám může omoci tzv. izoefektivní metrika. Jedná se
Kvalitativní měřítka aralelizace algoritmu 6 o metriku škálovatelnosti aralelního systému, čili jeho schonosti zvyšovat výkon ři zvyšování očtu rocesorů. Z Amdahlova efektu vylývá, že zrychlení je rostoucí funkcí velikosti řešeného roblému n. Aby byla zachována konstantní efektivita E(n, ), ři rostoucím musí růst také n. Rychlost tohoto růstu lze vyjádřit omocí izoefektivní funkce. Uvažujme vztah mezi aralelním a sekvenčním časem algoritmu řešícím stejný roblém T (n, ) = T (n, 1) + κ(n, ) (10) kde T (n, ) je aralelní čas, T (n, 1) je sekvenční čas a κ(n, ) je celková aralelní režie. Paralelní čas ak lze vyjádřit jako T (n, ) = T (n, 1) + κ(n, ) Dosadíme-li vztah 11 do vztahu ro vyjádření zrychlení algoritmu, dostaneme S(n, ) SU(n) T (n, 1) T (n, ) T (n, ) T (n, 1) T (n, 1) + κ(n, ) Vyjádříme-li efektivitu algoritmu omocí vztahu 12, dostaneme (11) (12) E(n, ) S(n, ) Izoefektivní funkci lze oté odvodit následovně T (n, 1) T (n, 1) + κ(n, ) 1 1 + κ(n,) T (n,1) 1 1 + κ(n,) SU(n) (13) kde c je konstanta T (n, 1) E(n, )(T (n, 1) + κ(n, )) T (n, 1)(1 E(n, )) κ(n, )E(n, ) T (n, 1) E(n,) 1 E(n,) κ(n, ) T (n, 1) c κ(n, ) (14) c = E(n, ) 1 E(n, ) Z odvození 14 vylývá, že ři změně (a tím ádem i celkové aralelní režie) se musí změnit i n, aby latila daná nerovnice a efektivita zůstala zachována konstantní. To znamená, že změní-li se na, musí se změnit také n o násobek κ(n, ) κ(n,). Pro dobře škálovatelné aralelní algoritmy musí být tato změna minimální, rotože i jejich aralelní režie by měla být co nejnižší. Problém stanovení horní a dolní meze vhodného očtu rocesorů lze vyjádřit omocí izoefektivních funkcí ψ 1 a ψ 2. Definice 3 Necht je dána konstanta 0 < E 0 < 1. Pak ψ 1 je asymtoticky minimální funkce taková, že (15) n = Ω(ψ 1 ()) : E(n, ) E 0 (16) čili ψ 1 udává asymtoticky nejmenší instanci roblému, která je na daném očtu rocesorů řešitelná s konstantní efektivitou.
Kvalitativní měřítka aralelizace algoritmu 7 ψ 2 je asymtoticky maximální funkce taková, že n = O(ψ 2 (n)) : E(n, n ) E 0 (17) čili ψ 2 udává asymtoticky největší očet rocesorů, který ještě oskytuje řešení dané instance roblému s konstantní efektivitou. Funkce ψ 2 (n) je inverzní k funkci ψ 1 (). Menší (omalu rostoucí) funkce ψ 1 () říká, že systém je lée škálovatelný. Pro funkci ψ 2 (n) je tvrzení oačné. 1.3.3 Absolutně minimální aralelní čas Pro zjištění otimálního očtu rocesorů, které jsou schony roblém dané velikosti vyřešit v absolutně minimálním čase lze oužít následující ostu. Jak již bylo zmíněno výše a jak je atrné na obrázku 2, řidáváním nadměrného očtu rocesorů můžeme docílit nejen oklesu zrychlení, ale dokonce také rodlužování času řešení. Toho můžeme využít k tomu, abychom omocí derivace růběhu aralelního času nalezli otimální očet rocesorů ot oužitých ro řešení roblému dané velikosti. Uvažujme rovnici Obrázek 2: Tyické růběhy T (n, ) v závislosti na změně n a T (n, ) =ot = 0 (18) Jejím řešením získáme otimální očet rocesorů ot ro daný algoritmus a velikost roblému. 1.3.4 Kar-Flattova metrika Chceme-li zjistit říčinu neefektivity aralelního algoritmu, můžeme oužít Kar-Flattovu metriku, která umožňuje určit, zda je neefektivita zůsobena velkou sekvenční složkou f σ aralelního algoritmu či jeho nadměrnou režií κ(n, ). Kar-Flattova metrika stanovuje tzv. exerimentálně určený oměr sekvenční složky e. Z růběhu hodnoty e ři vzrůstajícím lze vyvodit říčinu neefektivity: je-li e konstantní, je říčinou neefektivity velká sekvenční složka, je-li e rostoucí, je říčinou neefektivity nadměrná aralelní režie.
Kvalitativní měřítka aralelizace algoritmu 8 Uvažujme T (n, ) = σ(n) + φ(n) + κ(n, ) T (n, 1) = σ(n) + φ(n) Exerimentálně určený oměr sekvenční složky lze vyjádřit jako (19) e = σ(n) + κ(n, ) T (n, 1) Po dosazení do 19 a úravě dostaneme vyjádření aralelního času σ(n) + κ(n, ) = T (n, 1)e (20) Uvažujme T (n, ) = T (n, 1)e + T (n, 1)(1 e) (21) S(n, ) = Pak o zjednodušení vztahu T (n, 1) T (n, 1) = S(n, )T (n, ) (22) T (n, ) T (n, ) = S(n, )T (n, )e + dostaneme exerimentálně určený oměr sekvenční složky e = 1 S(n,) 1 1 1 S(n, )T (n, )(1 e) (23) (24) Příklad 1 Exerimentální cestou jsme ři analýze aralelního algoritmu získali tabulku Tabulka 1: Exerimentálně zjištěné S(n, ) a růběh e 2 3 4 5 6 7 8 S(n,) 1.82 2.5 3.08 3.57 4.00 4.38 4.71 e 0.1 0.1 0.1 0.1 0.1 0.1 0.1 Hodnota e v tabulce 1 je konstantní což znamená, že říčinou neefektivity zkoumaného algoritmu je velká sekvenční složka f σ. Příklad 2 Exerimentální cestou jsme ři analýze aralelního algoritmu získali tabulku Tabulka 2: Exerimentálně zjištěné S(n, ) a růběh e 2 3 4 5 6 7 8 S(n,) 1.87 2.61 3.23 3.73 4.14 4.46 4.71 e 0.07 0.075 0.08 0.085 0.09 0.095 0.1 Hodnota e v tabulce 2 je rostoucí což znamená, že říčinou neefektivity zkoumaného algoritmu je velká aralelní režie κ(n, ).
Příklad analýzy aralelního algoritmu 9 2 Příklad analýzy aralelního algoritmu Všechny doosud diskutované asekty analýzy aralelního algoritmu si demonstrujme na říkladu zkoumání ostuu aralelní redukce množiny hodnot. Uvažujme aralelní redukci množiny n čísel na rocesorovém stroji kde = n dle schématu na obrázku 3, kde jednotlivé řádky ředstavují aralelní fáze algoritmu. Obrázek 3: Schéma aralelní redukce Předokládejme, že oerace součtu i řenosu dat mezi rocesory trvá 1 časovou jednotku. Paralelní výočet roběhne v log n iteracích (aralelních fázích), každý bude trvat 2 jednotky času. Paralelní algoritmus má časovou složitost Horní mez sekvenčního algoritmu řešícího stejný roblém je T (n, ) = 2 log n = Θ(log n) (25) SU(n) = T (n, 1) = 2(n 1) = 2n 2 = Θ(n) (26) Základní charakteristiky algoritmu jsou ak následující: C(n, ) = Θ(n log(n)) (27) W (n, ) = ( n 2 + n 2 ) + (n 4 + n ) +... + (1 + 1) = 2n 2 = Θ(n) (28) 4 n S(n, ) = Θ( log n ) (29) 1 E(n, ) = Θ( log n ) (30) Z výše uvedeného je atrné, že algoritmus je časově i racovně otimální, není však cenově otimální, což je dáno nedostatkem užitečné ráce ro všechny rocesory (viz. obrázek 3). Pokusme se roto snížit aralelní cenu algoritmu jeho vhodným škálováním. Uvažujme tedy modifikaci algoritmu aralelní redukce n hodnot na výočetním stoji s < n rocesory. V tom říadě existují nejméně dva zůsoby simulace: 1. Přiřazení simulovaných rocesorů o řádcích, což znamená, že každý z rocesorů rovede činnost n simulovaných rocesorů v jedné aralelní fázi, jak je ilustrováno na obrázku 4. Doba trvání jedné aralelní fáze je n a očet aralelních fází je. Závěrem zůstane v osledním aktivním rocesoru n mezivýsledků, které je otřeba redukovat sekvenčně, což zabere čas n. Celkový aralelní čas této simulace je
Příklad analýzy aralelního algoritmu 10 T (n, ) = ( n ) log + n = Θ( n log ) (31) Obrázek 4: Simulace řiřazování o řádcích 2. Přiřazení simulovaných rocesorů o sloucích, což znamená, že každý z rocesorů rovede sekvenční redukci n hodnot v čase n, čímž dostaneme mezivýsledků, které ak lze aralelně zredukovat v log aralelních fázích v čase log. Postu je ilustrován na obrázku 5. Celkový aralelní čas této simulace je T (n, ) = n + log = Θ( n + log ) (32) Obrázek 5: Simulace řiřazování o sloucích Paralelní cena simulace řiřazování o řádcích je C(n, ) = Θ(n log ), což stále není cenově otimální. Paralelní cena simulace řiřazování o sloucích je C(n, ) = Θ(n+ log ), což za ředokladu n >> log je C = Θ(n). V tomto říadě se již jedná o cenově otimální aralelní algoritmus. Nyní se okusme omocí izoefektivní funkce stanovit vhodnou granularitu algoritmu. E(n, ) = S(n, ) = S(n, ) = T (n, 1) T (n, ) = n n + log = n n + log (33) 1 1 + log n = 1 1 + κ(n,) T (n,1) = 1 1 + κ(n,) SU(n) Ze vztahu 34 vylývá, že κ(n, ) = log. Vyjádříme-li izoefektivní funkci jako (34)
Příklad analýzy aralelního algoritmu 11 T (n, 1) c κ(n, ) n c log (35) ak z nerovnice vylývá, že změní-li se na, musí se ro zachování konstantní efektivity změnit také n a to o násobek log log. Na závěr si stanovme absolutní minimální čas simulovaného algoritmu. Jak již bylo zmíněno, lokální oerace a komunikace stojí 2 jednotky času. Derivujme aralelní čas odle odtud T (n, ) = n + 2 log T (n, ) = n T (n, ) + 2 2 = 0 = 2 n = 0 2 ot = n 2 (36) (37) Dosazením získáme minimální aralelní čas T min (n, ot ) = 2 + 2 log n 2 T min (n, ot ) = 2 + 2(log n + log 1 2 ) T min (n, ot ) = 2 log n = Θ(log n) (38)
Kontrolní otázky 12 3 Kontrolní otázky Co vyjadřuje cena a ráce aralelního algoritmu? Co vyjadřuje efektivita aralelního algoritmu? Jaké maximální a minimální hodnoty efektivity může aralelní algoritmus dosáhnout? Co je to škálovatelnost aralelního algoritmu? Jaké by měly být ideální růběhy grafů zrychlení a efektivity dobře škálovatelných aralelních algoritmů? Co je to granularita aralelního algoritmu? Co vyjadřuje izoefektivita aralelního algoritmu? Jak ji definujeme? Co vyjadřuje Kar-Flattova metrika aralelního algoritmu?