View metadata, citation and similar papers at core.ac.uk brought to you by CORE

provided by Digital library of Brno University of Technology

VYSOKEU´ CENˇ ´I TECHNICKE´ V BRNEˇ BRNO UNIVERSITY OF TECHNOLOGY

FAKULTA INFORMACNˇ ´ICH TECHNOLOGI´I USTAV´ POCˇ ´ITACOVˇ E´ GRAFIKY A MULTIMEDI´ ´I

FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER GRAPHICS AND MULTIMEDIA

PARALELIZACE SLEDOVAN´ ´I PAPRSKU PARALLELIZATION OF

DIPLOMOVA´ PRACE´ MASTER’S THESIS

AUTOR PRACE´ Bc. MARTIN CIˇ ZEKˇ AUTHOR

VEDOUC´I PRACE´ Ing. HEROUT ADAM, Ph.D. SUPERVISOR

BRNO 2009 Zad´an´ıpr´ace:

1. Prostudujte metody realistickeho´ zobrazovan´ ´ı, zejmena´ sledovan´ ´ı paprsku.

2. Prostudujte moznostiˇ paralelizace metody sledovan´ ´ı paprsku.

3. Navrhneteˇ komunikacnˇ ´ı protokoly a dalsˇ´ı nutne´ veciˇ pro paralelizaci sledovan´ ´ı pa- prsku s c´ılem realisticky zobrazovat v realn´ em´ case.ˇ

4. Implementujte paraleln´ı sledovan´ ´ı paprsku v realn´ em´ caseˇ v pocˇ´ıtacovˇ e´ s´ıti.

5. Vyhodnot’te vlastnosti implementovaneho´ reˇ senˇ ´ı a demonstrujte moznostiˇ pouzitˇ ´ı.

6. Zhodnot’te dosazenˇ e´ vysledky´ a navrhneteˇ moznostiˇ pokracovˇ an´ ´ı projektu; vytvorteˇ plakatek´ pro prezentovan´ ´ı projektu. Abstrakt Sledov´an´ıpaprsku je rozˇs´ıˇrenoumetodou realistick´ehozobrazov´an´ıpoˇc´ıtaˇcov´ych sc´en.Jej´ı hlavn´ınev´yhodou je ˇcasov´an´aroˇcnostna v´ypoˇcetobr´azku,proto se ˇcastoparalelizuje. Tato pr´acese vˇenuje popisu sledov´an´ıpaprsku a paralelizaci jako takov´e.Vysvˇetluje zp˚usob, jak´ymse d´asledov´an´ıpaprsku paralelizovat, ale i rozbor probl´em˚u,kter´eu t´etoparale- lizace vznikaj´ı.V´ysledkem je implementace aplikace, kter´aparalelnˇena hodnˇepoˇc´ıtaˇc´ıch zobrazuje sc´enu pomoc´ızvolen´ehosoftv´erua porovn´an´ı´uspˇeˇsnostit´etoparaleln´ıaplikace.

Kl´ıˇcov´aslova realistick´ezobrazov´an´ı,sledov´an´ıpaprsku, paralelizace, Message Passing Interface, MPI

Abstract Ray tracing is widely used technique for realistic rendering of computer scenes. Its major drawback is time needed to compute the image, therefore it’s usually parallelized. This thesis describes parallelization and ray tracing in general. It explains the possibility of how can be ray tracing parallelized as well as it defines the problems which may occur during the process. The result is parallel rendering application which uses selected ray tracing software and measurement of how successful this application is.

Keywords realistic rendering, ray tracing, parallelization, Message Passing Interface, MPI

Citace Martin Ciˇzek:Paralelizaceˇ sledov´an´ıpaprsku, diplomov´apr´ace,Brno, FIT VUT v Brnˇe, 2009 Paralelizace sledov´an´ıpaprsku

Prohl´aˇsen´ı Prohlaˇsuji,ˇzejsem tuto diplomovou pr´acivypracoval samostatnˇepod veden´ımIng. Adama Herouta, Ph.D. a pouˇzil jsem pouze podklady vyjmenov´any v sekci Literatura.

...... Martin Ciˇzekˇ 27. kvˇetna2009

Podˇekov´an´ı R´adbych podˇekoval sv´emu vedouc´ımu Adamovi Heroutovi, kter´yusmˇerˇnoval psan´ıt´eto pr´ace.

c Martin Ciˇzek,2009.ˇ Tato pr´ace vznikla jako ˇskoln´ı d´ılo na Vysok´emuˇcen´ı technick´emv Brnˇe,Fakultˇein- formaˇcn´ıchtechnologi´ı.Pr´ace je chr´anˇenaautorsk´ymz´akonema jej´ıuˇzit´ıbez udˇelen´ıo- pr´avnˇen´ıautorem je nez´akonn´e,s v´yjimkouz´akonem definovan´ychpˇr´ıpad˚u. Obsah

1 Uvod´ 2 1.1 Ciel’ pr´ace...... 2 1.2 Rozvrhnutie kapitol...... 3

2 Met´odyrealistick´ehozobrazovania4 2.1 Rasteriz´acia...... 4 2.2 Sledovanie l´uˇca...... 4 2.2.1 Prim´arny l´uˇc...... 4 2.2.2 Sekund´arny l´uˇc...... 5 2.2.3 Tieˇnov´yl´uˇc...... 5 2.2.4 L´uˇclomu svetla...... 5 2.3 Vrhanie l´uˇca...... 5 2.4 Radiozita...... 6 2.5 Zhrnutie...... 6

3 Paraleliz´acia7 3.1 Hardv´er...... 8 3.1.1 Procesory...... 8 3.1.2 Grafick´yprocesor...... 8 3.2 Softv´er...... 9 3.2.1 MPI...... 9 3.2.2 PVM...... 11 3.2.3 GPU...... 12 3.2.4 Zhrnutie...... 12

4 Realiz´acia 13 4.1 YafaRay...... 13 4.2 Komunikaˇcn´eprostredie...... 14 4.3 Paraleliz´aciasledovania l´uˇca...... 15 4.3.1 Rozdelenie pr´ace...... 15 4.3.2 Komunik´acia...... 16

5 Implement´acia 17 5.1 Rozdelenie pr´ace...... 17 5.2 Zmeny na sc´ene...... 17 5.3 Komunik´acia...... 18 5.3.1 Zobrazovanie...... 20 5.3.2 Uˇz´ıvatel’sk´yvstup...... 20

1 5.3.3 Zobrazovanie viacer´ych sc´en...... 20 5.4 Zbieranie d´at...... 21 5.5 Zhrnutie...... 21 5.5.1 Hlavn´yproces...... 22 5.5.2 Vedl’ajˇs´ıproces...... 23

6 Testovanie a vyhodnotenie v´ysledkov 24 6.1 Porovnanie s in´ymirieˇseniami...... 29 6.1.1 Parallel Ray-Tracing in MPI...... 30 6.1.2 Parallel Ray Tracing...... 30 6.1.3 Hybrid Scheduling for Parallel Ray Tracing...... 31 6.1.4 YafaRay Distributed Rendering...... 32

7 Z´aver 33

Zoznam pouˇzit´ych skratiek 36

Zoznam pr´ıloh 37

A Testovacia sc´ena 38

B Uk´aˇzkov´esc´eny YafaRayu 39

C Obsah DVD 41

2 Kapitola 1

Uvod´

Problematika realistick´ehozobrazovania rieˇsi moˇznostiˇconajvernejˇsiehozobrazenia urˇcitej sc´eny pomocou poˇc´ıtaˇca.V s´uˇcasnostije realistick´ezobrazovanie neoddelitel’nou s´uˇcast’ou rˆoznych technologick´ych odvetv´ı,napr´ıkladarchitekt´ury, kde potrebujeme vyobrazit’ nov´u budovu ˇconajvernejˇsie,stroj´arstva (napr. automobilov´ypriemysel), medic´ıny, alebo fil- mov´ehoa hern´ehopriemyslu. Uˇzz toho dˆovodu, ˇzesa snaˇz´ımedosiahnut’ ˇconajvyˇsˇs´ıstupeˇn realizmu a vernosti zobrazenia, je zrejm´e,ˇzetento proces je v´ypoˇctovo vel’mi n´aroˇcn´y. Jednou z met´odpouˇz´ıvan´ych pre realistick´ezobrazovanie je sledovanie l´uˇca.Existuje via- cero spˆosobov ako zobrazovanie ur´ychlit’. Jedn´ymz nich je nav´yˇseniehrub´ehov´ypoˇctov´eho v´ykonu, ktor´ymˆoˇzemez´ıskat’ pomocou paraleliz´acie. Dneˇsn´eaplik´acies´ubeˇzneinterpretovan´eako sled inˇstrukci´ı,ktor´es´uspracovan´esek- venˇcne.Procesory vˇsakuˇzsvojimi frekvenciami neprekon´avaj´ud’alˇsiehranice. Hlavnou mierkou v´ykonu sa stal poˇcetjadier, ktor´ysa v aktu´alnejdobe pohybuje okolo poˇctu ˇstyri. Vd’aka tomu je jedinou moˇznost’ou pre nav´yˇseniev´ykonu paraleliz´acia,ktor´an´am pom´ahavyuˇz´ıvat’ viacer´ev´ypoˇctov´ejednotky s´uˇcasne.Princ´ıpparaleliz´aciespoˇc´ıva v roz- delen´ıv¨aˇcˇsej´ulohy na mnoˇzstvo mal´ych, ktor´eje moˇzn´espracovat’ s´uˇcasne.Pri rozdel’ovan´ı je potrebn´ezobrat’ do ´uvahy, ˇzejednotliv´eprocesy bud´upotrebovat’ pre svoj chod v´ysledky z in´ych procesov, a teda je potrebn´evyrieˇsit’ urˇcit´ydruh komunik´acie,pomocou ktorej sa bud´uzasielat’ potrebn´ed´ata. Je vˇseobecne zn´ame,ˇzemet´odazobrazovania pomocou sledovania l´uˇcaje v porovnan´ı s ostatn´ymispˆosobmizobrazovania extr´emnepomal´a,avˇsakak sa n´ampodar´ıtento typ zobrazovania dostatoˇcneparalelizovat’ a z´ıskame dostatoˇcn´yv´ypoˇctov´yv´ykon, je moˇzn´e takto vykresl’ovat’ sc´enu v re´alnomˇcase.T´ymto sa zaober´at´atodiplomov´apr´aca.

1.1 Ciel’ pr´ace

Ulohou´ tejto pr´aceje opis niektor´ych met´odrealistick´ehozobrazovania, prim´arnemet´odu sledovania l´uˇca. Dalˇs´ımˇ krokom je popis paraleliz´aciea navrhnutie spˆosobu,ktor´ymby bolo moˇzn´eparalelizovat’ sledovanie l´uˇca.Po n´ajden´ı spˆosobu,ak´ymbude t´atomet´oda paralelizovan´a,je nutn´enavrhn´ut’ komunikaˇcn´yprotokol popisuj´ucikomunik´aciumedzi procesmi a d’alˇsieaspekty nutn´epri paralelnom spracovan´ısledovania l´uˇcav re´alnomˇcase. Po navrhnut´ı,ako bude pracovat’ paralelizovan´esledovanie l´uˇca,m´amza ´ulohu tento n´avrh implementovat’, vyhodnotit’ jeho vlastnosti, demonˇstrovat’ moˇznostivyuˇzitiaa zhodnotit’ dosiahnut´ev´ysledky.

3 1.2 Rozvrhnutie kapitol

V ´uvodn´ych kapitol´ach sa budem venovat’ popisu niektor´ych met´odrealistick´ehozobrazo- vania a defin´ıciiparaleliz´acie.Tieto dve kapitoly, ako aj poˇciatoˇcn´espracovanie zvolen´eho softv´eru,boli vypracovan´ev r´amci semestr´alnehoprojektu. Po obozn´amen´ısa s parale- liz´acioua met´odousledovania l´uˇcaopisujem moˇznosti,ako t´utomet´oduzobrazovania pa- ralelizovat’, ako medzi sebou mˆoˇzujednotliv´euzly komunikovat’ a ˇcoje potrebn´edodrˇzat’ pri zobrazovan´ısc´eny v re´alnomˇcase.V nasleduj´ucejkapitole sa venujem samotnej im- plement´aciia ˇcinnostitohto zobrazovacieho syst´emu. Pr´acad’alej pokraˇcujetestovan´ım a vyhodnoten´ımv´ykonu tohto syst´emu a porovnan´ıms neparalelizovanou verziou. V z´avere opisujem, ako sa mi podarilo splnit’ vˇsetkypoˇciatoˇcn´epoˇziadavky, uplatnit’ moˇzn´evy- lepˇseniaa navrhn´ut’ d’alˇs´ıpostup pri rozˇsirovan´ıpr´ace.

4 Kapitola 2

Met´odyrealistick´ehozobrazovania

2.1 Rasteriz´acia

Rasteriz´aciaje najrozˇs´ırenejˇs´ımspˆosobom zobrazovania poˇc´ıtaˇcovej grafiky. Obraz je vy- tvoren´ypomocou viacer´ych vyrovn´avaj´ucich pam¨at´ı1, ktor´edefinuj´uv´ysledn´yobraz, resp. pom´ahaj´upri jeho vytv´aran´ı.Je to jeden z najrozˇs´ırenejˇs´ıch a najr´ychlejˇs´ıch spˆosobov zob- razovania a preto ho mˆoˇzemevidiet’ v drvivej v¨aˇcˇsinepoˇc´ıtaˇcov´ych hier. Objekty na sc´ene s´u reprezentovan´esiet’ov´ymimodelmi zloˇzen´ymiz trojuholn´ıkov. Zjednoduˇsene povedan´e,ras- teriz´aciafunguje na princ´ıpe transform´acievrcholov trojuholn´ıkov v trojrozmernom pries- tore do dvojrozmern´ehopriestoru. Tento spˆosobzobrazovania nedok´aˇzezobrazovat’ urˇcit´eefekty a preto sa pouˇz´ıvaj´urˆozne spˆosoby, ako tieto efekty napodobnit’. Napr´ıkladna simul´aciuosvetlenia sa mˆoˇzupouˇz´ıvat’ sveteln´emapy2, na zobrazenie tieˇnov mapovanie tieˇnov3 a na zobrazenie odrazov od po- vrchov mapovanie okolia4. Tieto efekty vˇsak v¨aˇcˇsinounepod´avaj´urealistick´ydojem a je moˇzn´erozl´ıˇsit’ medzi realitou a obr´azkom zobrazen´ympomocou rasteriz´acie.

2.2 Sledovanie l´uˇca

Jednou z najrozˇs´ırenejˇs´ıch met´odzobrazovania realistickej grafiky je sledovanie l´uˇca5. Vy- sok´arealistickost’ tohto zobrazovania spoˇc´ıva v reverznej simul´aciire´alnejdr´ahy sveteln´ych l´uˇcov, kde pre kaˇzd´ybod v´ysledn´ehoobrazu je vyslan´yl´uˇc,ktor´ypo n´arazena objekt z´ıska inform´aciuo farbe tohto objektu v mieste dopadu l´uˇca,vlastnosti materi´alu, polohe sve- teln´ych zdrojov voˇcimiestu dopadu a d’alˇsieaspekty, ktor´eovplyvˇnuj´ufarbu zobrazovan´eho bodu.

2.2.1 Prim´arny l´uˇc Prim´arny l´uˇcje prvotn´yl´uˇc,ktor´ym´apoˇciatokv zobrazovacom zariaden´ı(kamera) a pre- ch´adzacez poz´ıciukonkr´etnehozobrazovan´ehobodu na pl´atne.Pre tento l´uˇcsa vypoˇc´ıtaj´u vˇsetkyprieseˇcn´ıkys objektmi na sc´enea vyberie sa ten, ktor´yje najbliˇzˇsiek zobrazovaciemu zariadeniu. Zloˇzitost’ tejto oper´aciez´aleˇz´ıod poˇctuprvkov v priestore a pouˇzitejmet´ody

