doc
Transkript
Paralelnı́ a distribuované algoritmy (PRL) – 2014/2015 Mesh Multiplication František Němec (xnemec61) [email protected] 2. května 2015 1 Popis algoritmu Mesh Multiplication je paralelnı́ algoritmus pro násobenı́ matic. Pro matice velikostech m × k a k × n vyžaduje m × n procesorů, které jsou zapojeny do 2-D mřı́žky. Procesory pracujı́ následovně: 1. Každý procesor, čeká na hodnotu od levého a hornı́ho sousednı́ho procesoru. 2. Po přijetı́ obou hodnot je vynásobı́ a přičte k lokálnı́ proměnné, která po přijetı́ a zpracovánı́ poslednı́ dvojce hodnot obsahuje finálnı́ vypočtenou hodnotu pro daný prvek matice. 3. Následuje odeslánı́ levé přı́chozı́ hodnoty pravému sousednı́mu procesoru a hornı́ přı́chozı́ hodnoty dolnı́mu sousednı́mu procesoru. Pokud se procesor nacházı́ na hranici matice hodnoty nikam neodesı́lá. Tento proces se opakuje k-krát pro každý procesor a po zpracovánı́ všech vstupnı́ch hodnot jednotlivé procesory obsahujı́ výsledné hodnoty násobenı́ matic. 1.1 Složitost algoritmu Bylo by zavádějı́cı́ uvádět závislosti jen na jedné proměnné (např. součet prvků prvnı́ a druhé matice), ale je třeba uvést všechny parametry, které různě ovlivňujı́ výslednou složitost. V tomto přı́padě to jsou parametry m (počet řádků prvnı́ matice), n (počet sloupců druhé matice) a k (počet sloupců/řádků prvnı́/druhé matice). Uvažujme matice A o velikosti m × k a B o velikosti k × n. Poslednı́ krok algoritmu bude proveden až prvky am,1 a b1,n dojdou do poslednı́ho procesoru pm,n , což bude v kroku k + max(m, n) − 1 (max(m, n) představuje většı́ hodnotu ze dvou čı́sel). Z čehož vyplývá časová složitost: t(m, n, k) = k + max(m, n) − 1 (1) Prostorovou složitost lze odvodit z velikostı́ matic: p(m, n, k) = m · n (2) c(m, n, k) = t(m, n, k) · p(m, n, k) = mn(k + max(m, n) − 1) = mnk + mn · max(m, n) − mn (3) Celková cena pak odpovı́dá: Pokud však budeme uvažovat jen čtvercové matice stejných rozměrů, pak lze složitost vyjádřit jednou proměnnou, kterou je jeden rozměr matice n. V tom přı́padě složitosti vypadajı́ následovně: t(n) = n + n − 1 = 2n − 1 ∼ O(n) (4) p(n) = n · n = n2 (5) c(n) = t(n) · p(n) = O(n) · n2 = O(n3 ) (6) 1 2 Měřenı́ časové složitosti Ideálnı́m způsobem měřenı́ časové složitosti by bylo měřit dobu zpracovánı́ jako reálný čas. Nicméně zde nastává několik problémů: • Je nutné mı́t dostatečný počet procesorů. V opačném přı́padě algoritmus nedosáhne lineárnı́ časové složitosti, přı́padně tuto skutečnost vzı́t v úvahu a naměřené hodnoty upravit. • Po celou dobu běhu řazenı́ procesory nesmı́ vykonávat žádnou jinou činnost. Těžce dosažitelná podmı́nka v přı́padě testovánı́ algoritmu na stroji, kde se vyskytujı́ dalšı́ aktivnı́ uživatelé. Měřenı́ časové složitosti je proto provedeno měřenı́m procesorového času přı́mo v programu pomocı́ funkce clock gettime12 , která umožňuje měřit spotřebovaný procesorový (dále proc.) čas při použitı́ CLOCK PROCESS CPUTIME ID. Měřenı́ provádı́ prvnı́ procesor, který si ihned po načtenı́ (přı́padně tisku) vstupnı́ posloupnosti uložı́ aktuálnı́ hodnotu spotřebovaného proc. času. Po zpracovánı́ o odeslánı́ všech vstupnı́ch hodnot čeká na zprávy od všech ostatnı́ch procesů, které nesou finálnı́ hodnotu daného prvku matice. Po přijetı́ všech hodnot je z aktuálně spotřebovaného a uloženého proc. času vypočtena konkrétnı́ doba trvánı́ řazenı́. 2.1 Experimenty Cı́lem experimentů je ověřit (nebo vyvrátit) teoretickou linárnı́ časovou složitost. Měřenı́ pro každou hodnotu velikosti vstupu bylo provedeno 20krát, přičemž bylo odstraněno 5 nejmenšı́ch a 5 největšı́ch hodnot. Ze zbylých deseti hodnot byl vypočten průměr a ze všech průměrů byl vytvořen graf. Tento proces byl několikrát zopakován a výsledné grafy byly porovnány za účelem zjistit, zda naměřené hodnoty nebyli ovlivněny nějakou anomáliı́. Měřenı́ proběhlo ve dvou fázı́ch (tabulky naměřených hodnot se nacházı́ v přı́loze A): • Násobenı́ čtvercových matic (čas v závislosti na různém počtu procesů). • Násobenı́ matic n × 4 a 4 × n (pevný počet procesorů a různá velikost vstupu). 2.2 Čtvercové matice Na grafu 1 můžeme vidět, že pro menšı́ počty procesorů je časová závislost opravdu lineárnı́, ale s rostoucı́m počtem vstupů je režie přepı́nánı́ procesů neúnosná a velice ovlivňuje výslednou dobu násobenı́. Zajı́mavé je, že při hodnotě 196 se situace zlepšila. Celé měřenı́ proběhlo několikrát a pokaždé se tento jev vyskytl, dokonce i při testovánı́ na dvou různých strojı́ch. Obrázek 1: Časová složitost Mesh Multiplication – násobenı́ čtvercových matic 1 http://linux.die.net/man/3/clock_gettime 2 http://www.guyrutenberg.com/2007/09/22/profiling-code-using-clock_gettime/ 2 2.3 Pevný počet procesů Při testovánı́ časové závislosti při pevném počtu procesů (4 × 4) je situace o poznánı́ lepšı́ a na grafu 2 lze pozorovat lineárnı́ závislost času na proměnném počtu sloupců prvnı́ matice resp. řádků druhé matice. Obrázek 2: Časová složitost Mesh Multiplication – pevný počet procesů 3 Závěr Jak už bylo zmı́něno, v přı́padě násobenı́ matic lze těžko vztahovat časovou složitost jen na jednu proměnou, protože různé velikosti vstupu různým způsobem ovlivňujı́ výslednou dobu řazenı́. Velice závisı́ na poměru řadků/sloupců vstupnı́ch matic. Měřené však prokázala jistou lineárnı́ závislost. Nicméně režie velkého počtu procesů na menšı́m počtu procesorových jader se ukázala jako obrovská a bez potřebného hardwaru nelze ověřit reálnou časovou složitost pro většı́ velikosti vstupu s proměnným počtem procesů. 3 A Tabulky naměřených hodnot Počet procesů 1 4 9 16 25 36 49 64 81 100 121 144 169 196 225 Doba výpočtu [ms] 0,00 0,35 0,30 2,24 3,30 4,97 6,21 7,47 10,06 11,97 17,92 31,00 19,54 12,64 43,21 Tabulka 1: Naměřené hodnoty grafu Časová složitost Mesh Multiplication – násobenı́ čtvercových matic k 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536 131072 262144 524288 1048576 Doba výpočtu [ms] 0,66 0,43 0,73 0,74 1,06 2,34 3,44 5,44 12,04 16,91 28,22 43,46 66,93 121,80 221,08 439,76 844,60 1797,16 3364,33 6506,13 Tabulka 2: Naměřené hodnoty grafu Časová složitost Mesh Multiplication – pevný počet procesů 4
Podobné dokumenty
Matematika I
kde p je libovolné čı́slo. Ze druhé rovnice určı́me y = −11p/5. Po dosazenı́ do 1. rovnice vypočteme x = −3y − 5z = 8p/5.
VíceBakalářská práce
jsou prováděny na základě reálného PMD. Jsou obsaženy všechny běžně monitorované hodnoty jako napětı́, proudy, výkony a energie, harmonické složky a několik dalšı́ch v tomto přı́...
VíceMatematický KLOKAN 2006 kategorie Klokánek U´ lohy za 3 body 1
16. Čtyři kočky sedı́ na plotě. Jmenujı́ se Micka, Tlapka, Čipera a Bobina. Micka sedı́ přesně uprostřed mezi Tlapkou a Čiperou. Vzdálenost mezi Tlapkou a Mickou je stejná jako vzdáleno...
VíceMatice
• Pozor na alternativnı́ definici: hodnost jako maximálnı́ počet lineárně nezávislých řádků. Je třeba si uvědomit, co to znamená. • Hodnost je přirozené čı́slo, které nemusı́ být j...
VíceNázvosloví oxidů Oxid siřičitý Oxid uhličitý Oxid uhelnatý Oxidy
Oxid hlinitý Al2O3 • Pevná látka, v přírodě - jako velmi tvrdý nerost korund.
VíceParadoxy geometrické pravdepodobnosti
přı́mku tak, aby protı́nala zadaný kruh. Jaká je pravděpodobnost, že vzniklá tětiva má délku většı́ než je délka strany rovnostranného trojúhelnı́ka vepsaného přı́slušné hraničn...
VíceVýpočet požární odolnosti zděné nosné nedělící stěny
nedělící stěny. Požadavky z hlediska požární odolnosti jsou tedy pouze na nosnou
VíceDoprava a životní prostředí ČVUT v Praze, Fakulta stavební, Katedra
Zároveň je zde ale konstatováno, že v dělbě přepravní práce mezi jednotlivými druhy dopravy neexistuje rovnováha. Automobilová doprava velmi nabírá na síle, což je jev negativní a je nutné jej řeši...
VíceIs Early Warning of an Imminent Worm Epidemic Possible? Hyundo
Taxonomie detekčnı́ch mechanismů • Náhlý nárůst nových spojenı́. • Počı́tá se počet pokusů o spojenı́ za jednotku času. • Sleduje sı́t’ovou aktivitu: Distribuci zdrojových IP adres, cı...
Více