doc

Transkript

doc
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

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íce

Bakalářská práce

Bakalář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íce

Matematický KLOKAN 2006 kategorie Klokánek U´ lohy za 3 body 1

Matematický 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íce

Matice

Matice • 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íce

Názvosloví oxidů Oxid siřičitý Oxid uhličitý Oxid uhelnatý Oxidy

Ná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íce

Paradoxy geometrické pravdepodobnosti

Paradoxy 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íce

Výpočet požární odolnosti zděné nosné nedělící stěny

Vý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íce

Doprava a životní prostředí ČVUT v Praze, Fakulta stavební, Katedra

Doprava 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íce

Is Early Warning of an Imminent Worm Epidemic Possible? Hyundo

Is 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