1angl. buffer, napr. z-buffer, stencil buffer 2angl. lightmap 3angl. shadow mapping 4angl. environment mapping 5angl. ray tracing

5 pre uloˇzeniecelej sc´eny v pam¨ati.Po n´ajden´ımiesta dopadu l´uˇcasa do sc´eny vyˇsl´ud’alˇsie l´uˇce,ktor´eupresˇnuj´ufarebn´ezloˇzeniekonkr´etnehozobrazovan´eho bodu.

2.2.2 Sekund´arny l´uˇc Pre z´ıskanie farebn´ych inform´aci´ıo okolit´ych objektoch sa pouˇz´ıva sekund´arny l´uˇc(l´uˇcod- razu), ktor´ysimuluje spr´avanie prim´arnehol´uˇca,avˇsakjeho funkciou je vr´atit’ inform´acie tomu l´uˇcu,ktor´yho vyslal. Tento l´uˇcpo dopade vyˇsled’alˇs´ısekund´arny (resp. terci´alny) l´uˇc.Toto spr´avanie sa rekurz´ıvneopakuje podl’a toho, ak´ah´lbka rekurzie je vyˇzadovan´azob- razovac´ımsyst´emom. Speci´alnymˇ pr´ıpadomsekund´arnych l´uˇcov s´ul´uˇcezrkadlov´e6, ktor´e sl´uˇziana zobrazenie zrkadlov´ych odrazov.

2.2.3 Tieˇnov´yl´uˇc Po dopade prim´arnehol´uˇcana objekt sa z miesta dopadu vyˇsl´utieˇnov´el´uˇcedo vˇsetk´ych zdrojov svetla na sc´ene,aby sme zistili, ako je miesto dopadu ovplyvnen´esvetlom v zobrazo- vanej sc´ene.Tu mˆoˇzunastat’ dva pr´ıpady. V prvom pr´ıpadel´uˇcnaraz´ına in´yobjekt, potom je pˆovodn´emiesto dopadu zatienen´evoˇcikonkr´etnemu zdroju svetla. V druhom pr´ıpade, medzi miestom dopadu a sveteln´ymzdrojom nie je ˇziadnaprek´aˇzka, ˇciˇzemiesto je priamo osvetlen´et´ymto zdrojom svetla. Poˇcetvyslan´ych tieˇnov´ych l´uˇcov z´avis´ıod druhu pouˇzit´eho svetla. Ak je sveteln´yzdroj reprezentovan´yjedin´ymbodom na sc´ene,potom je vyslan´yiba jeden tieˇnov´yl´uˇca vznikaj´utzv. ostr´etiene, kde je vidiet’ ostr´yprechod medzi zatienenou a nezatienenou plochou. Pri svetle, ktor´eje vyˇzarovan´ez plochy, sa z bodu dopadu vyˇsl´uvi- acer´etieˇnov´el´uˇce, ktor´eobsiahnu cel´uplochu sveteln´ehozdroja. T´ymto spˆosobom vznikaj´u tzv. m¨akk´etiene.

2.2.4 L´uˇclomu svetla V pr´ıpade,ˇzeobjekt, na ktor´ynaraz´ı prim´arny l´uˇc,m´aurˇcit´ystupeˇnpriehl’adnosti, je potrebn´evyslat’ l´uˇclomu svetla7, ktor´yprech´adzat´ymto objektom a rekurz´ıvne generuje d’alˇsiel´uˇce,ktor´esimuluj´uprechod fot´onov cez tento objekt. Najˇcastejˇsiesa tento typ l´uˇcov vyuˇz´ıva na zobrazovanie sklenen´ych objektov alebo tekut´ın,resp. oboch naraz. V´ysledkom mˆoˇzebyt’ efekt lomu svetla alebo kaustika.

2.3 Vrhanie l´uˇca

Met´odavrhania l´uˇca8 je vel’mi podobn´amet´odesledovania l´uˇca, ale vrh´ameiba prim´arny a tieˇnov´yl´uˇc.Vd’aka tomu je vrhanie l´uˇcar´ychlejˇsieneˇzsledovanie l´uˇca,avˇsakpomocou tejto met´ody nedok´aˇzemevytvorit’ napr´ıkladrealistick´etiene, odrazy, kaustiku alebo lom svetla. To sa vˇsakd´anapravit’ pouˇzit´ımin´ych met´od,ktor´edok´aˇzudo urˇcit´ehostupˇna realisticky napodobnit’ tieto efekty.

6angl. reflection ray 7angl. refraction ray 8angl. ray casting

6 Obr´azok2.1: Sch´emasledovania l´uˇca[23]

2.4 Radiozita

Radiozita sa snaˇz´ıo fyzik´alnu simul´aciuˇs´ıreniasvetla v sc´ene.Z´akladn´yalgoritmus vyˇzaduje energeticky uzavret´usc´enu a neuvaˇzujeinterakciu svetelnej energie s prostred´ımv sc´ene.Po- stup zobrazovania sc´eny sa del´ına dve ˇcasti.V prvej ˇcastije sc´enarozdelen´ana mal´eplˆoˇsky a n´aslednesa algoritmus venuje prenosu energie (svetla) v sc´enemedzi t´ymitoplˆoˇskami, ˇc´ımsa docieli kompletn´ypopis sc´eny z hl’adiska osvetlenia. V druhej ˇcasti sa mˆoˇzepouˇzit’ ak´ykol’vek zobrazovac´ıalgoritmus, ktor´yrieˇsiprobl´emviditel’nosti a sc´enu zobraz´ı. V´yhodou je, ˇzesa pri zmene kamery nemus´ısc´enaprepoˇc´ıtavat’.[14] Pre zobrazovanie sa ˇcasto vyuˇz´ıva met´odasledovania l´uˇca.

2.5 Zhrnutie

Z charakteru fungovania met´odysledovania l´uˇcaje zrejm´e,ˇzejej v´ystupbude, oproti ostatn´ymspˆosobom zobrazovania, najvernejˇsiezobrazovat’ realitu. Najv¨aˇcˇsiav´yhoda tejto met´odyje z´aroveˇnaj jej nev´yhodou, ked’ˇzerekurz´ıvnym sledovan´ıml´uˇcov na sc´enemˆoˇzu vznikn´ut’ desiatky aˇzstovky mili´onov l´uˇcov, ktor´eje potrebn´eprepoˇc´ıtat’. Tento poˇcetz´aleˇz´ı od poˇzadovan´ehostupˇnakvality, rozl´ıˇseniav´ysledn´ehoobrazu a pouˇzit´ych met´odpre do- siahnutie urˇcit´ych efektov. Pre ur´ychlenie tohto v´ypoˇctusa vyuˇz´ıva paraleliz´acia,ktorou sa zaober´amv nasleduj´ucejkapitole.

7 Kapitola 3

Paraleliz´acia

Paraleliz´aciaje postup zaloˇzen´yna rozdelen´ızloˇzitej´ulohy na viacer´ejednoduch´e´ulohy, ktor´emˆoˇzubyt’ rieˇsen´es´ubeˇzne.Tie s´un´aslednerozvrhnut´emedzi viacer´ev´ypoˇctov´ejed- notky za ciel’om ur´ychlit’ v´ypoˇcetcelkovej ´ulohy oproti sekvenˇcn´emu spracovaniu. Tieto ´ulohy mˆoˇzubyt’ spracov´avan´esimult´anne, nie vˇsaknez´avisle,pretoˇzevo v¨aˇcˇsinepr´ıpadov takto rozdelen´e´ulohy vyˇzaduj´ud´ataz in´ych ˇcast´ıa preto je nutn´avz´ajomn´akomunik´acia t´ychto jednotiek. Efektivita komunik´acieje jedn´ymz prvkov, ktor´eovplyvˇnuj´u,do akej miery vzrastie v´ykon paralelnej aplik´acie. Z hl’adiska program´atoraprin´aˇsaparaleliz´acianov´edruhy probl´emov, ktor´ymje nutn´e venovat’ pozornost’. Medzi tieto probl´emy patr´ınapr´ıkladblokovanie1, ktor´enast´ava v pr´ıpa- de, ˇzedva procesy na seba navz´ajomˇcakaj´u.V tomto pr´ıpades´uprocesy zaseknut´ea nemˆoˇzu pokraˇcovat’ v d’alˇsomspracov´avan´ı. Dalˇs´ımprobl´emomb´yvaˇ starnutie, ktor´enast´ava v pr´ı- pade, ˇzejedn´emu procesu mˆoˇzebyt’ nekoneˇcnedlho odopren´ypr´ıstupk urˇcit´emu zdroju, ktor´yvyˇzadujepre pokraˇcovanie v ˇcinnosti. Cyklovanie, ako d’alˇs´ız probl´emov, je typ blo- kovania, kde s´ıce procesy navonok vykazuj´uzn´amkyˇcinnosti(nie s´uzablokovan´e),avˇsak nedoch´adzak ˇziadnemu pokroku vo v´ypoˇctea procesy s´uvo vz´ajomnomcykle.[19] Je nut- nost’ zabr´anit’ akejkol’vek pr´ıˇcine,ktor´aby mohla spˆosobit’ aspoˇnjeden zo spomenut´ych probl´emov. Medzi d’alˇsie probl´emy pri n´avrhu paralelnej aplik´acieje nutnost’ vymysliet’ komu- nikaˇcn´yprotokol, vd’aka ktor´emu bud´ujednotliv´eprocesy komunikovat’. Tento protokol by mal byt’ ˇconajefekt´ıvnejˇs´ı, aby procesy str´avilikomunik´aciouˇconajmenej ˇcasua veno- vali sa v´ypoˇctov´ym´uloh´am.Program´atormus´ıtaktieˇzeliminovat’ paraleln´espracov´avanie kritick´ych sekci´ı,ˇco je vlastne ´usekk´odu,ktor´ymˆoˇzespracov´avat’ v danom ˇcaseiba jeden proces. Taktieˇzje dˆoleˇzit´eminimalizovat’ poˇcett´ychto sekci´ı,ako aj skr´atit’ d´lˇzkuich spraco- vania, aby neboli procesy blokovan´ena pr´ıliˇsdlh´udobu. Dalˇs´ımprobl´emomjeˇ n´avrh rozdele- nia celkov´ehoprobl´emu na menˇsieˇcasti,ktor´emˆoˇzubyt’ vykon´avan´eparalelne. S efektivitou tohto rozdelenia rastie aj efektivita v´ykonu paralelnej aplik´acie. Vyˇsˇsiespomenut´akritick´asekcia n´ampriamo ovplyvˇnujemoˇzn´umieru paraleliz´acie v´ypoˇctov´ehoprobl´emu. Ak p oznaˇcujeˇcast’ programu, ktor´amˆoˇzebyt’ paralelizovan´a(1 − p oznaˇcujeˇcast’, ktor´unemˆoˇzemeparalelizovat’), a na v´ypoˇcetpouˇzijeme n procesorov, tak maxim´alnemoˇzn´ezr´ychlenie bude: 1 p (1 − p) + n 1angl. deadlock

8 Z toho vypl´yva, ˇzeje nutn´epozorne definovat’ ˇcasti,ktor´enebud´uspracov´avan´eparalelne, pretoˇzen´amurˇcuj´ulimit, do ak´ehostupˇnaje moˇzn´edan´uaplik´aciuparalelizovat’. Znamen´a to, ˇzeparaleliz´aciasa hod´ıiba pre mal´ypoˇcetprocesov alebo pre aplik´acie,ktor´emaj´u vysok´uhodnotu p. Toto predv´ıdanie maxim´alnehozr´ychlenia paralelnej aplik´aciesa naz´yva Amdahlov z´akon [3]. V nasleduj´ucich ˇcastiach si pop´ıˇseme problematiku paraleliz´aciez pohl’adu hardv´eru, softv´erua d’alˇs´ıch prvkov, ktor´es paraleliz´acious´uvisia.

3.1 Hardv´er

Jedin´ymipoˇziadavkami paraleliz´aciez hardv´erov´ehohl’adiska s´unutnost’ distribuovat’ ´ulohy a n´aslednekompletizovat’ v´ysledky. Znamen´ato, ˇzev´ypoˇctov´ejednotky musia byt’ urˇcit´ym spˆosobom prepojen´emedzi sebou alebo spojen´es nejak´ymriadiacim ˇclenom,aby t´ymto poˇziadavk´amvyhoveli. Toto vˇsak nes´uhlas´ıs poˇziadavkami uˇz´ıvatel’ov, kde uˇzzohr´ava ´ulohu aj ˇcaspotrebn´yna splnenie ´ulohy a cena. Tieto aspekty ovplyvˇnuj´uak´yhardv´erbude pouˇzit´y. V dneˇsnejdobe, kde v´yrobcovia procesorov nar´aˇzaj´una limity pri zvyˇsovan´ıpracovn´ych frekvenci´ı, sa paraleliz´aciaspolu s viacjadrov´ymi(viacprocesorov´ymi)syst´emamist´ava hlavn´ymsmerom pre d’alˇsienav´yˇseniev´ykonu. Z´akladn´ehardv´erov´eprvky, ktor´esl´uˇzia ako v´ypoˇctov´ejednotky, s´uv drvivej v¨aˇcˇsine postaven´etak aby dovol’ovali paraleliz´aciua t’aˇziliz nej.

3.1.1 Procesory V dneˇsnejdobe vid´ıme, ˇzehlavn´yv´ykon procesora2 sa uˇznemeria iba pomocou jeho takto- vacej frekvencie, ale aj podl’a poˇctujadier, ktor´eobsahuje. V s´uˇcasnostisa beˇzne v osobn´ych poˇc´ıtaˇcoch pouˇz´ıvaj´udvojjadrov´e,trojjadrov´e, alebo aˇzˇstvorjadrov´eprocesory. S n´astupom nov´ych procesorov je vidiet’, ˇzetento trend bude postupovat’ d’alej a v bl´ızkej bud´ucnostisa stretneme s procesormi, ktor´emaj´udesiatky aˇzstovky jadier. Viacjadrov´eprocesory n´am d´avaj´umoˇznost’ spracov´avat’ simult´annerovnak´ypoˇcetprocesov resp. vl´akien3 ako je poˇcet jadier. Snaha dosiahnut’ tento stav bola uˇzv minulosti, napr´ıklad pri pouˇzit´ı viacer´ych jednojadrov´ych procesorov alebo pri pouˇzit´ıtechnol´ogiehyper-threading, ktor´asimulovala spr´avanie dvojjadrov´ehoprocesora nad obyˇcajn´ymjednojadrov´ymprocesorom, takˇzeaj jednojadrov´yprocesor bol schopn´yspracov´avat’ dve vl´aknav rovnakom ˇcase.Procesory s´u vd’aka svojej univerz´alnostivhodn´ena ak´ykol’vek druh v´ypoˇctov.

3.1.2 Grafick´yprocesor Najv´ykonnejˇsias´eriovo vyr´aban´agrafick´akarta s´uˇcasnosti(ATI 4870-X2) dosahuje hrub´y v´ykon 2,4 TFLOPS za pouˇzitia dvoch grafick´ych procesorov4 [1]. Tento v´ykon je mno- hon´asobnevyˇsˇs´ıoproti najv´ykonnejˇsiemu procesoru, ktor´ydosahuje pribliˇzne51,2 GFLOPS (Intel i7-965) [13]. Tento ohromn´yrozdiel vo v´ykone grafickej karty je dosiahnut´ymas´ıvnou paraleliz´aciou,kde t´atokonkr´etnakarta vyuˇz´ıva 1600 stream procesorov5. Stream procesory s´uzjednoduˇsen´eprocesory schopn´eaplikovat’ rovnak´usadu inˇstrukci´ına vel’k´emnoˇzstvo

2CPU - Central Processing Unit 3angl. thread(s) 4GPU - Graphics Processing Unit 5800 v kaˇzdomgrafickom procesore

9 d´at.Okrem v´yhody, ktorou je vysok´ar´ychlost’ spracov´avania d´at,s´utu aj znaˇcn´enev´yhody. Je to napr´ıkladnemoˇznost’ akejkol’vek priamej komunik´aciemedzi v´ypoˇctov´ymijednotkami, obmedzen´ainˇstrukˇcn´asada, limitovan´apresnost’ pri oper´aci´ach s pohyblivou desatinnou ˇciarkou6 a vel’mi n´ızkyv´ykon na jedno vl´akno.Kvˆolit´ymto nev´yhod´amsa grafick´eproce- sory hodia iba na tie v´ypoˇctov´eprobl´emy, ktor´ymnevadia spomenut´enev´yhody.

Tieto prvky sa daj´ud’alej zdruˇzovat’ do v¨aˇcˇs´ıch celkov, ˇc´ımvzrast´av´ypoˇctov´yv´ykon ako celku a ´ulohu teda mˆoˇzemevyrieˇsit’ za kratˇs´ıˇcas.Tento princ´ıpsa vyuˇz´ıva napr´ıklad pri stavan´ısuper poˇc´ıtaˇcov, ktor´es´uzloˇzen´ez desat’ tis´ıcov procesorov.

3.2 Softv´er

Z pohl’adu softv´eruvyˇzadujeparaleliz´aciaurˇcit´uschopnost’ komunik´aciemedzi procesmi, ktor´espolu tvoria celok. T´asa mˆoˇzeuskutoˇcˇnovat’ rˆoznymi spˆosobmi,ako napr´ıkladz´apisom a ˇc´ıtan´ımzo zdiel’anej pam¨atealebo zasielan´ımspr´avpo urˇcitomkomunikaˇcnomkan´ale, ktor´ymmˆoˇzebyt’ napr´ıkladpriame prepojenie jadier v r´amcijedn´ehoprocesora, nejak´yelek- tronick´yobvod medzi dvoma procesormi, alebo obyˇcajn´esiet’ov´espojenie dvoch poˇc´ıtaˇcov. Uˇzz pohl’adu operaˇcn´ehosyst´emu sa n´amnaskyt´amoˇznost’ paraleliz´aciepomocou vl´akien,ktor´espolu zdiel’aj´upam¨at’, alebo procesov, ktor´esi mˆoˇzuzasielat’ sign´alya spr´avy. Operaˇcn´ysyst´emje vˇsaklimitovan´yna jeden fyzick´ypoˇc´ıtaˇc,takˇzenie je moˇzn´evytvo- rit’ mas´ıvneparaleln´uaplik´aciuiba pomocou n´astrojov dostupn´ych v tomto syst´eme.Je nutn´epouˇzit’ extern´en´astroje, ktor´eumoˇzˇnuj´uurˇcit´uformu manaˇzmentu procesov nad operaˇcn´ymsyst´emoma taktieˇzich vz´ajomn´ukomunik´aciu. Existuje viacero druhov komunikaˇcn´ych kan´alov, a teda existuje viac spˆosobov, ako mˆoˇzu medzi sebou jednotliv´eprocesy komunikovat’. Z tohto dˆovodu existuj´urˆozne kniˇznice,ktor´e zapuzdruj´uviacer´edruhy komunik´acie,ˇciˇzepri programovan´ım´amek dispoz´ıciipreddefi- novan´ejednotn´efunkcie urˇcen´ena komunik´aciu,a zvolen´akniˇznica sama vyberie najlepˇs´ı spˆosobzaslania d´at.

3.2.1 MPI MPI (Message Passing Interface) je ˇstandard definuj´ucisyntax a s´emantiku rut´ınv kniˇznici, ktor´es´upouˇzitel’n´epre ˇsirok´uˇsk´aluuˇz´ıvatel’ov a umoˇzˇnuj´uefekt´ıvnu implement´aciuna mnoh´ych architekt´urach. [7]

Ciel’ MPI:

• N´avrhprogramovacieho rozhrania pre aplik´acie.

• Poskytnutie efekt´ıvnejkomunik´acie.Vyhnutie sa kop´ırovaniu z pam¨atedo pam¨ate, povolit’ prekr´yvanie sa v´ypoˇctua komunik´aciea presun´ut’ vˇsetkumoˇzn´ukomunik´aciu na koprocesor.

• Umoˇznit’ rˆoznym aplik´aci´ambeh v heterog´ennomprostred´ı.

• Podpora jazykov C a Fortran 77.

6angl. floating point operations

10 • Poskytnutie spol’ahlivej komunik´acie,takˇzesa uˇz´ıvatel’ nemus´ızaoberat’ chybami pri komunik´acii.Tieto chyby s´urieˇsen´ev komunikaˇcnomsubsyst´eme.

• Defin´ıciarozhrania s minim´alnym rozdielom oproti zauˇz´ıvan´ympraktik´ama poskyt- nutie rozˇs´ıren´ıpre v¨aˇcˇsiuflexibilitu.

• Vytvorenie rozhrania, ktor´emˆoˇzebyt’ bez probl´emov implementovan´ena viacer´ych platform´ach, s minim´alnym z´asahomdo z´akladusyst´emu.

• Dosiahnutie s´emantiky rozhrania, ktor´aje nez´avisl´ana platforme.

• N´avrhrozhrania, ktor´edovol’uje bezpeˇcn´evykon´avanie k´oduv paralelnom prostred´ı7.

Z´akladn´evlastnosti MPI:

• Priama komunik´aciamedzi dvoma prvkami: Odosielanie spr´avje z´akladn´ym komunikaˇcn´ymmechanizmom v MPI. Pre komunik´aciumedzi dvoma prvkami sa pouˇz´ıvaj´ufunkcie send“ a receive“, ktor´eexistuj´uv blokuj´ucoma neblokuj´ucom ” ” preveden´ı.

• Kolekt´ıvna komunik´acia: Na komunik´aciu,ktor´azah´rˇnaskupinu procesov, po- skytuje MPI viacero funkci´ı,ako napr´ıklad:rozposlanie spr´avvˇsetk´ym´uˇcastn´ıkom8; odoslanie d´aturˇcitouskupinou procesov; rozposlanie d´aturˇcitejskupine procesov; glob´alneredukˇcn´eoper´acie(napr. sum, min, max); synchronizaˇcn´yn´astroj bari´era atp.

• Skupiny procesov: Skupina je mnoˇzinaidentifik´atorov procesov (a teda samotn´ych procesov), nad ktorou je moˇzn´evykon´avat’ urˇcit´eoper´aciev r´amciMPI.

• Komunikaˇcn´ekontexty: Kontext je vlastnost’ spr´avy, ktor´an´amdovol’uje rozdelit’ priestor pre komunik´aciu.Kaˇzd´aspr´ava, ktor´aje odoslan´av urˇcitomkontexte, nemˆoˇze byt’ prijat´av kontexte rozdielnom.

• Topol´ogiaprocesov: Topol´ogiaje volitel’n´yatrib´ut,ktor´yn´amdovol’uje pohodln´y mechanizmus pre pomenov´avanie skupinu procesov.

• Rozhranie pre C a Fortran 77: MPI definuje rozhranie pomocou funkci´ıv jazykoch C a Fortran 77.

• Spr´avua monitorovanie prostredia: MPI obsahuje viacer´erutiny pre z´ıskavanie a nastavovanie rˆoznych parametrov s´uvisiacich s implement´aciouMPI a prostred´ım, v ktorom p´uˇst’ame aplik´acie.

• Profilovacie rozhranie: MPI definuje kaˇzd´ufunkciu v profilovacej verzii, ktor´asa zapisuje s prefixom PMPI “ na rozdiel od klasick´eho MPI “. Tieto funkcie zhromaˇz- ” ” d’uj´ud´atao behu aplik´acie,ktor´eumoˇzˇnuj´un´asledn´eprofilovanie aplik´acienap´ısanej pomocou MPI.

7angl. thread safety 8angl. broadcast

11 3.2.2 PVM PVM (Parallel Virtual Machine) je podobne ako MPI urˇcen´ena paraleliz´acius vysokou ˇsk´alovatel’nost’ou9. Na rozdiel od MPI PVM je integrovan´asada softv´erov´ych n´astrojov a kniˇzn´ıc,ktor´eemuluj´uflexibiln´y,heterog´enny, v´ypoˇctov´ysyst´emna sieti prepojen´ych poˇc´ıtaˇcov rozdielnej architekt´ury, dovol’uj´ucis´ubeˇzn´espracov´avanie ´uloh.Hlavn´eˇcrty PVM: [11]

• Uˇz´ıvatel’sky definovan´ezdruˇzeniehostitel’sk´ych poˇc´ıtaˇcov: V´ypoˇctov´e´ulohy aplik´acies´uvykon´avan´ena mnoˇzinepoˇc´ıtaˇcov definovanej uˇz´ıvatel’om pri spusten´ı PVM aplik´acie. V´yhodou PVM je, ˇzet´utomnoˇzinu je moˇzn´emenit’ prid´avan´ımalebo odstraˇnovan´ımhostitel’sk´ych poˇc´ıtaˇcov za behu aplik´acie.

• Transparentn´ypr´ıstupk hardv´eru: Aplik´aciamˆoˇzek hardv´erupristupovat’ ako ku kolekcii virtu´alnych v´ypoˇctov´ych prvkov bez rˆoznych atrib´utov alebo selektovat’ dostupn´yhardv´erpodl’a jeho schopnost´ıa rozdel’ovat’ urˇcit´ev´ypoˇctov´e´ulohy podl’a toho, pre ktor´yhardv´ers´unajvhodnejˇsie.

• V´ypoˇcty zaloˇzen´ena procesoch: Jednotka paralelizmu v PVM je ´uloha(zvyˇcajne proces), sekvenˇcn´ysled oper´aci´ı,ktor´ystrieda medzi komunik´acioua v´ypoˇctom.PVM nevykon´ava ˇziadnemapovanie typu proces-procesor, takˇzeviacer´e´ulohy mˆoˇzubyt’ spusten´ena jednom procesore.

• Explicitn´ymodel komunik´acie: V kolekcii procesov, kde kaˇzd´yvykon´ava urˇcit´u ˇcast’ ´ulohaplik´acie,definovan´upomocou d´atovej, funkcion´alnejalebo hybridnej de- kompoz´ıcie,medzi sebou procesy spolupracuj´uexplicitne pomocou zasielania a prij´ı- mania spr´av.Vel’kost’ spr´avyje limitovan´aiba vel’kost’ou dostupnej pam¨ate.

• Podpora heterog´ennehohardv´eru: PVM podporuje heterog´ennost’ v zmysle pou- ˇzit´ehohardv´eru,siete a aplik´aci´ı.So zretel’om na komunik´aciuje podporovan´ezasie- lanie spr´av,ktor´eobsahuj´uviacero d´atov´ych typov, k´ymjednotliv´epoˇc´ıtaˇcemaj´u rozdielnu reprezent´aciut´ychto d´at.

• Multiprocesorov´apodpora: Vd’aka rozpozn´avaniu architekt´ury a vyuˇzitiutejto znalosti dok´aˇzePVM vyuˇzit’ nat´ıvnezasielanie spr´av,ktor´ev sebe zah´rˇnaj´uviacpro- cesorov´esyst´emy.

PVM je zloˇzen´ez dvoch ˇcast´ı.Prv´aˇcast’ je d´emon10 naz´yvan´y pvmd3“, ktor´yje rezi- ” dentne spusten´yna vˇsetk´ych hostitel’sk´ych poˇc´ıtaˇcoch, ktor´espolu tvoria virtu´alny poˇc´ıtaˇc. Ak si uˇz´ıvatel’ vyˇziadaspustenie PVM aplik´acie,tak mus´ınajprv vytvorit’ virtu´alny poˇc´ıtaˇc pomocou PVM a aˇz n´aslednemˆoˇze byt’ aplik´aciaspusten´az niektor´eho hostitel’sk´eho poˇc´ıtaˇca.Uˇz´ıvatelia mˆoˇzunez´avislena sebe vytv´arat’ niekol’ko prekr´yvaj´ucich sa virtu´alnych poˇc´ıtaˇcov a kaˇzd´yuˇz´ıvatel’ mˆoˇzesp´uˇst’at’ viacero aplik´aci´ınaraz. Druh´aˇcast’ tohto syst´emu je kniˇznicadefinuj´ucarozhranie PVM. Obsahuje funkˇcne ´upln´ys´ubor primit´ıv,ktor´es´unutn´epre spolupr´acumedzi ´ulohamiaplik´acie,uˇz´ıvatel’sk´e rutiny pre komunik´aciu,vytv´aranieprocesov, koordin´aciu´uloha modifik´aciuvirtu´alneho poˇc´ıtaˇca.

9angl. scalability 10poˇc´ıtaˇcov´yprogram, ktor´ydlhodobo beˇz´ına pozad´ıbez interakcie s uˇz´ıvatel’om

12 3.2.3 GPU GPU (Global Processing Unit)[20] na rozdiel od MPI a PVM ide trochu in´ymsmerom a snaˇz´ısa spr´ıstupnit’ v´yhody paraleln´ehospracov´avania pre masy, kde uˇz´ıvatel’ nemus´ımat’ vlastn´ypr´ıstupk v´ypoˇctov´ymjednotk´am.GPU je zaloˇzen´ena protokole Gnutella[15], ktor´y dovol’uje poˇc´ıtaˇcomvytv´arat’ virtu´alnesiete nad TCP/IP11 a zdiel’at’ medzi sebou d´ata. Tento protokol bol pre potreby GPU upraven´ytak, aby d´atapren´aˇsan´emedzi prvkami siete obsahovali aj oper´acie,ktor´esa nad t´ymitod´atamimaj´uvykonat’. T´atosiet’ je vytvoren´a pomocou aplik´acieGPU, kde kaˇzd´yklient je z´aroveˇnserver, ˇco znamen´a,ˇzekaˇzd´yprvok siete mˆoˇzevyuˇz´ıvat’ poskytovan´esluˇzby ostatn´ymiprvkami, ako aj on s´ammus´ıposkytovat’ sluˇzby ostatn´ymprvkom siete. GPU obsahuje rozhranie pre rozˇs´ırenia, takˇzeprakticky ak´ykol’vek v´ypoˇctov´yprobl´emmˆoˇzebyt’ paralelizovan´ypodl’a potreby.

+ odpad´anutnost’ vlastnit’ vel’k´emnoˇzstvo hardv´eru

+ dostupnost’ pre masy

− vysok´alatencia

− dostupn´yhardv´erje zdiel’an´y

− dynamicky sa meniaci poˇcetv´ypoˇctov´ych jednotiek

Uloh´amspracov´avan´ympomocou´ GPU je moˇzn´enastavovat’ rˆoznu prioritu a teda klient nemus´ıbyt’ vˆobec ruˇsen´yv´ypoˇctom(mˆoˇzemu nastavit’ najniˇzˇsiu prioritu).

3.2.4 Zhrnutie Existuj´uaj d’alˇsiesoftv´erov´emoˇznostiako paralelizovat’ aplik´acie,napr´ıkladOpenMP[2] ˇci OpenCL (dok´aˇzevyuˇz´ıvat’ aj grafick´eprocesory na matematick´ev´ypoˇcty)[12], avˇsaktieto pracuj´uiba nad v´ypoˇctov´ymmodelom so zdiel’anou pam¨at’ou, ˇcon´amnevyhovuje.

11komunikaˇcn´yprotokol

13 Kapitola 4

Realiz´acia

Met´odasledovania l´uˇcasa d´apop´ısat’ ako urˇcit´ysled v´ypoˇctov, kde v´ypoˇcetjedn´ehol´uˇca nasleduje v´ypoˇcetdruh´eho l´uˇcaa tieto s´umedzi sebou nez´avisl´e.Pr´ave t´atonez´avislost’ n´amd´ava moˇznost’ vysokej paraleliz´acie a teda schopnost’ maxim´alnevyuˇzit’ v´ypoˇctov´u silu, ktor´um´amek dispoz´ıcii.Vznik´an´amtu vˇsakniekol’ko probl´emov, ktor´emus´ımepri paraleliz´aciirieˇsit’. Najprv si vˇsakbolo nutn´ezvolit’ zobrazovac´ısoftv´er,na ktorom aplik´aciu postav´ıme.

4.1 YafaRay

Z vol’ne dostupn´ych zobrazovac´ıch syst´emov som si pre svoju pr´acuvybral YafaRay[8], ktor´yje uˇzniekol’ko rokov s´uˇcast’ou popul´arneho3D modelovacieho softv´eruBlender[9] a aktu´alne je v pr´ıprave modul[5] pre fungovanie v modelovacom programe trueSpace [4]. Dˆovody, preˇcosom zvolil YafaRay:

• Programovac´ıjazyk: Jadro tohto softv´eruje nap´ısan´ekompletne v C++, ˇcomi vyhovuje kvˆolivol’be kniˇznice,pomocou ktorej budem tento zobrazovac´ısyst´empa- ralelizovat’. • Akt´ıvny v´yvoj a komunita: YafaRay je st´alev akt´ıvnomv´yvoji a jeho komunita sa zdruˇzujena internete. M´amteda moˇznost’ z´ıskavat’ inform´aciepriamo od v´yvoj´arov, ako aj poskytn´ut’ pomoc pri jeho v´yvoji. • Vlastn´erozhranie: YafaRay vyuˇz´ıva vlastn´yform´atvstupn´ych d´at(zaloˇzen´yna XML), ktor´ydefinuje samotn´usc´enu, ako aj nastavenia zobrazovacieho syst´emu. Tie- to vstupn´ed´ataje jednoduch´emodifikovat’ za ´uˇcelomoptimaliz´aciea nie je nutn´e pouˇz´ıvat’ aplik´acietret´ıch str´an. • Pokroˇcilost’: YafaRay umoˇzˇnujezobrazovat’ detailn´esc´eny, ktor´evyuˇz´ıvaj´upokroˇcil´e nastavenia osvetlenia, materi´alov atp. Vd’aka tomu rastie zloˇzitost’ sc´eny a dovol’uje mi testovat’ v´ysledn´uaplik´aciuna vysokom poˇctepoˇc´ıtaˇcov bez toho, aby bola r´ychlost’ zobrazovania limitovan´akomunik´aciou. • LGPL licencia: T´atolicencia mi umoˇzˇnujeak´ukol’vek ´upravu zdrojov´ehok´odupˆo- vodn´ehosoftv´eru.

Hist´oriatohto projektu siaha do roku 2001, kedy Alejandro Conty Est´evez zaˇcalpro- gramovat’ projekt YafRay (Yet Another Free Raytracer), ktor´ybol v j´uli2002 vypusten´y

14 pre verejnost’. Na poˇziadavku komunity grafikov v programe bol YafRay v au- guste 2004 pridan´ydo Bleneru ako z´asuvn´ymodul. N´avrhvˇsaknebol dostatoˇcneflexibiln´y a prid´avanie d’alˇsejfunkcionality si vyˇzadovalo prepisovanie vel’k´ych ˇcast´ık´odu.Posledn´a verzia YafRay je 0.0.9 z leta 2006. YafaRay je v´ysledokprepisovania YafRayu od z´akladu, zaˇcalosa na ˇnompracovat’ uˇzv decembri 2005. V okt´obri2008 bola vydan´averzia 0.1.0 zaloˇzen´ana rev´ızii280. YafaRay je moment´alnevo verzii 0.1.0.301 (13. apr´ıl2009) a podporuje platformy Win- dows, Mac OS X a Linux. Na skompilovanie sa pouˇz´ıva automatizovan´ysoftv´erov´yn´astroj SCons [10] a medzi vyˇzadovan´ekniˇznicepatr´ıpthread1, libxml2, libjpeg3, libpng4, Ope- nEXR5 (volitel’n´e),freetype26, zlib7 a Qt8 (volitel’n´e). Hlavn´evlastnosti YafaRayu:

• Osvetlenie: bodov´e,smerov´e,ploˇsn´e,sf´erick´e,slneˇcn´e,svetlo prostredia

• Materi´aly: pouˇzitieviacer´ych druhov materi´aluna objekt, rozpt´ylen´ea zrkadlov´eod- razy, priesvitnost’, priehl’adnost’, podpora leskl´ehoa matn´ehomateri´alu,vyˇzarovanie materi´alu

• Mapovanie: podpora viacer´ych text´urna shader9, UV mapovanie10, atp.

• Text´ury: z´akladn´etypy obrazov´ych text´ur(tga, jpeg, png, exr, hdr), procedur´alne text´ury(oblaky, mramor, drevo, ˇsum,atp.)

• Pozadia: konˇstantn´e,gener´atorslneˇcnejoblohy so slneˇcn´ymsvetlom a svetlom ob- lohy, text´urovan´e,gradient

• Kamery: perspekt´ıvna,ortografick´a,architektonick´aa uhlov´akamera

• Ploˇsn´eintegr´atory: sledovanie dr´ahy l´uˇca11, obojsmern´esledovanie dr´ahy l´uˇca12 path tracing, priame nasvetlenie s podporou kaustiky a pohlcovania svetla

• Antialiasing: adapt´ıvnevyhladzovanie hr´an13

• podpora rozˇs´ıren´ı

4.2 Komunikaˇcn´eprostredie

Jednou z op´ısan´ych moˇznost´ıpre mas´ıvnu paraleliz´aciuje kniˇznicaMPICH, ktor´aimple- mentuje MPI (Message Passing Interface) pre jazyk C/C++ a poskytuje vysok´yv´ykon

1implement´aciaPOSIXov´ych vl´akien 2kniˇznicaurˇcen´ana spracov´avanie XML s´uborov 3spracov´avanie obrazov´eho form´atujpeg 4spracov´avanie obrazov´eho form´atupng 5spracov´avanie obrazov´eho form´atuopenexr 6kniˇznicapre zobrazovanie p´ısma 7kniˇznicaurˇcen´ana kompresiu d´at 8defin´ıciagrafick´ehouˇz´ıvatel’sk´ehorozhrania 9sada inˇstrukci´ıvykon´avan´agrafick´ymprocesorom 10angl. UV mapping 11angl. path tracing 12angl. bidirectional path tracing 13angl. adaptive antialiasing

15 a ˇsirok´uportabilitu na rˆoznych platform´ach. Podporuje viacero druhov komunik´acieako unicast, multicast alebo broadcast, v blokuj´ucejalebo neblokuj´ucejforme. Blokovacie zasielanie d´atznamen´a,ˇzeodosielatel’ ˇcak´a,k´ym sa d´ataz vyrovn´avacej pam¨ateneodoˇsl´upomocou komunikaˇcn´ehokan´aluprij´ımatel’ovi. Pri neblokuj´ucomodoslan´ı spr´avyodosielatel’ vyˇslepr´ıkaz na odoslanie, ale neˇcak´ana samotn´eodoslanie. Z tohto dˆovodu je nutn´edat’ pozor na to, aby d´atav pam¨atineboli prep´ısan´epredt´ym,neˇzs´unaozaj odoslan´e.Blokuj´uceprij´ımaniespr´avzastav´ıproces a ˇcak´a,k´ymneprijme dan´uspr´avu. Poˇcastohto ˇcakania nie je moˇzn´evykon´avat’ ˇziadnu in´uˇcinnost’. Neblokuj´uceprij´ımanie spr´avyznamen´a,ˇzeproces spr´avuoˇcak´ava, ale neblokuje spracov´avanie k´odu,takˇzemˆoˇze vykon´avat’ in´uˇcinnost’. Pri oboch typoch neblokuj´ucejkomunik´aciemˆoˇzemeotestovat’ ˇci komunik´aciaprebehla do konca a podl’a toho rozhodn´ut’, ako bude proces pokraˇcovat’ d’alej. Oba druhy blokuj´ucejkomunik´acievyuˇz´ıvaj´upas´ıvneˇcakanie. MPICH po spusten´ıinicializuje dve premenn´e,z ktor´ych jedna drˇz´ıhodnotu poˇctuspus- ten´ych procesov a druh´aidentifikaˇcn´eˇc´ısloaktu´alnehoprocesu. Takto je moˇzn´ejednoducho adresovat’ spr´avyostatn´ymprocesom alebo napr´ıkladrozdel’ovat’ pr´acumedzi procesmi bez nutnosti mat’ jeden centr´alny proces, ktor´yby t´utoˇcinnost’ riadil. Pri pouˇzit´ıMPICH je nutn´edefinovat’ tzv. machinefile“, ˇcoje s´ubor obsahuj´ucin´azvypoˇc´ıtaˇcov, ktor´ebud´u ” pouˇzit´ena v´ypoˇcet.T´atokniˇznicaje dostupn´ana vˇsetk´ych ˇskolsk´ych poˇc´ıtaˇcoch a teda v tomto ohl’ade nie je nutn´eˇziadne zasahovanie do ich softv´erov´ehovybavenia.

4.3 Paraleliz´aciasledovania l´uˇca

4.3.1 Rozdelenie pr´ace Pred samotn´ymzobrazen´ımje nutn´ev´ypoˇcetsc´eny rozdelit’ na menˇsiev´ypoˇcty a distri- buovat’ ich medzi v´ypoˇctov´ejednotky. Toto rozdelenie sa d´aovplyvnit’ viacer´ymispˆosobmi a teda m´ameviac moˇznost´ıefekt´ıvnevyrieˇsit’ tento probl´em.

Rozdelenie podl’a poˇctuv´ypoˇctov´ych jednotiek Najjednoduchˇs´ımspˆosobom, ako rozdelit’ sc´enu, je prakticky narezat’“ pl´atnona urˇcit´y ” poˇcetˇcast´ı,ktor´ysa rovn´apoˇctudostupn´ych procesorov a v´ysledn´yobraz poskladat’ z t´ychto ˇcast´ı.Tu n´amnast´ava probl´emnevyuˇzitiavˇsetk´ych procesorov po cel´yˇcas,pretoˇzesc´ena nie je rovnako zloˇzit´avo vˇsetk´ych svojich ˇcastiach a teda v´ypoˇcetjednej ˇcastimˆoˇzetrvat’ nepomerne dlhˇs´ıˇcas neˇzv´ypoˇcetinej ˇcasti.Toto by mohlo spˆosobit’ situ´aciu,kde jeden procesor poˇc´ıtasvoju ˇcast’ sc´eny a pritom ostatn´eprocesory s´uv stave neˇcinnostia celkov´a efektivita syst´emu kles´a.

Rozdelenie podl’a zloˇzitostisc´eny N´ızka efektivita predoˇsl´ehospˆosoburozdel’ovania pr´acesa d´aeliminovat’ vytvoren´ımalgo- ritmu, ktor´yanalyzuje sc´enu ako celok a potom ju rozdel´ına ˇcasti,ktor´evyˇzaduj´upribliˇzne rovnak´yˇcasspracovania. Na efektivite tohto algoritmu potom z´aleˇz´ıcel´yparalelizovan´y syst´em.Vel’kou nev´yhodou tejto anal´yzyje cena, pretoˇzedosiahnutie vysokej efektivity je podmienen´eh´lbkov´ymrozborom sc´eny, ˇcoje taktieˇzv´ypoˇctovo vel’mi n´aroˇcn´e.Poˇcastejto anal´yzyby boli vˇsetkyv´ypoˇctov´ejednotky v stave neˇcinnosti.

16 Model klient-server Dalˇsoumoˇznostˇ ’ou je pouˇzit’ model klient-server, kde jeden proces bude distribuovat’ pr´acu medzi viacer´evedl’ajˇsie procesy, ak o ˇnupoˇziadaj´u.Tu n´amvznikaj´udva limituj´ucefaktory, podl’a ktor´ych sa mus´ımeriadit’. Ak sa rozhodneme rozdel’ovat’ pr´acuna vel’mi mal´eˇcasti, vznikne situ´acia,kde procesy bud´umedzi sebou viac komunikovat’ neˇzpoˇc´ıtat’ obraz a to bude obmedzovat’ celkov´ur´ychlost’ zobrazovania. Ak budeme rozdel’ovat’ pr´acuna pr´ıliˇs vel’k´eˇcasti,potom n´asbude obmedzovat’ pr´ave vel’kost’ tejto ˇcasti,pretoˇzevˇzdymˆoˇzenastat’ situ´acia,kde n´amzostane vypoˇc´ıtat’ len jednu ˇcast’ obrazu, ktor´abude dostatoˇcne zloˇzit´ana to, aby v´ykonnost’ cel´ehozobrazovacieho syst´emu rap´ıdneklesla. Preto je potrebn´ezvolit’ primeran´uvel’kost’ zobrazovanej ˇcasti, aby mohli procesy pracovat’ dostatoˇcneefekt´ıvne a v´ypoˇcetjednej ˇcastinebude kritick´y.Kaˇzd´av´ypoˇctov´ajednotka vˇsakbude poˇc´ıtat’ aˇz niekol’ko desiatok t´ychto segmentov, ˇcov koneˇcnomdˆosledkuvytv´arazbytoˇcn´ukomunik´aciu v poˇciatkuspracovania sc´eny.

Model klient-server s ohl’adom na zn´ıˇzen´ukomunik´aciu Model klient-server je vhodnou vol’bou pre zabezpeˇceniest´alejz´at’aˇzevˇsetk´ych v´ypoˇctov´ych jednotiek, je vˇsakdobr´eho modifikovat’ tak, aby sme minimalizovali komunik´aciu.Ked’ˇze vieme, ˇzev poˇciatkudistrib´uciepr´acemˆoˇzemepoˇc´ıtat’ s t´ym,ˇzekaˇzd´ajednotka vypoˇc´ıta aˇzniekol’ko desiatok menˇs´ıch v´ypoˇctov, tak mˆoˇzemepr´acu rozdel’ovat’ na vel’k´eˇcastia aˇz postupne vel’kost’ t´ychto ˇcast´ızmenˇsovat’. Napr´ıkladcel´usc´enu rozdel´ıme na 2n ˇcast´ı,kde n ˇcast´ırozdistribuujeme medzi n v´ypoˇctov´ych jednotiek a zvyˇsn´eˇcast´ırozdel´ımeznova na d’alˇs´ıch 2n ˇcast´ı,ktor´ebudeme distribuovat’ aˇznejak´yprocesor dokonˇc´ıpridelen´upr´acu a vyˇziadasi d’alˇsiu.Takto budeme rekurz´ıvnepokraˇcovat’, aˇzk´ymnenaraz´ımena dopredu urˇcen´ylimit vel’kosti bloku, pod ktor´yuˇznebudeme sc´enu d’alej rozdel’ovat’. T´ato met´oda je pri v´ykonnostne rovnak´ych v´ypoˇctov´ych jednotk´ach najvhodnejˇsia,hlavne z pohl’adu komunik´acie.

4.3.2 Komunik´acia Dalˇs´ıˇ probl´em,ktor´yje nutn´evyrieˇsit’ pri n´avrhu, je komunik´acia.Medzi jednotliv´ymi obr´azkami anim´aciebud´uzmeny na sc´enea tie bude potrebn´edistribuovat’ medzi procesy tak, aby vedeli ako spracovat’ nasleduj´uciobr´azok.

17 Kapitola 5

Implement´acia

5.1 Rozdelenie pr´ace

Model klient-server z kapitoly 4.3.1 je implementovan´yv plnej miere. Vˇsetkyz´uˇcastnen´e procesy maj´utzv. mapu obr´azku,kde s´uvˇsetkybloky unik´atneoˇc´ıslovan´e.T´ymto spˆosobom z´ıskame r´ychlejˇsiua jednoduchˇsiukomunik´aciuza cenu o nieˇcovyˇsˇs´ıch pam¨at’ov´ych n´arokov, ked’ˇzena oznaˇceniebloku staˇc´ıodoslat’ jeho identifikaˇcn´eˇc´ısloa nie vˇsetkyjeho s´uradnice. Uk´aˇzkurozdelenia pr´acepri pouˇzit´ı4 procesov a obr´azkuso ˇs´ırkou 800 obrazov´ych bodov mˆoˇzemevidiet’ na obr´azku 5.1. Pri distribuovan´ıpr´acezaˇc´ınahlavn´yproces od bloku ˇc´ıslo 0 a inkrement´alnepokraˇcujeaˇzdo konca zoznamu, ˇcorovnomerne distribuuje z´at’aˇz.Pri zvyˇsovan´ıpoˇctuprocesov sa takmer line´arnezvyˇsujepoˇcet blokov.

0 1 2 3 4 5 6 7 8 9 10 11 12 13

100 50 34 30

800 px

Obr´azok5.1: Sch´emarozdelenia obr´azkuna viacer´ebloky pri pouˇzit´ı4 procesov. Obr´azok m´aˇs´ırku800 obrazov´ych bodov.

5.2 Zmeny na sc´ene

Uˇz´ıvatel’ je v interakcii iba s hlavn´ymprocesom, ktor´yzobrazuje sc´enu na obrazovke a taktieˇzzbiera ´udaje o zmene kamery pomocou myˇsi a kl´avesnice. Hlavn´yproces pri

18 poˇciatoˇcnomnaˇc´ıtan´ısc´eny zist´ınastavenie kamery (poz´ıciaa vektory urˇcuj´ucesmer a oto- ˇcenie)a z t´ychto ´udajov vypoˇc´ıtadva uhly, pomocou ktor´ych sa neskˆorurˇcujehorizont´alne a vertik´alneotoˇceniekamery. Pri pohybe kamery pomocou kl´avesnice staˇc´ı jednoducho prepoˇc´ıtat’ jej poz´ıciu,ˇcosa deje pomocou priˇc´ıtaniaalebo odˇc´ıtaniavektoru od poz´ıcie. Ak vˇsakuˇz´ıvatel’ ot´aˇcakamerou, hlavn´yproces zaznamen´ava pohyb myˇsia premieta ho ako zmenu uhlov otoˇcenia.N´aslednes´upomocou t´ychto uhlov prepoˇc´ıtan´evektory definuj´uce kameru, ktor´emˆoˇzemeodoslat’ vedl’ajˇs´ımprocesom. Druh´amoˇznost’ by bola posielat’ vedl’ajˇs´ımprocesom iba uhly a tie by si samotn´evektory vypoˇc´ıtalisam´e,to by vˇsakuberalo z v´ypoˇctov´ehov´ykonu vedl’ajˇs´ıch procesov a preto tieto vektory poˇc´ıtahlavn´yproces. Z tohto dˆovodu bolo nutn´eaby hlavn´yproces taktieˇznaˇc´ıtal sc´enu z XML s´uboru a t´ymz´ıskal inform´aciu,ako je definovan´akamera.

5.3 Komunik´acia

Pri paralelnom spracov´avan´ıvyˇzadujemevysok´ur´ychlost’ a preto mus´ıbyt’ komunik´acia rieˇsen´as minim´alnour´eˇziou.Poˇcasbehu aplik´acienast´avaj´utri situ´acie,kedy je potrebn´e, aby medzi sebou komunikovali dva prvky.

Odosielanie pr´ace Hlavn´yproces je v stave neust´alehoprij´ımaniaspr´avyo dokonˇcen´ıurˇcit´ehobloku. Po pri- jat´ıspr´avyo ˇc´ısleobr´azkua bloku, ktor´yje n´asledneodoslan´yvedl’ajˇs´ımprocesom, zah´aji hlavn´yproces blokuj´uceˇcakanie na obrazov´ed´ata.Je nutn´epouˇzit’ blokuj´uceˇcakanie, aby bol vedl’ajˇs´ıproces obsl´uˇzen´yˇconajr´ychlejˇsiea mohol pokraˇcovat’ v spracov´avan´ıd’alˇsieho bloku d´ata taktieˇzaby neblokoval d’alˇsieprocesy, ktor´echc´uodoslat’ d´atahlavn´emu pro- cesu. Po prijat´ı hotov´ehobloku ho hlavn´yproces spracuje a pokraˇcujev neblokuj´ucom ˇcakan´ına d’alˇsiespr´avy. Vedl’ajˇs´ıproces pokraˇcujev spracov´avan´ıd’alˇsiehobloku. Komu- nik´aciuzn´azorˇnujediagram 5.2.

Server Klient

ku blo ácia tifik Iden

Príprava na príjem dát a Dát

Obr´azok5.2: Diagram komunik´aciepri odosielan´ıd´atov´ehobloku.

19 Vyˇziadaniepr´ace V obvyklom pr´ıpadeby postaˇcovalo, aby bola nov´apr´acazaslan´aaˇzpri prijat´ıhotovej pr´ace,avˇsakmˆoˇzenastat’ pr´ıpad,kedy dva vedl’ajˇsie procesy odosielaj´upr´acua jeden z nich by musel ˇcakat’, k´ymten druh´ydokonˇc´ıkomunik´aciu, aby mohol byt’ obsl´uˇzen´y.Toto je neˇziaduciefekt blokuj´ucejkomunik´acie,preto je poˇziadavka o nov´upr´acusamostatnou ˇcast’ou komunik´acie,ktor´aprebieha eˇstepred odoslan´ımhotov´ehobloku obrazov´ych d´at. Pred dokonˇcen´ımbloku pr´aceodoˇslevedl’ajˇs´ıproces dotaz na nov´upr´acua neblokuj´uco ˇcak´ana odpoved’, ktor´udostane eˇstepoˇcasspracovania aktu´alneho bloku. Po dokonˇcen´ı a odoslan´ı bloku mˆoˇzevedl’ajˇs´ı proces bez preruˇseniapracovat’ na bloku nasleduj´ucom. Diagram 5.3 zobrazuje poˇziadavku a odpoved’.

Server Klient

rácu vú p o no osť Žiad Zahájenie neblokujúceho čakania Id ent ifiká tor b loku

Obr´azok5.3: Diagram komunik´aciepri ˇziadan´ıo pracovn´yblok.

Zmena sc´eny Pri povolen´ıinterakcie medzi uˇz´ıvatel’om a sc´enou, je nutn´etieto zmeny na sc´enepremi- etnut’ do vˇsetk´ych vedl’ajˇs´ıch procesov, ked’ˇzevˇsakchceme zabr´anit’ akejkol’vek zbytoˇcnej komunik´acii,tieto zmeny s´uodosielan´eiba ak nejak´enastan´u.Pred odoslan´ımprv´ehopra- covn´ehobloku z nov´ehoobr´azkusa zistia zmeny oproti predch´adzaj´ucemu. V pr´ıpade,ˇze nejak´ezmeny nastali, s´utieto odoslan´evˇsetk´ymvedl’ajˇs´ımprocesom, ktor´eich aplikuj´u pred zaˇciatkom nasleduj´ucehobloku. Z tohto vypl´yva, ˇzeak uˇz´ıvatel’ pohne kamerou v ˇcase zobrazenia urˇcit´ehosn´ımku(a prebieha v´ypoˇcetnasleduj´uceho),tieto d´atao pohybe sa odoˇsl´uaˇzpri zaˇcat´ıv´ypoˇctud’alˇsiehosn´ımku,takˇzev´ysledokpohnutia kamery sa na obra- zovke zobraz´ıaˇzdva sn´ımkyneskˆorneˇzbol dan´ypohyb vykonan´y.Ked’ˇzet´atokomunik´acia mˆoˇzenastat’ kedykol’vek poˇcasbehu aplik´acie,je nutn´eaby sa vedl’ajˇsie procesy spr´avali pri prij´ıman´ıspr´avyo kamere neblokuj´uco.Komunik´aciaje zobrazen´adiagramom 5.4. Ked’ˇzeMPI pracuje na piatej a vyˇsˇsejvrstve modelu OSI a na transportnej vrstve vyuˇz´ıva TCP, nie je potrebn´eodosielat’ potvrdenie o prijat´ı spr´av(TCP protokol za- bezpeˇcuje,ˇzeodoslan´aspr´ava bude doruˇcen´a).

20 Server Klient

D efi níci a no vej kam ery

Obr´azok5.4: Diagram komunik´aciepri zasielan´ınovej kamery.

5.3.1 Zobrazovanie Obrazov´ed´atazozbieran´ehlavn´ymprocesom sa zobrazuj´upomocou kniˇzniceSDL, ktor´a sl´uˇzina z´akladn´espracov´avanie multim´edi´ıa jednoduch´uspr´avuvstupno/v´ystupn´ych za- riaden´ı. SDL dovol’uje definovat’ ˇstrukt´uruvstupn´ych d´at,a teda je dostaˇcuj´ucevyuˇzit’ intern´upam¨at’ YafaRayu ako zdroj d´at,ktor´esa maj´uzobrazit’ na obrazovke.

5.3.2 Uˇz´ıvatel’sk´yvstup SDL definuje rˆozneudalosti, ktor´es´usp´uˇst’an´epri zachyten´ıinterakcie medzi uˇz´ıvatel’om a poˇc´ıtaˇcompomocou rˆoznych vstupn´ych zariaden´ı.V tomto pr´ıpadedetegujeme udalosti z myˇsia kl´avesnice, ktor´esa odzrkadl’uj´uako zmeny polohy kamery, resp. jej uhlu otoˇcenia. YafaRay m´akameru definovan´upolohou v sc´enea dvoma vektormi, ktor´edefinuj´usmer kamery a jej otoˇcenie.Aby bolo moˇzn´emenit’ polohu kamery je postaˇcuj´ucepriˇc´ıtat’ alebo odˇc´ıtat’ vektor smeru zmeny polohy od pˆovodnej poz´ıcie.Pri zmene uhlu otoˇceniaje to zloˇzitejˇsie,pretoˇzepohyb myˇsinie je moˇzn´ejednoducho premietnut’ do zmeny vektorov. Pri inicializ´aciiprogramu sa z defin´ıciekamery vypoˇc´ıtaj´udva uhly definuj´ucejej smer v horizont´alnoma vertik´alnomsmere. Tieto uˇzje jednoduch´eupravit’ podl’a vstupu z myˇsi, pretoˇzejej s´uradnices´utieˇzdan´ev horizont´alnoma vertik´alnomsmere. Po aplikovan´ı zmeny smerov´ych uhlov vypoˇc´ıtamenov´evektory, ktor´ymisa riadi YafaRay. Nev´yhodou je, ˇzenevieme, ˇciuˇz´ıvatel’ skˆorzmen´ıpolohu a smer kamery, alebo pr´ıde spr´ava od vedl’ajˇsiehoprocesu, preto mus´ımezabezpeˇcit’, aby bol hlavn´yproces schopn´y spracovat’ ak´ukol’vek poˇziadavku. Najjednoduchˇsieby bolo pouˇzitieMPI obdoby funkcie select() (z jazyka C) s ˇcasov´ymlimitom nastaven´ymtak, aby bol napr´ıkladpohyb sn´ıman´y 10-kr´atza sekundu. MPI vˇsakpodobn´ufunkciu neimplementuje, jedin´ymv´ychodiskom teda ost´ava pouˇzitieakt´ıvnehoˇcakania na spr´avyod vedl’ajˇs´ıch procesov a sn´ımat’ pohyb po vyprˇsan´ıurˇcit´ehoˇcasov´ehointervalu.

5.3.3 Zobrazovanie viacer´ych sc´en Samotn´yYafaRay je navrhnut´ytak, aby zobrazil jednu sc´enu a ukonˇcilsvoj beh. Z pohl’adu r´ychlosti n´amt´ymvznikaj´uprobl´emy pri inicializ´aciia alokovan´ıpam¨atea nastavovania zobrazovacieho syst´emu, pretoˇzekaˇzd´az t´ychto oper´aci´ıspomal’uje proces zobrazovania. Ked’ˇzeak´ekol’vek spomalenie je nepr´ıpustn´e,bolo nutn´evˇsetkymiesta, kde sa vykon´avala re- dundantn´aˇcinnost’, n´ajst’ a modifikovat’ tak, aby sa pri kaˇzdomsn´ımkuvykon´avali iba nutn´e

21 oper´aciepre inicializ´aciusc´eny a zobrazovacieho syst´emu. Vˇsetkyvyrovn´avacie pam¨ateboli zmenen´ena statick´e,ich vel’kost’ bola nastaven´ana tak´u,aby mohol dan´yproces spracovat’ blok s najv¨aˇcˇs´ımirozmermi, a ich alok´aciaa uvol’ˇnovanie sa vykon´ava iba pri spusten´ı, resp. na konci procesu. Nakoniec sa pri kaˇzdomnovom spracov´avanom bloku inicializuje iba objekt, ktor´yreprezentuje intern´upam¨at’ pre zobrazovan´ed´ataa nov´akamera, ak je dostupn´a.

5.4 Zbieranie d´at

Po skonˇcen´ızobrazovania sc´eny sa YafaRay snaˇz´ıuloˇzit’ d´atado s´uboru. Toto miesto bolo potrebn´eprep´ısat’ tak, aby vedl’ajˇsieprocesy odoslali tieto d´atahlavn´emu procesu, ktor´y ich zobraz´ı.Obrazov´ed´atas´uuloˇzen´ev jednorozmernom poli, kde kaˇzd´yzobrazovan´ypixel pozost´ava z troch bajtov, ktor´edefinuj´utri farebn´ezloˇzky(ˇcerven´a,zelen´a,modr´a).Vel’kost’ tohto pol’a je definovan´arozmermi pr´ave spracov´avan´ehobloku. Po vypoˇc´ıtan´ıcel´ehobloku je toto pole spolu s identifik´atoromodoslan´ehlavn´emu procesu, ktor´yho podl’a dan´ehoiden- tifik´atoruuloˇz´ına patriˇcn´emiesto v pam¨ati,ktor´abude zobrazen´apo dokonˇcen´ıv´ypoˇctu celej sc´eny.

5.5 Zhrnutie

Ako uˇzbolo spomenut´ev kapitole 4.1, YafaRay je naprogramovan´yv jazyku C++, teda aj n´asledn´e´upravy boli vykon´avan´ev C++ a C. Pre bezprobl´emov´yv´yvoj som zvolil operaˇcn´ysyst´emGNU/Linux (CentOS), kde jedinou nutnou ´upravou ˇskolsk´ych poˇc´ıtaˇcov bolo doinˇstalovanie n´astroja SCons, ktor´ysl´uˇzina automatiz´aciuprekladu zdrojov´ych k´odov do bin´arnejpodoby. Vˇsetky ostatn´evyˇzadovan´ekniˇznice1 boli predinˇstalovan´e. V nasleduj´ucich sekci´ach sa nach´adza ilustrat´ıvny k´odpre jednoduch´upredstavu spr´a- vania sa implementovanej aplik´acie.

1pthread, libxml, libjpeg, libpng, freetype2, zlib, SDL, mpich

22 5.5.1 Hlavn´yproces

int main () { // inicializ´acia, vstupn´e kontroly // nastavenie zobrazovacieho syst´emu // v´ypoˇcet s´uradn´ıc jednotliv´ych blokov // inicializ´acia SDL // poˇciatoˇcn´a defin´ıcia kamery // zaˇciatok prij´ımania spr´av od ostatn´ych procesov

while (1) { // kontrola stlaˇcenia kl´aves a pohybu myˇsi if ( udalostˇ ) { // zmena lok´alnej kamery }

// kontrola ukonˇcenia aplik´acie if ( koniec ) { // prijatie d´at od vˇsetk´ych procesov // odoslanie ukonˇcovacej sekvencie // ukonˇcenie aplik´acie }

// kontrola prijatia hotov´eho bloku d´at if ( prijatˇ nov´e d´ata) { // prijatie d´at a ich uloˇzenie do z´asobn´ıku

// kontrola ˇci sme prijali posledn´y blok sn´ımky if (posledn´y blok sn´ımky) { // zobrazenie sn´ımky na obrazovke } }

// kontrola prijatia poˇziadavky nov´ych d´at if ( odoslatˇ nov´e d´ata) { // zaslanie nov´eho bloku d´at

// kontrola ˇci zaslan´y blok bol posledn´ym if (posledn´y blok sn´ımky) { // rozposlanie lok´alnej kamery procesom } } } }

23 5.5.2 Vedl’ajˇs´ıproces

int main () { // inicializ´acia, vstupn´e kontroly // nastavenie zobrazovacieho syst´emu // v´ypoˇcet s´uradn´ıc jednotliv´ych blokov // inicializ´acia zobrazovacieho syst´emu // naˇc´ıtanie sc´eny z XML s´ubora // zaˇciatok prij´ımania spr´av od hlavn´eho procesu

while (1) { // vyˇziadanie pr´ace od hlavn´eho procesu

// kontrola prijatia ukonˇcovacej sekvencie if ( koniec ) { // ukonˇcenie spracov´avania a koniec aplik´acie } else { // kontrola prijatia novej kamery if (nov´a kamera) { // nastav nov´u kameru }

// reinicializuj sc´enu // zobraz dan´u sc´enu // odoˇsli vypoˇc´ıtan´u sc´enu hlavn´emu procesu } } }

24 Kapitola 6

Testovanie a vyhodnotenie v´ysledkov

Testovanie prebiehalo na ˇskolsk´ych stolov´ych poˇc´ıtaˇcoch, ktor´es´uprepojen´evysokor´y- chlostn´ymethernetom (1Gb/s) [22], ˇcozaruˇcujedostatoˇcn´ur´ychlost’ a priepustnost’ pre testovan´uaplik´aciu.Poˇc´ıtaˇceboli vybaven´edvojjadrov´ymiprocesormi Intel Core 2 CPU E6600 @ 2.40GHz (19.20 GFLOPS [13]) so 4MiB cache a 1GiB RAM. Pri testovan´ıbola vy- pnut´amoˇznost’ interakcie so sc´enou,aby testovanie rˆoznych konfigur´aciinebolo ovplyvnen´e odliˇsnouzloˇzitost’ou sc´eny, ale aby bola sc´ena pri kaˇzdom testovan´ıidentick´a. Zvolen´abola jednoduch´asc´enazloˇzen´az transparentn´ehomodelu Suzanne“ (testovac´ı ” objekt Blenderu [6]) na kv´adrovom podstavci a jedn´ehozdroja svetla (slneˇcn´esvetlo). Jed- noduchost’ tejto sc´eny bola zvolen´az dˆovodu snahy zabezpeˇcit’ vyt’aˇzeniehlavn´ehoprocesu, ktor´ytakto mus´ıneust´alevybavovat’ poˇziadavky vedl’ajˇs´ıch procesov, pretoˇzefrekvencia komunik´acierastie tak, ako zloˇzitost’ sc´eny kles´a,ked’ˇzev´ypoˇcty trvaj´ukratˇsiea t´ymsa interval komunik´acieskracuje. Zvolen´usc´enu je moˇzn´evidiet’ v pr´ılohe A.1. Cel´asc´enaje uloˇzen´av pam¨atipoˇc´ıtaˇcapoˇcasbehu aplik´aciea t´asi vyˇziadaokolo 9MiB. Pri testovan´ıbola aplik´acianastaven´ana zobrazenie 11 sn´ımok,kde sa kvˆolirelevant- nosti d´atzaˇcalipoˇc´ıtat’ ˇstatistick´e´udaje aˇzpo prvej sn´ımke, aby sa na v´ykone neodzrkadlil ˇcaspotrebn´yna vytvorenie z´asobn´ıkov a inicializ´aciesc´eny vo vedl’ajˇs´ıch procesoch. Po dokonˇcen´ızobrazovania sa vypoˇc´ıtalpriemern´yˇcaspotrebn´yna v´ypoˇcetjednej sn´ımky, pomocou ktor´ehosom potom urˇcilzr´ychlenie dan´ehonastavenia. Zobrazovan´asc´enamala rozl´ıˇsenie800x600 a vypnut´evyhladzovanie hr´an. Testovanie prebiehalo postupne s vyuˇzit´ımjedn´ehoprocesu, cez zdvojn´asobovanie poˇctu procesov a prep´ınan´ımmedzi pouˇzit´ımjedn´ehoalebo dvoch vl´akien.Ked’ˇzedostupn´epo- ˇc´ıtaˇceboli vybaven´edvojjadrov´ymiprocesormi, rozhodol som sa porovnat’ aj v´ykon medzi pouˇzit´ımdvoch vl´akienna proces a pouˇzit´ımjedn´eho vl´akna,ale s dvojn´asobn´ympoˇctom procesov. Je nutn´edodat’, ˇzemapovanie procesov na poˇc´ıtaˇceprebiehalo v pomere 1:1, a teda pri zdvojn´asoben´ı poˇctuprocesov s pouˇzit´ım jedn´ehovl´aknamalo toto nastave- nie k dispoz´ıciidvojn´asobn´ypoˇcetprocesorov, ˇciˇzedvojn´asobn´ukapacitu vyrovn´avaj´ucej pam¨atedruhej ´urovne, oproti nastaveniu s poloviˇcn´ympoˇctomprocesov a dvoma vl´aknami. Pri testovan´ısom bol obmedzen´ynastaven´ımoperaˇcn´ehosyst´emu ˇskolsk´ych poˇc´ıtaˇcov, ktor´ydovol’oval mat’ spusten´ych naraz iba 128 procesov. Skript sp´uˇst’aj´uci MPI aplik´aciu vˇsakvytv´aratol’ko SSH1 pripojen´ı,kol’ko procesov je nastaven´ych pre t´utoaplik´aciu.Ked’ˇze sa vˇsakvˇsetkytieto pripojenia vykon´avali naraz, nie je moˇzn´evytvorit’ dostatok pripojen´ı

1zabezpeˇcen´ykomunikaˇcn´yprotokol (Secure Shell)

25 z dˆovodu vyˇsˇsiespomenut´ehoobmedzenia. Na druh´ustranu uˇzsp´uˇst’anie 64 procesov zna- menalo ˇcakanie niekol’ko sek´undna inicializ´aciuMPI a spustenie samotnej aplik´acie.

Anal´yza v´ysledkov

Casˇ spracov´avania Tabul’ka 6.1 zobrazuje priemern´yˇcaspotrebn´yna spracovanie jednej sn´ımky z´avisl´yna poˇcteprocesov a vl´akien.Ako mˆoˇzemevidiet’, v´ypoˇcettestovacej sc´eny sa bl´ıˇzik jednej min´ute,ale pri prid´avan´ı spracuj´ucich procesov a vl´akiensa toto ˇc´ıslo takmer line´arne zniˇzuje.

Casˇ spracovania [s] Poˇcetprocesov 1 vl´akno 2 vl´akna 1 46,149207 23,167489 2 23,090452 11,607080 4 11,538156 5,850429 8 5,766047 2,930448 16 2,874914 1,471821 32 1,440179 0,742165 64 0,718295 0,372003

Tabul’ka 6.1: Casˇ priemern´ehospracovania jedn´eho sn´ımkurˆoznym poˇctomprocesov.

Pomocou t´ychto d´atsom n´aslednevypoˇc´ıtalzr´ychlenie a taktieˇzpercentu´alnu efektivitu oproti ide´alnemu ˇcasuspracovania pri danom poˇcteprocesov a vl´akien.Tieto hodnoty sa nach´adzaj´uv tabul’ke 6.2, kde zr´ychlenie bolo vypoˇc´ıtan´epomocou vzorca: ˇcasspracovania ˇcasspracovania jedn´ymprocesom s jedn´ymvl´aknom a na v´ypoˇcetpercentu´alnejefektivity bol pouˇzit´yvzorec:

zr´ychlenie × 100 poˇcetprocesov × poˇcetvl´akien

Zr´ychlenie V tabul’ke 6.2 mˆoˇzemevidiet’, ˇzeefektivita sa vˇzdydrˇz´ıokolo 99-98%, ˇco je uk´aˇzka toho, ˇzehlavn´yproces bez probl´emov zvl´adaspracov´avat’ a odpovedat’ na poˇziadavky vedl’ajˇs´ıch procesov a tie nie s´ubrzden´epri spracov´avan´ısvojich v´ypoˇctov´ych ´uloh.Mˆoˇzemepredpo- kladat’, ˇzepri pouˇzit´ızloˇzitejˇsejsc´eny by bola efektivita eˇstevyˇsˇsia,ked’ˇzepomer komu- nik´aciek v´ypoˇctuby bol v¨aˇcˇs´ıneˇzv pr´ıpadejednoduchej sc´eny. Zauj´ımav´eje zistenie, ˇze vˇsetkyv´ypoˇcty vykonan´epri urˇcitompoˇcteprocesov s jedn´ymvl´aknoms´uo 1-2% r´ychlejˇsie neˇzpouˇzitiedvoch vl´akiena poloviˇcn´ehopoˇctuprocesov. Dalˇsouzauj´ımavostˇ ’ou je, ˇzebez pouˇz´ıvania dvoch vl´akiensa zr´ychlenie nach´adzanad oˇcak´avanou hranicou zr´ychlenia (poˇcet pouˇzit´ych procesov). Moˇzn´ych vysvetlen´ıt´ychto zisten´ıje hned’ niekol’ko:

26 1. S narastaj´ucimpoˇctompouˇzit´ych procesorov sa zv¨aˇcˇsujeaj vel’kost’ vyrovn´avaj´ucej pam¨atea t´ymp´adomvzrast´aaj r´ychlost’ spracov´avania. 2. Implement´aciaviacvl´aknov´ehospracov´avania v YafaRay je chybn´aa nast´ava situ´acia, kde sa jednotliv´evl´aknav urˇcitommomente blokuj´u. 3. Ked’ˇzenov´evl´aknasa inicializuj´upre kaˇzd´yspracov´avan´yblok, r´eˇziana ich vytvorenie je dost’ vysok´aa spˆosobujespomalenie. 4. Pri dvojvl´aknovom spracov´avan´ısa jedno vl´aknoz t´ychto vl´akienmus´ıdelit’ o jadro s ostatn´ymiprocesmi a neust´aleprep´ınanie kontextu spomal’uje jeho v´ypoˇcet,na- rozdiel od jednovl´aknov´ehospracovania, kde je toto vl´aknopl´anovan´eiba na jedno jadro a ostatn´esyst´emov´eprocesy na druh´ejadro, ˇcomu t´ym p´adomumoˇzˇnujepln´u r´ychlost’ spracovania. 5. Pri meran´ısa vyskytla chyba spˆosoben´anapr´ıkladnest´alymzat’aˇzen´ımsiet’e.

Zr´ychlenie Poˇcetprocesov 1 vl´akno 2 vl´akna # % # % 1 1,000 100,00 1,992 99,60 2 1,999 99,95 3,976 99,40 4 4,000 100,00 7,888 98,60 8 8,004 100,05 15,748 98,43 16 16,052 100,33 31,355 97,98 32 32,044 100,14 62,182 97,16 64 64,248 100,39 124,056 96,92

Tabul’ka 6.2: Zr´ychlenie spracov´avania vzhl’adom na zvyˇsuj´ucisa poˇcetprocesov.

Tieto zistenia ma inˇspirovali k d’alˇsiemu testu, kde by sa procesy nemapovali na procesory v pomere 1:1, ale 2:1, ˇcoznamen´a,ˇzedva procesy by boli spusten´ena jednom procesore. Toto nastavenie by malo potvrdit’ alebo vyvr´atit’ aspoˇnjeden zo spomenut´ych dˆovodov zr´ychlenia.

Casˇ spracov´avania so zmenou mapovania procesov V tabul’ke 6.3 sa nach´adzaporovnanie ˇcasov spracovania pomocou rˆoznehopoˇctuprocesov vyuˇz´ıvaj´ucich iba jedno vl´aknona v´ypoˇcet s rozdielom mapovania procesov na procesory. Mapovanie 1:1 znamen´a,ˇzejeden proces je mapovan´yna jeden procesor a tak sa v kaˇzdom procesore vyuˇz´ıva iba jedno jadro na spracov´avanie. Pri pouˇzit´ımapovania 2:1 sa vyuˇz´ıvaj´u obe jadr´ana v´ypoˇceta teda poˇcetvyuˇzit´ych procesorov klesol o polovicu. Z nameran´ych hodnˆotvid´ıme,ˇzerozdiely s´uminim´alnea pohybuj´usa iba v stotin´ach aˇztis´ıcin´ach sekundy. Vd’aka tomuto meraniu sa n´ampodarilo eliminovat’ dˆovody ˇc.1a4. S v´ynimkou chyby merania n´amostali len moˇznosti, ktor´esa t´ykaj´uvytvorenia vl´akien, inicializ´acievn´utorn´ych ˇstrukt´urv YafaRayi, ktor´evl´aknavyuˇz´ıvaj´u,a spˆosobupr´acet´ychto vl´akien.Pre zistenie, ktor´yz ost´avaj´ucich dˆovodov mˆoˇzeza spomalenie, je nutn´akontrola zdrojov´ehok´odua zistenie ako sa vl´aknavytv´araj´ua ako pracuj´u.

27 Casˇ spracovania [s] Poˇcetprocesov 1:1 2:1 4 2 23,090452 23,066219 0,024233 4 11,538156 11,535428 0,002728 8 5,766047 5,772635 -0,006588 16 2,874914 2,884196 -0,009282 32 1,440179 1,435194 0,004985 64 0,718295 0,739301 -0,021006

Tabul’ka 6.3: Rozdiel r´ychlosti spracov´avania s mapovan´ımjedn´ehoprocesu na jeden pro- cesor (1:1) a dvoch procesov na jeden procesor (2:1).

Vplyv paraleln´ehopr´ıstupuna v´ykon Tento test ukazuje rozdiel vo v´ykonnosti medzi origin´alnym YafaRayom a jeho paralelnou verziou. Testovacia sc´enabola zobrazen´a5-kr´ata na meranie jednotliv´ych ˇcasov bol pouˇzit´y unixov´ypr´ıkaz time“. Priemer jednotliv´ych ˇcasov, ako aj percentu´alnespomalenie, sa ” nach´adzav tabul’ke 6.4.

Casˇ spracovania [s] Spomalenie [%] YafaRay paraleln´yYafaRay 45,7808 47,2504 96,89

Tabul’ka 6.4: Rozdiel r´ychlosti spracov´avania medzi implementovanou aplik´acioua neupra- ven´ymYafaRayom.

V´ysledkyukazuj´upribliˇzn´yrozdiel 1,5s, ˇcoje spˆosoben´epoˇciatoˇcnouinicializ´aciouMPI a niekol’kon´asobnoureinicializ´acioupotrebn´ych ˇstrukt´urpri zobrazovan´ıjednotliv´ych blokov v paralelnej verzii. Komunik´aciamedzi procesmi v tomto pr´ıpade zaberala iba zlomok celkov´ehoˇcasuspracovania.

Zmena spˆosobuˇziadaniao pr´acu V tomto teste sa pok´usimporovnat’ rozdielne spˆosoby vyˇziadaniapr´ace.V prvom pr´ıpadesi vedl’ajˇs´ıproces vyˇziadapr´acupo dokonˇcen´ıa odoslan´ıd´atov´ehobloku, v druhom pr´ıpade si t´utopr´acuvyˇziadajeden krok2 pred dokonˇcen´ımbloku. Ked’ˇzedruh´yspˆosobby mal byt’ v´ykonnejˇs´ıpri ˇcastej komunik´acii,boli pri tomto teste pouˇz´ıvan´edve vl´akna,ktor´e zabezpeˇciar´ychlejˇsiespracovanie obrazu. Nameran´ehodnoty a rozdiely ˇcasov s´uv tabul’ke 6.5. Meranie ukazuje minim´alny rozdiel medzi pouˇzit´ymimet´odami,ale ten sa vˇzdyprikl´aˇna na stranu druhej met´ody. Rozdiel je vˇsakminim´alny a z toho dˆovodu neviem urˇcit’ ˇciide o skutoˇcn´ypr´ınosdan´ehopr´ıstupu alebo iba o chybu merania. Pri pouˇzit´ıviacer´ych procesov by sa pravdepodobne uk´azalv¨aˇcˇs´ırozdiel, ale kvˆoliobmedzeniu poˇctuspusten´ych procesov nem´ammoˇznost’ toto nastavenie otestovat’. 2jednotka spracov´avania v YafaRayi

28 Casˇ spracovania [s] Poˇcetprocesov 1. met´oda 2. met´oda 4 1 23,266819 23,167489 0,09933 2 11,621041 11,607080 0,013961 4 5,8551925 5,850429 0,004763 8 2,9388262 2,930448 0,008378 16 1,487881 1,471821 0,01606 32 0,778693 0,742165 0,036528 64 0,374299 0,372003 0,002296

Tabul’ka 6.5: Casˇ priemern´ehospracovania jedn´ehosn´ımkus rˆoznoumet´odouvyˇziadania pr´ace.

Grafick´ezobrazenie zr´ychlenia Graf zn´azorˇnujetakmer line´arny rast r´ychlosti v´ypoˇctupri zvyˇsovan´ıpoˇctuspracov´avaj´ucich procesov a vl´akien.

140

120 1 vlákno 2 vlákna 100

80

Zrýchlenie 60

40

20

0 0 10 20 30 40 50 60 70 Počet procesov

Graf 6.1: Zobrazenie zr´ychlenia v pomere so vzrastaj´ucimpoˇctomprocesov.

Odpojenie pracovnej jednotky

Tento test mal za ´uˇcelodhalit’ spr´avanie zobrazovacieho syst´emu v pr´ıpadeodpojenia jed- notky poˇcasspracov´avania. Test prebiehal za pouˇzitiaˇstyroch procesov s dvoma vl´aknami. Po spusten´ıaplik´aciebol od siete odpojen´yjeden poˇc´ıtaˇca n´aslednepo piatich zobrazen´ych

29 sn´ımkach znova pripojen´y.Z´aznamz behu aplik´aciemˆoˇzemevidiet’ v z´azname 6.2.

Starting Yaf-a-gRid. frame: 000, calc time [s]: 2.271019, time since last [s]: 16.198197 frame: 001, calc time [s]: 10.148216, time since last [s]: 0.096495 frame: 002, calc time [s]: 2.222181, time since last [s]: 15.445157 frame: 003, calc time [s]: 10.051718, time since last [s]: 0.094744 frame: 004, calc time [s]: 2.154703, time since last [s]: 15.445176 frame: 005, calc time [s]: 10.068287, time since last [s]: 0.119448 warning: received too old block: 4, from PID: 1, frame: 0! throwing away.. frame: 006, calc time [s]: 0.220894, time since last [s]: 13.544028 frame: 007, calc time [s]: 8.469486, time since last [s]: 0.399780 frame: 008, calc time [s]: 0.220894, time since last [s]: 5.652890 frame: 009, calc time [s]: 6.563714, time since last [s]: 5.923245 frame: 010, calc time [s]: 6.461315, time since last [s]: 5.821088

------working nodes: 4 threads: 2s picture size: 800x600 ------total frames: 10 total time: 62.542051s avg. time: 6.254205s avg. FPS: 0.159892

Z´aznam6.2: Z´aznampriebehu programu pri odpojen´ı pracovnej jednotky (poˇcasprvej sn´ımky)a op¨atovnom pripojen´ı(poˇcaspiatej sn´ımky).

Zo z´aznamu je vidiet’, ˇzeodpojenie prvku naruˇsilopoˇc´ıtanie ˇcasu,ˇcoje spˆosoben´ene- doruˇcen´ımvyˇzadovan´ehobloku a n´asledn´ymnesplnen´ımurˇcit´ych podmienok nutn´ych pre spr´avnu funkcionalitu. Spracov´avanie obrazu vˇsakpokraˇcujebez d’alˇs´ıch probl´emov s v´y- nimkou prvej sn´ımky, kde ch´ybalblok, ktor´ybol odoslan´yna v´ypoˇcetodpojen´emu procesu. Po op¨atovnom zapojen´ıprocesu do v´ypoˇctuhlavn´yproces prijal blok d´atz prvej sn´ımky a zahodil ho, pretoˇzed´atauˇzboli neaktu´alne. N´aslednesa funkˇcnost’ aplik´acievr´atilado norm´alu. Priemern´yˇcasspracovania sa len trochu nav´yˇsilod referenˇcn´ehoˇcasu(5,850429) na- meran´ehov minulom teste. Z toho vypl´yva, ˇze odpojenie jednotky nemalo in´yvplyv, neˇz spomenut´uchybu pri poˇc´ıtan´ıˇcasua mal´espomalenie v´ykonu, ked’ˇzev urˇcit´yˇcasbolo k dispoz´ıciimenej v´ypoˇctov´ych jednotiek.

6.1 Porovnanie s in´ymirieˇseniami

Ked’ˇzeporovn´avanie ˇcasov´ehov´ykonu s v´ykonom in´ych rieˇsen´ıje z dˆovodu pouˇzitiaroz- dielneho softv´erunemoˇzn´e,budem porovn´avat’ iba ich percentu´alnezr´ychlenie pri nav´yˇsen´ı v´ypoˇctov´ych jednotiek. Toto vyjadrenie v´ykonu ud´ava ´uspeˇsnost’ danej implement´acie.

30 6.1.1 Parallel Ray-Tracing in MPI Skupina autorov vo svojej pr´aci[16] opisuje ich aplik´aciuparaleln´ehosledovania l´uˇca,ktor´a pouˇz´ıva MPI, a v´ysledkydosiahnut´etouto paraleliz´aciou.Ich pr´ıstupk rozdel’ovaniu pr´ace je zaloˇzen´yna priraden´ızoznamu obrazov´ych bodov jednotliv´ymprocesom, kde i-ty obra- zov´ybod poˇc´ıta(i mod P )-ty procesor, takˇzekaˇzd´yprocesor m´aprakticky pridelen´usiet’ bodov, ktor´aby mala zabezpeˇcit’ ekvivalentn´erozloˇzeniepr´ace.Vd’aka tomuto n´avrhu nie je nutn´epouˇz´ıvat’ proces, ktor´yby riadil ostatn´eprocesy. Tie s´usi vˇsetkyrovn´ea vˇsetky vykon´avaj´uv´ypoˇcet.V tabul’ke 6.6 sa nach´adzaj´uich nameran´ehodnoty. Percentu´alna efektivita zr´ychlenia bola vypoˇc´ıtan´apodl’a vzorca v kapitole6.

Poˇcetprocesov Casˇ spracovania [s] Zr´ychlenie [%] 1 498,5 100 2 249,7 99,82 4 124,8 99,85 8 62,4 99,83 16 31,3 99,47 32 15,7 99,08 64 7,8 99,55

Tabul’ka 6.6: Casyˇ spracov´avania obrazu v pomere so zvyˇsuj´ucimsa poˇctomprocesov v [16].

Z tabul’ky je vidiet’, ˇzezr´ychlenie je, podobne ako u mˆojhorieˇsenia,takmer line´arnea vˇzdy sa drˇz´ı nad 99%. Dˆovodom pre tieto v´ysledkyje nulov´akomunik´acia(okrem zbierania v´ysledkov) a teda procesy sa plne venuj´uzobrazovaniu sc´eny.

6.1.2 Parallel Ray Tracing V spr´ave [17] je op´ısan´aparaleliz´aciazn´amehosoftv´eruPOV-Ray[21] s pouˇzit´ımvl´akien a zdiel’anej pam¨ate.Pri paraleliz´aciipouˇzilirozhranie OpenMP, ktor´epomocou rˆoznych direkt´ıvkompil´atorua rut´ınpom´ahavytvorit’ paraleln´uaplik´aciunad zdiel’anou pam¨at’ou v jazyku C/C++. Pomocou direkt´ıvsa d´akompil´atoruop´ısat’ konˇstrukcia urˇcit´ehopr´ıkazu (napr. cyklus) a ten ho n´aslednevykon´ava paralelne. Pre rozloˇzenie z´at’aˇzesi vybrali rieˇsenie,kde je obraz rozdelen´ydo vodorovn´ych blokov, ktor´ych vel’kost’ ja dan´apomo- cou ich vlastn´ehoheuristick´ehoalgoritmu. Tento algoritmus sa snaˇz´ıpredv´ıdat’ zloˇzitost’ objektov a podl’a toho rozdelit’ sc´enu na bloky s pribliˇznerovnak´ymˇcasomspracovania. Poˇcetblokov je zhodn´ys poˇctom pouˇzit´ych vl´akien.V´ysledkytejto pr´aces´uv tabul’ke 6.7. Percentu´alnaefektivita zr´ychlenia bola vypoˇc´ıtan´apodl’a vzorca v kapitole6. Z nameran´ych d´atje moˇzn´evidiet’, ˇzer´ychlost’ spracov´avania rap´ıdnekles´as poˇctom pouˇzit´ych vl´akien.T´aton´ızka efektivita sa d´avysvetlit’ zl´ymalgoritmom na rozdel’ovanie pr´ace.Vytvorit’ heuristick´umet´odu,ktor´aby pred vykresl’ovan´ımobrazu vedela rozdelit’ tento obraz na ´uplnerovnak´eˇcastia teda aj ich spracovanie by trvalo rovnako dlho, je vel’mi zloˇzit´ea heuristika pomocou tejto met´odyby pravdepodobne bola aj ˇcasovo n´aroˇcn´a, ˇcoby v koneˇcnomdˆosledkunemuselo priniest’ pozit´ıvnev´ysledky. Z tohto dˆovodu s´uniektor´e bloky zloˇzitejˇsiena v´ypoˇceta teda nast´ava situ´acia,kde niektor´evl´aknavykon´avaj´uv´ypoˇcet priraden´ehobloku, k´ymostatn´euˇzsvoj v´ypoˇcetdokonˇcili.Tento pr´ıkladdemonˇstrujenut- nost’ rovnomern´ehorozdel’ovania z´at’aˇze,pretoˇzeaj mal´erozdiely mˆoˇzuviest’ k odch´ylkam.

31 Poˇcet ˇsachovnica ryba vl´akien Casˇ [s] % Casˇ [s] % 1 191 100 62 100 2 99 96,46 34 91,18 3 65 97,95 24 86,11 4 49 97,45 18 86,11 5 43 88,84 16 77,50 6 38 83,77 14 73,81 7 32 85,27 11 80,52 8 29 82,33 12 64,58

Tabul’ka 6.7: Casyˇ spracov´avania sc´eny so ˇsachovnicou a sc´eny s rybou v pomere so zvyˇsuj´ucimsa poˇctomvl´akienv [17].

6.1.3 Hybrid Scheduling for Parallel Ray Tracing Erik Reinhard v [18] popisuje paraleln´esledovanie l´uˇca,ktor´eimplementuje hybridn´epl´ano- vanie. Toto pl´anovanie funguje na princ´ıpe rozdelenia sc´eny na voxely, ktor´es´un´aslednepri- raden´eurˇcit´ymprocesom a tie naˇc´ıtaj´uiba tie objekty zo sc´eny, ktor´esa v t´ychto voxeloch nach´adzaj´u.T´ymto spˆosobom sa snaˇz´ızn´ıˇzit’ pam¨at’ potrebn´una v´ypoˇcetsc´eny jednotliv´ymi uzlami. Proces n´aslednevrh´al´uˇceiba v jemu priraden´ych voxeloch. Ak vˇsak l´uˇcopust´ı priestor priraden´yprocesu, mˆoˇzebyt’ transformovan´ya predan´yprocesu, ktor´yspracov´ava susedn´ypriestor3. Po skonˇcen´ısledovania l´uˇcasa farebn´ahodnota vr´atitomu procesu, ktor´y l´uˇcvytvoril. Tento pr´ıstupzvyˇsujekomunik´aciu o posielanie l´uˇcov, ale zniˇzujepam¨at’ov´e n´arokyna v´ypoˇctov´ujednotku. Pre r´ychle spracov´avanie je priestor kaˇzd´ehoprocesu roz- delen´ya uloˇzen´ydo BSP4 stromu. Druhou moˇznost’ou (namiesto transform´aciea odoslania l´uˇcain´emu procesu) je naˇc´ıtaniedan´ehovoxelu do aktu´alnehoprocesu a n´asledn´espraco- vanie l´uˇca5. Kombinovanie t´ychto dvoch met´odsa naz´yva hybridn´epl´anovanie. Vo svojej pr´acid’alej popisuje nev´yhodu zvolenej implement´aciepomocou PVM, pretoˇze t´apred uˇz´ıvatel’om skr´yva ˇstrukt´urusiete a teda uˇz´ıvatel’ nevie, ˇcis´ususediace priestory aj fyzicky mapovan´ena susedn´epoˇc´ıtaˇce,ked’ˇzepouˇzit´asiet’ poˇc´ıtaˇcov je rovnako ako priestor rozdelen´ydo dvojrozmern´ehopol’a. V nasledovnom testovan´ısi vybral testovaciu sc´enu s n´azvom konferenˇcn´amiestnost’“ ” s poˇctomsveteln´ych zdrojov 8 a 30. Pri pl´anovan´ıvyuˇz´ıval bud’ vyˇsˇsiespomenut´yhybridn´y pr´ıstupalebo ˇcistoparaleln´y,kde sa automaticky vˇsetkyl´uˇcevych´adzaj´ucez vlastn´eho priestoru transformuj´ua odosielaj´upr´ısluˇsn´emu procesu. Nameran´ev´ysledkysa nach´adzaj´u v tabul’ke 6.8. Percentu´alnezr´ychlenie bolo vypoˇc´ıtan´epodl’a vzorca v kapitole6. Z v´ysledkov je poznat’ znaˇcn´ezr´ychlenie do urˇcit´ehopoˇctupouˇzit´ych procesov, avˇsakpri pouˇzit´ıviac ako 8 procesov zaˇc´ınaj´uˇcasyskracovat’ vel’mi pomaly a dokonca v niektor´ych pr´ıpadoch dokonca predlˇzuj´u.V oboch pr´ıpadoch s´urozdiely sporadick´e. T´atoaplik´aciepouˇz´ıva in´ypr´ıstuppl´anovania, takˇzeporovnanie s moj´ımrieˇsen´ımnie je objekt´ıvne, ale je moˇzn´epozorovat’, ˇzesa p´anovi Reinhardovi podarilo v niektor´ych

3angl. data parallel scheduling 4angl. binary space partitioning 5angl. demand driven scheduling

32 Hybridn´epl´anovanie Paraleln´epl´anovanie Poˇcetprocesov Casˇ [s] % Casˇ [s] % 8 sveteln´ych zdrojov 2 226,7 100 675,0 100 4 137,0 82,74 430,7 78,36 8 91,5 61,94 262,8 64,21 16 88,5 32,02 272,2 31,00 24 82,4 22,93 274,3 20,51 32 89,3 15,87 193,0 21,86 30 sveteln´ych zdrojov 2 368,9 100 1266,0 100 4 167,7 109,99 562,0 112,63 8 81,2 113,52 237,0 133,54 16 66,3 69,55 236,1 67,03 24 49,8 61,73 242,5 43,51 32 62,9 36,66 173,5 45,61

Tabul’ka 6.8: Casyˇ spracov´avania obrazu v pomere so zvyˇsuj´ucimsa poˇctomprocesov v [18].

pr´ıpadoch dosiahnut’ dvojn´asobn´ezr´ychlenie pri zdvojn´asoben´ıpoˇctuv´ypoˇctov´ych jedno- tiek. V ostatn´ych pr´ıpadoch neboli procesy vyt’aˇzen´ev´ypoˇctomsc´eny na maximum a v¨aˇcˇsinu ˇcasustr´avilitransformovan´ıml´uˇcov a komunik´aciou.T´atopr´acavˇsakukazuje ak´ymsme- rom sa d´auberat’ pri spracov´avan´ısc´ens extr´emnouz´at’aˇzouna pam¨at’, ak´emet´odyje moˇzn´epouˇzit’ pri tejto paraleliz´aci a ak´es´uoˇcak´avan´ev´ysledky.

6.1.4 YafaRay Distributed Rendering Tento projekt je vel’mi zauj´ımav´yz pohl’adu uˇz´ıvatel’ov YafaRayu, pretoˇzeim umoˇzˇnuje vyuˇz´ıvat’ v´yhody paraleln´ehospracov´avania za n´ızkucenu. Ako z´akladvyuˇz´ıva GPU, pre ktor´yje vytvoren´ymodul a siet’ YafaRay, kde s´upripojen´eaktu´alnedostupn´epoˇc´ıtaˇce. Ak chceme vyuˇz´ıvat’ moˇznostipon´ukan´et´ymto softv´erom,je nutn´esa akt´ıvnezapojit’ do tejto siete a spr´ıstupnit’ vlastn´ypoˇc´ıtaˇcpre potreby ostatn´ych uˇz´ıvatel’ov. Po pripojen´ıje moˇzn´eoznaˇcit’ XML s´ubor definuj´ucisc´enu a potrebne text´ury, ktor´et´atosc´ena vyuˇz´ıva. N´asledneuˇz´ıvatel’zad´apoˇcet ˇcast´ı6 na ktor´esa sc´enarozdel´ıdo mrieˇzky a zaˇcnesa ostatn´ym poˇc´ıtaˇcomdostupn´ymv sieti distribuovat’ aj s danou ˇcast’ou, ktor´um´avypoˇc´ıtat’. Ako bezpeˇcnostn´yprvok, ktor´ym´azabr´anit’ zahlcovaniu poˇc´ıtaˇcov, bola pridan´akontrola d´lˇzky spracov´avania pridelenej ˇcasti, kde kaˇzd´amus´ıbyt’ vypoˇc´ıtan´ado piatich min´ut,inak bude zahoden´a. Toto rieˇsenienie je moˇzn´epriamo porovn´avat’ s mojou aplik´aciouz dˆovodu vysokej laten- cie Internetu a heterog´ennejsiete poˇc´ıtaˇcov (kaˇzd´ypoˇc´ıtaˇcje hardv´erovo odliˇsn´y).Odkr´yva vˇsakzauj´ımav´ucestu, ak´ymsmerom d´auberat’ pri paraleliz´acii,ak existuje komunita l’ud´ı ochotn´azdiel’at’ v´ypoˇctov´yv´ykon.

6poˇcet4, 16, 64, 256 alebo 1024 definuje vel’kost’ mrieˇzky, podl’a ktorej sa bude sc´enadelit’

33 Kapitola 7

Z´aver

V tejto pr´´upop´ısan´erˆoznespˆosoby realistick´ehozobrazovania, jednoduch´ypopis ich fungovania a ich v´yhody a nev´yhody. Nasleduje n´ahl’ad na paraleliz´aciu z hl’adiska hardv´eru a softv´erua popis kniˇzn´ıc,ktor´emˆoˇzubyt’ pouˇz´ıvan´epri paraleliz´acii.V d’alˇsejkapitole s´u zhodnoten´eurˇcit´espˆosoby rozdel’ovania pr´ace,ktor´es´uhlavn´ymfaktorom rozhoduj´ucim o ´uspeˇsnostiparaleliz´acie.Podl’a v´yhod a nev´yhod t´ychto spˆosobov som sa nakoniec rozho- dol pre pouˇzitie algoritmu spomenut´ehov kapitole 4.3.1 (model klient-server s ohl’adom na zn´ıˇzen´ukomunik´aciu). V n´aslednomv´yvoji aplik´aciebol implementovan´yzvolen´yspˆosobrozdel’ovania pr´ace spolu s komunik´aciou,pomocou ktorej sa procesy rozhoduj´u,ktor´yblok pr´acebud´uvy- kon´avat’, tak aby bol syst´emdobre ˇsk´alovatel’n´y.Nasledovala anal´yzaspˆosobuuloˇzeniain- form´acieo kamere v pam¨atia v´yber najvhodnejˇsiehospˆosobuna transform´aciuzmien medzi jednotliv´ymisn´ımkami zobrazovan´ych sc´en.Po tomto kroku som vytvoril komunikaˇcn´ypro- tokol pre prenos t´ychto inform´aci´ıˇconajefekt´ıvnejˇs´ımspˆosobom, ktor´ymhlavn´yproces rozdel’uje pr´acuostatn´ymprocesom a informuje ich o zmen´ach poz´ıciekamery. Z´avereˇcnou ˇcast’ou bola implement´aciazobrazovacieho syst´emu u klienta a vytvorenie urˇcitej interakcie medzi uˇz´ıvatel’om a sc´enou.Cel´ysyst´emje schopn´ypracovat’ v re´alnomˇcase a zobrazovat’ sc´enu s prijatel’n´ympoˇctomobr´azkov za sekundu s ohl’adom na zloˇzitost’ sc´eny a poˇcet poˇc´ıtaˇcov, ktor´espracov´avaj´uobraz. Testovanie aplik´acieodhalilo, ˇzev´ykon rastie takmer line´arneso zv¨aˇcˇsuj´ucimsa poˇctom dostupn´ych v´ypoˇctov´ych jednotiek a teda zvolen´yalgoritmus na rozdelenie pr´aceje do- statoˇcneflexibiln´y.Aplik´aciabola taktieˇzporovnan´as obdobn´ymirieˇseniami,ktor´evyuˇz´ıvali rozdielny pr´ıstupk probl´emom,ktor´ebolo nutn´erieˇsit’. Poˇcasanal´yzyzdrojov´ehok´oduYafaRayu a programovania jeho paralelnej verzie som ohl´asila opravil chybu v k´odepracuj´ucehos vl´aknami.Toto upozornenie taktieˇzviedlo k odhaleniu d’alˇs´ıch ch´yb,ktor´espˆosobovali ´unikypam¨ate1. Pri d’alˇsom v´yvoji aplik´acie by bolo moˇzn´e vylepˇsit’ algoritmus rozdelenia pr´acea implementovat’ syst´empodobn´y[16] a tento algoritmus n´aslednezdokonalit’ tak, ˇzeak by hlavn´yproces z nejak´ehodˆovodu neobdrˇzald´atov´yblok, mohol by hodnotu t´ychto obrazov´ych bodov jednoducho dopoˇc´ıtat’ pomocou farieb okolia. Toto rieˇsenieby mohlo viest’ aj k adapt´ıvnemu zobrazovaniu, kde by sme zadali poˇzadovan´ur´ychlost’ zobrazovania a aplik´aciaby sama menila rozl´ıˇsenieobrazu podl’a toho, ak´aˇcast’ obrazu je spracovan´a.

1angl. memory leak

34 Literat´ura

[1] ATI: ATI RadeonTM HD 4870 X2 Graphics. 2008, [Online; navˇst´ıven´e29. Novembra 2008]. URL http://game.amd.com/us-en/unlock_radeonhd4870x2.aspx

[2] OpenMP Architecture Review Board: The OpenMP API specification for parallel programming. 2009, [Online; navˇst´ıven´e04. M´aja2009]. URL http://openmp.org/

[3] Livermore Computing Center: MPI Parallelization Problems and Solutions. J´un2007, [Online; navˇst´ıven´e15. M´aj2009]. URL https://computing.llnl.gov/LCdocs/mpi/mpi.pdf

[4] Caligari Corporation: Software - trueSpace. 2008, [Online; navˇst´ıven´e18. M´aja2009]. URL http://www.caligari.com/

[5] Edwards, J.: YafaRay for trueSpace Project. 2009, [Online; navˇst´ıven´e18. M´aja2009]. URL http://www.yafaray4ts.org/

[6] Eugene: History Of The Blender Logo And Suzanne. J´ul2006, [Online; navˇst´ıven´e11. M´aja2009]. URL http://www.blendernation.com/2006/07/20/ history-of-the-blender-logo-and-suzanne/

[7] Message Passing Interface Forum: MPI: A Message-Passing Interface Standard. J´un 1995, [Online; navˇst´ıven´e03. M´aja 2009]. URL http://www.mpi-forum.org/docs/mpi-11-html/mpi-report.html

[8] Est´evez, A. C.: YafaRay - Yet Another Free Raytracer. 2009, [Online; navˇst´ıven´e28. Apr´ıla2009]. URL http://yafaray.org/

[9] Blender Foundation: blender.org. 2009, [Online; navˇst´ıven´e10. M´aja2009]. URL http://www.blender.org/

[10] The SCons Foundation: SCons: A software construction tool. 2009, [Online; navˇst´ıven´e28. Apr´ıla2009]. URL http://www.scons.org/

[11] Geist, A.; Beguelin, A.; Dongarra, J.; aj.: PVM: Parallel Virtual Machine. September 1994, [Online; navˇst´ıven´e03. M´aja 2009]. URL http://www.netlib.org/pvm3/book/pvm-book.html

35 [12] The Khronos Group: OpenCL - The open standard for parallel programming of heterogeneous systems. 2009, [Online; navˇst´ıven´e04. M´aja2009]. URL http://www.scons.org/

[13] Intel: Intel R microprocessor export compliance metrics. November 2008, [Online; navˇst´ıven´e29. Novembra 2008]. URL http://www.intel.com/support/processors/sb/cs-023143.htm [14] Janouˇsek,J.: Realistick´ezobrazov´an´ıpomoc´ıradiozity. Technick´azpr´ava, FIT VUT, Brno, M´aj2007, [Online; navˇst´ıven´e18. M´aja2009]. URL http://www.fit.vutbr.cz/study/DP/DP.php.cs?id=4910 [15] LimeWire LLC: Gnutella Protocol Specification. 2008, [Online; navˇst´ıven´e08. M´aja2009]. URL http://gnet-specs.gnufu.net/ [16] Lu, V.; Matsumura, Y.; Weng, I-H. F.: Parallel Ray-Tracing in MPI. M´aj2009, [Online; navˇst´ıven´e17. M´aja2009]. URL https://agora.cs.illinois.edu/download/attachments/21731399/cs420_ rt_finalreport.pdf?version=2 [17] Mobashir, T.; Mahesri, A.; Raje, H. S.: Parallel Ray Tracing. Febru´ar2004, [Online; navˇst´ıven´e17. M´aja2009]. URL http://users.crhc.illinois.edu/mahesri/classes/cs433finalreport.doc [18] Reinhard, E.: Hybrid Scheduling for Parallel Ray Tracing. Technick´azpr´ava, Faculty of Technical Mathematics and Informatics, Delft University of Technology, Janu´ar 1996. URL http://www.cs.bris.ac.uk/Publications/Papers/1000155.pdf [19] Tai, K-C.: Definitions and Detection of Deadlock, Livelock, and Starvation in Concurrent Programs. August 1994, [Online; navˇst´ıven´e19. M´aja2009]. URL http://ieeexplore.ieee.org/search/srchabstract.jsp?arnumber= 4115758&isnumber=4115737&punumber=4115670&k2dockey=4115758@ieeecnfs [20] GPU Development Team: The GPU project. 2004, [Online; navˇst´ıven´e08. M´aja2009]. URL http://gpu.sourceforge.net/ [21] Persistence of Vision Raytracer Pty. Ltd.: POV-Ray. 2008, [Online; navˇst´ıven´e17. M´aja2009]. URL http://www.povray.org/ [22] Fakulta informaˇcn´ıch technologi´ıVUT: Poˇc´ıtaˇcov´as´ıt’ are´aluBoˇzetˇechova. Janu´ar 2009, [Online; navˇst´ıven´e04. M´aja 2009]. URL http://www.fit.vutbr.cz/CVT/network.html [23] Wikipedia: Ray tracing (graphics) — Wikipedia, The Free Encyclopedia. 2008, [Online; navˇst´ıven´e30. Novembra 2008]. URL http://en.wikipedia.org/w/index.php?title=Ray_tracing_(graphics) &oldid=254103625

36 Zoznam pouˇzit´ych skratiek

BSP – Binary Space Partitioning

CPU – Central Processing Unit

FLOPS – FLoating point Operations Per Second

GPU – Global Processing Unit

GPU – Graphics Processing Unit

MPI – Message Passing Interface

OpenCL – Open Computing Language

OpenMP – Open Multi-Processing

PVM – Parallel Virtual Machine

SSH – Secure SHell

TCP/IP – Transmission Control Protocol over Internet Protocol

XML – eXtensible Markup Language

YafRay – Yet Another Free Raytracer

37 Zoznam pr´ıloh

A Testovacia sc´ena

B Uk´aˇzkov´esc´eny YafaRayu

C Obsah DVD

D DVD

38 Pr´ılohaA

Testovacia sc´ena

Obr´azokA.1: Testovacia sc´enavytvoren´apomocou programu Blender. Rozl´ıˇsenie:800x600, vypnut´evyhladzovanie hr´an.

39 Pr´ılohaB

Uk´aˇzkov´esc´eny YafaRayu

Obr´azokB.1: n´azov: Magic Bullet, autor: Enrico Cerica

40 Obr´azokB.2: autori: Gabich, Sebi, Pikrokola

Obr´azokB.3: autor: Gabich

41 Pr´ılohaC

Obsah DVD

• \doc

– \pictures – uk´aˇzka zobrazovac´ıch schopnost´ıYafaRayu – \poster – prezentaˇcn´yplag´atdiplomovej pr´ace – \thesis – diplomov´apr´acavo form´atePDF

• \src

– \latex –LATEXov´averzia diplomovej pr´ace – \logs – z´aznamy z meran´ı – \models – niekol’ko modelov vo form´ateXML – \poster – zdrojov´yk´odprezentaˇcn´ehoplag´atu – \pictures – uk´aˇzkydelenia pr´acepri rˆoznompoˇcteprocesov – \scripts – uk´aˇzkov´eskripty inˇstal´acie a sp´uˇst’ania – \yaf-a-grid – zdrojov´es´ubory aplik´acie

42