SLOVENSKÁ TECHNICKÁ UNIVERZITA V BRATISLAVE Strojnícka fakulta. Použite GPGPU akcelerácie v strojárenských aplikáciách a ich prínos.

Size: px
Start display at page:

Download "SLOVENSKÁ TECHNICKÁ UNIVERZITA V BRATISLAVE Strojnícka fakulta. Použite GPGPU akcelerácie v strojárenských aplikáciách a ich prínos."

Transcription

1 SLOVENSKÁ TECHNICKÁ UNIVERZITA V BRATISLAVE Strojnícka fakulta Použite GPGPU akcelerácie v strojárenských aplikáciách a ich prínos Diplomová práca Bc. Lukáš Cintula SjF Bratislava Jún

2 SLOVENSKÁ TECHNICKÁ UNIVERZITA V BRATISLAVE Strojnícka fakulta Použitie GPGPU akcelerácie v strojárenských aplikáciách a ich prínos Diplomová práca SjF Študijný program: automatizácia a informatizácia strojov a procesov Číslo a názov študijného odboru: automatizácia Školiace pracovisko: Ústav automatizácie, merania a aplikovanej informatiky Vedúci záverečnej práce/školiteľ: Ing. Ján Vachálek, PhD. Konzultant: Ing. Tomáš Volenský Bratislava 2010 Bc. Lukáš Cintula 3

3 10

4 11

5 Čestné prehlásenie Vyhlasujem, že som záverečnú prácu vypracoval samostatne s použitím uvedenej literatúry. Bratislava, 8. júna Vlastnoručný podpis 12

6 Ďakujem vedúcemu diplomovej práce, Ing. Jánovi Vachálkovi, PhD., za odbornú pomoc pri vypracovaní diplomovej práce. Chcem poďakovať aj konzultantovi diplomovej práce, Ing. Tomášovi Volenskému, za pomoc a pripomienky pri spracovaní nameraných hodnôt. Bratislava, 8. júna 2010 Bc. Lukáš Cintula 13

7 Názov práce: Použitie GPGPU akcelerácie v strojárenských aplikáciách a ich prínos Kľúčové slová: Jacket, GPUmat, OpenCL, CUBLAS, CUFFT Abstrakt: V úvodnej časti mojej práce som chcel opísať historický vývoj grafických kariet Nvidia a ATI. Zaoberám sa vnútornou hierarchiou stream procesorov a spôsobom, akým dokážu spracovávať jednotlivé dáta. Popisujem taktiež možnosti využitia technológie OpenCL pre matematické účely výpočtov v GPGPU. Následne som vyhodnotil dostupné akceleračné balíčky pre softvér CUDA. Pre výpočty som využíval novú technológiu Fermi, ktorá sa nachádzala na grafickej karte GTX Vykonal som merania na Jacket a GPUmat pri násobení matíc v integrovanom vývojovom prostredí Matlab. Ďalšou súčasťou mojej práce bolo využitie spomínaných akceleračných balíčkov pre účely strojárenských aplikácií. Na preukázanie výhod GPGPU som knižnice CUFFT použil pre model votknutého nosníka. Táto knižnica je súčasťou softvéru CUDA. Title: Usage of GPGPU acceleration in engineering applications and their benefits Keywords: Jacket, GPUmat, OpenCL, CUBLAS, CUFFT Abstract: In the first part of my work I would like to describe the historical development of graphics cards from Nvidia and ATI. I deal with the internal hierarchy of a stream processor and how it can process different data. I also describe the possibility to use OpenCL technology for mathematical purposes calculated by GPGPU. Then I evaluate the available packages for CUDU acceleration. For calculations I used technology called Fermi, which is supported by graphics card GTX - 470th. I have done measurements on Jackete and GPUmat by the mutual matrix multiplication inside of the MATLAB integrated development environment. Another part of my job was to use these packages for the purpose of acceleration of engineering applications. To demonstrate the advantages of GPGPU I have applied 14

8 available libraries called CUFFT on a fixed beam model. This library is part of the CUDA software. 15

9 Obsah Zoznam použitých skratiek a jednotiek Úvod Formulácia úlohy Grafický adaptér Historický vývoj grafických kariet Rozhranie pre programovacie aplikácie API Vývoj kariet Nvidia Historický vývoj grafických kariet ATI Vývoj nového typu GPGPU CUDA ATI Stream OpenCL Programovateľné prostredie Matlab CUDA knižnice CUBLAS knižnice CUFFT knižnice Softvérové balíčky Jacket a GPUmat Jacket GPUmat Hardvérová zostava na testovanie Základné údaje o procesore AMD Athlon II X Technológia Fermi Vzájomné porovnanie výkonnosti prostredí Jacket a GPUmat Test pre Jacket Test pre GPUmat Vyhodnotenia testov

10 5 Všeobecné nasadenie GPGPU Využitie GPGPU v strojárenských aplikáciách Problematika kmitajúceho telesa Popis systému votknutého nosníka Opis merania Vyhodnotenie merania Záver Zoznam použitej literatúry Príloha A Príloha B Príloha C

11 Zoznam použitých skratiek a jednotiek GPU Graphics Processing Unit GPGPU General Purpose Graphics Processing Unit CPU Central Processing Unit CUDA Compute Unified Device Architecture API Aplication Programmning Interface D-Sub D-Subminiature DVI Digital Visual Interface HDMI High Definition Multimedia Interface PCI Peripheral Component Interconnet AGP Accelerated Graphics Port OpenGL Open Graphics Library OpenCL Open Computing Language FFT Fast Fourier Transform GB - Gigabyte MB Megabyte KB Kilobyte MHz - Megahertz 10

12 Úvod V súčasnej rýchlo sa rozvíjajúcej dobe informačných technológií je samozrejmosťou, že vývoj procesov a grafických adaptérov napreduje neuveriteľnou rýchlosťou. Rozdiely v počte operácií za sekundu sa z roka na rok zvyšujú dvojnásobne. Hlavný prínos tohto vývoja má na svedomí najrýchlejšie sa rozširujúci priemysel na svete, ktorým je herné a multimediálne prostredie. Snaha, o čo najdokonalejšie sa priblížiť k realite, ľudia zdokonaľujú 3D grafiku až na maximum. V blízkej budúcnosti budú samozrejmosťou holoprojekčné monitory a s tým súvisiaci virtuálny svet. Jedným z ďalších možných využití, ktoré sa z danej technológie črtá, je pre účely matematicko-fyzikalných výpočtov, pričom nám grafické adaptéry poskytujú jednoduché operácie bez zbytočného zaťažovania CPU. Toto všetko by nebolo možné bez softvérového rozhrania OpenCL (Open Computing Language). S jeho zásluhou je nám umožnené využiť GPU jednotku na výpočty. Na celosvetovom trhu sú lídrami v grafických adaptéroch spoločnosti Nvidia a ATI. Obidve sú už v súčasnosti poskytovateľmi určitých aplikačných rozhraní umožňujúcich využívanie vlastných GPGPU (General Purpose Graphics Processing Unit) procesorov. Ako prvá prišla s touto myšlienkou spoločnosť Nvidia, ktorá vyvinula produkt CUDA (Compute Unified Device Architecture). Ako priamu odpoveď vytvorila ATI podobný softvér s názvom ATI Stream. Tieto platformy sú plne programovateľné v jazyku C alebo v sebe obsahujú kompilátory na tento jazyk. Na poukázanie výhod grafických adaptérov ako výpočtových jednotiek použijem v tejto práci produkt CUDA. Ako programovateľný softvér využijem program Matlab, ktorý po nainštalovaní špeciálnych balíčkov dokáže priamo komunikovať s GPU procesorom. 11

13 1 Formulácia úlohy Táto práca je zameraná na poukázanie výhod použitia súčasných grafických akcelerátorov na možnosti zrýchlenia numerických výpočtov pre oblasť strojárenského priemyslu. Práca je rozčlenená na tri hlavné skupiny: 1. Teoreticky spracovať danú problematiku GPGPU akcelerácie numerických výpočtov pre hardvérové platformy (Nvidia, ATI) a softvérové rozhrania (Nvidia CUDA, ATI Stream, OpenCL). 2. Prakticky overiť a vyhodnotiť funkčnosť softvérové rozhrania CUDA v prostredí Matlab. 3. Teoreticky a prakticky analyzovať nasadenie softvérového balička Jacket (GPGPU akcelerácia) v prostredí Matlab. V prvej časti sa zameriam na historický vývoj grafických kariet a s tým súvisiaci vývoj využitia GPU akcelerácie. Súčasne sa venujem téme API (Aplication Proramming Interface). Jeho hlavnou úlohou je umožniť nám plné využitie grafických procesorov. Ďalej si spomenieme GPGPU a jeho začleňovanie do jednotlivých softvérových balíkov. Pozornosť budem venovať hlavne na jeho vznik a vývoj, ktoré ovplyvnili produkty Nvidia Cuda, ATI Stream a OpenCL. V ďalšej časti sa venujem programu Matlab. Spomínať sa bude jeho historický vývoj a základné dátové typy. Programovacie prostredie Matlab sme využili na urýchlenie numerických výpočtov v GPGPU. Dodatočne nainštalované balíčky Jacket a GPUmat nám umožnili využitie CUDA, nachádzajúce sa na grafických kartách Nvidia. Následne som vykonal meranie pri násobení dvoch matíc navzájom s rozdielnou presnosťou. V poslednej časti sa zameriavam na využitie softvérových balíčkov pre urýchlenie optimalizácie kmitania votknutého nosníka. Využívam na to CUDA knižnice CUFFT. 12

14 2 Grafický adaptér Grafická karta (grafický adaptér) slúži na výpočet grafických informácií, ktoré sú zobraziteľné na zariadeniach spracujúcich digitálne dáta na viditeľný grafický obraz na monitore. Môžu byť aj ako samostatný čip na matičnej doske počítača, vtedy hovoríme o integrovanej grafickej karte alebo sa nachádzajú na samostatne odnímateľnej doske. V prípade integrovanej grafickej karty sa zdieľa pamäť s operačnou pamäťou procesora. Úlohou grafického procesora nie je len jednoduché zobrazenie dát, ale aj prepočty virtuálnych trojrozmerných obrazových scén v reálnom čase. Vtedy hovoríme o 3D akcelerátoroch. GPU vykonáva všetky grafické inštrukcie, čím šetrí strojový čas procesora počítača a zrýchľuje dostupnosť údajov. Tieto nemusia pri spracovaní CPU putovať prostredníctvom zbernice do operačnej pamäte a odtiaľ do grafickej karty. V praxi to znamená, že ak sa v programe vyskytne inštrukcia pre spracovanie obrazu, nevykoná ju CPU ale GPU, ktoré disponuje výkonovými jednotkami, ako napr. jednotka transformácie, osvetlenia, nastavenia a renderovania. Hlavnou činnosťou moderného grafického adaptéra je rendering (vizualizácia), čiže tvorba reálneho obrazu na základe počítačového modelu so zohľadnením charakteristík scény a jeho okolia. Model (zobrazovaný objekt) je charakterizovaný sieťou alebo drôtovou konštrukciou a je mu priradený definovaný povrch a vzťah k dopadajúcemu svetlu. Program na základe matematických algoritmov vytvorí bitmapový obrázok simulujúci resp. napodobujúci reálnu scenériu [3]. Grafická karta potrebuje nielen dostatočne širokú zbernicu, ale aj podporu rýchlej pamäte, ktorá umožňuje zápis a čítanie údajov. V dnešnej dobe sa na trhu nachádza niekoľko takýchto rýchlych pamätí ako sú DDR2, GDDR3, GDDR4, alebo GDDR5. Do roku 2003 sa používala pamäť typu DDR. Tieto pamäte sa nachádzajú priamo na grafickej 13

15 karte. Z počiatočnej 8 MB pamäte sa súčasný vývoj dostal až na veľkosti 512 či 2048 MB. Rýchlosť obnovovacej frekvencie sa pohybuje od 400 MHz až do 3600 MHz. Hlavnou častou 3D zobrazovania je video pamäť s názvom Z-buffer. V nej sa ukladajú hodnoty súradníc na základe ktorých sa zobrazuje výsledný obraz na obrazovke. Typy pamätí Pamäť taktovacej frekvencie [MHz] Šírka pásma [GB/s] DDR DDR GDDR GDDR GDDR Tabuľka 1 Pamäte GPU Ďalšou nezbytnou súčasťou grafického adaptéru je aj digitálno analógový prevodník RAMDAC. Pomocou neho sa prevádza digitálny signál z procesora grafickej karty do analógovej formy pre monitor. V závislosti od použitého počtu bitov sa líši aj použitá obnovovacia frekvencia. Pri bežných CRT monitoroch sa najviac používa frekvencia 75 Hz [5]. Medzi popredné zobrazovacie zariadenia momentálne patria LCD panel a LED technológia, ktoré už priamo obsahujú digitálny vstup. Tým pádom nie je nutné už použitie digitálno analógového prevodníka. Na prepojenie grafickej karty s monitorom sa používajú dva typy konektorov a to analógový D-Sub alebo digitálny DVI. Do popredia sa dostáva aj nový druh prepojenia HDMI, ktorý je kompatibilný aj s modernými televízormi. Tým sa umožňuje širšie uplatnenie v multimediálnom využití počítača. Na trhu sa už objavujú špeciálne typy televízorov, ktoré obsahujú vstavaný počítač. Takto sa umožnilo dvojíte využite jediného zariadenia. 14

16 2.1 Historický vývoj grafických kariet Vývoj grafických kariet sa datuje od druhej polovici 20. storočia. Na začiatku sa využívali jednoduché výstupné zariadenia ako boli rozsvecujúce sa žiarovky, ktoré v tej dobe ovládal CPU procesor. Až následnou snahou o zobrazovanie textových správ sa vyvinul prvý grafický procesor ANTICA a CTIA. Čip ANTICIA bol špeciálny procesor pre mapovanie textu a grafických dát do video výstupu. V roku 1980 vyvinula firma IBM prvé zobrazenie vo formáte 2D, ktoré umožňovalo pracovať v textovom režime iba s 25x80 riadkov na obrazovke. Jeho veľkosť bola 4 KB videopamäte a disponovala len jednou farbou. Tieto karty sa postupom času zdokonaľovali podľa požiadaviek užívateľov. Toto bol podnet na vznik firiem, ktoré sa špecializovali práve na takéto grafické karty. Boli to napr. ATI, CirrusLogic, S3, Matrox. Až v roku 1987 vznikol VGA (Video Graphics Adapter), ktorý disponoval grafickým zobrazením 640x480 bodov a už obsahoval 256 farieb. Krátko na to sa vyvinul SVGA (Super Video Graphics Adapter), ktorý dokázal zobraziť rozlíšenie vo veľkosti 1024x720 pri 256 farbách ale potreboval k tomu 2 MB pamäte. V roku 1990 boli grafické čipy v počítačoch a hlavne v herných konzolách čoraz bežnejšie. Prvá snaha o skutočný 3D priestor sa objavila v piatej generácii herných konzolách, ako boli PlayStation a Nintendo 64. Spočiatku bola 3D grafika na počítačoch umožnená iba pomocou akcelerácii 2D priestoru, čo viedlo k snahe o integráciu GPU na samostatnú dosku. Ako prvá prišla s touto platformou spoločnosť 3dfx. Na trhu sa objavili v grafických čipoch Voodoo4 a Voodoo5. Ďalším vývojom sa začalo uplatňovanie programovacie rozhranie API. Po osamostatnení grafických kariet vznikli špeciálne zbernice cez ktoré komunikovali s procesorom. Prvou takouto zbernicou bola ISA vyvinutá v roku 1981 a išlo o 16 bitovú architektúru s frekvenciou 8 MHz. V nasledujúcich rokoch boli vytvorené 15

17 nové typy, ktoré pracovali na 32 bitovej architektúre. Boli to MCA, EISA a PCI. Posledná zmieňovaná zbernica poskytovala rýchle dynamické pripojenie medzi zariadeniami. Následne bola vyrobená špeciálne zbernica AGP (Accelerated Graphics Port), ktorá bola určená len pre grafické karty. Doterajší paralelný prenos bol nedostačujúci, preto sa vyvinula v roku 2004 nová sériová komunikačnej technológie, čo predstavovala zbernica PCIe (Peripheral Component Interconnet Express) [4],[5]. Zbernica Šírka Frekvencia Šírka pásma Spôsob prenosu [bit] [MHz] [MB/s] ISA XT 8 4,77 8 paralelný ISA AT 16 8,33 16 paralelný MCA paralelný EISA 32 8,33 32 paralelný VESA paralelný PCI paralelný AGP 1x paralelný AGP 2x paralelný AGP 4x paralelný AGP 8x paralelný PCIe x1 1*32 25 / / 200 sériový PCIe x4 1*32 25 / / 800 sériový PCIe x8 1*32 25 / / 1600 sériový PCIe x16 1*32 25 / / 3200 sériový Tabuľka 2 Vývoj zberníc a základne parametre Súčasnou snahou o zrýchlenie výkonu grafickej technológie sa vývojári zamerali na zdvojenie dvoch alebo viacerých grafických kariet. Na výpočty zobrazenia sa karty paralelne prepoja, čím sa výkon znásobuje. S touto myšlienkou prišla spoločnosť 3Dfx v roku 1998 a nazvala ju SLI (Scan Line Interleave). Nvidia ju uplatnila v roku 2004 pri použitý zbernice PCI Express až po značnej modernizácii tejto technológie. Komunikácia prebieha cez špeciálne prepojenie SLI Bridge. Úlohu si rozdelia medzi sebou a následne 16

18 podradená grafická karta pomocou tohto prepojenia pošle svoje výpočty do nadriadenej. Táto ich následne spojí do jedného celku a zobrazí ich na monitore. Nutnou podmienkou je rovnaký typ grafických čipov. Ani spoločnosť ATI nezaháľala a prišla v roku 2005 zo svojou verziou CrossFire, ktorá umožňuje prepojiť až štyri grafické karty. Z počiatku bolo nutné mať jednu hlavnú - nadriadenú kartu, ktorá bola cenovo drahšia ako ostatné podriadené. Na prepojenie sa používala špeciálna DVI rozdvojka, cez ktorú sa prepojili grafické karty s monitorom. V novšej verzii CrossFireX už neje potrebné používať nadradenú kartu a ani DVI rozdvojku [3]. Komunikácia prebieha podobne ako u Nvidii a to pomocou priameho prepojenia grafických kariet. 2.2 Rozhranie pre programovacie aplikácie API API (Aplication Programmning Interface)je programová aplikácia umožňujúca využívanie procedúr, funkcií a tried knižníc. Programátorovi sprístupňuje knižnice, ktoré si volá pomocou zdrojového kódu programu. Tým sa uľahčilo programátorom zdĺhavé vypisovanie programu. V súčasnosti sa najviac používajú dva typy API, a to OpenGL a DirectX. Spôsob ich využitia závisí od konkrétneho počítača a hlavne od grafickej karty. Následne danému programu už nebude záležať na type alebo výkone grafického procesora ale iba na samostatnej karte, ktorú API podporuje. Pomocou DirectX a OpenGL je možné vykonávať komplikované grafické výpočty v 3D priestore. Prvé API zariadenia vyvinula firma Silicon Graphics v roku 1990 s označením IRIS GL (Integrated Raster Imaging System Graphic Library) a stala sa priemyselným štandardom. Snahou ďalšieho vývoja bolo vyriešiť prípadnú hardvérovú nekompatibilitu a to pomocou softvérovej emulácie. Zásluhou vývojárov Marka Segala a Kurta Akeleyho vznikol úplne prvý 17

19 otvorený systém OpenGL. Tento produkt začali využívať spoločnosti 3Dlabs, Apple Computers, ATI, Dell, IBM, Intel, Microsoft, NVIDIA, SGI a Sun. Po osamostatnení Microsoftu v roku 1995 prichádza na trh s vlastným API produktom Direct3D. Ide o priamu konkurenciu pre OpenGL. Rivalita viedla k rozsiahlemu vývoju grafického hardvéru, pričom Direct3D sa používal iba pre platformy Microsoftu. V roku 2006 prešlo OpenGL pod konzorcium Khronos Group [3]. 2.3 Vývoj kariet Nvidia V deväťdesiatych rokoch 20. storočia vyšiel v kalifornskej pobočke úplné prvý grafický čip s názvom Riva 128. Jeho výkon sa nedal zrovnať s Voodoo kartami a preto Nvidia odkúpila spoločnosť 3Dfx. Následne na to vyvinula nový čip z názvom Riva TNT, ktorý znamenal revolúciu medzi grafickými kartami. Od začiatku boli osadzované výhradne pamäťami SDRAM a to 128 MB. Po dlhej dobre vývoja prišli na trh s novým názvom kariet GeForce, ktoré sa používajú do dnešnej doby. Z prvej generácie sa najviac uchytil čip GeForce256 s podporou DirectX 5. Na trhu sa príliš dlho nevyskytoval, lebo bol vytlačený novou generáciou GeForce 2. Jednou z nevýhod tejto generácie bolo nezačlenenie podpory získavania textúr z informácií o tieňoch závislých na uhle a intenzite osvetlenia. To malo za následok menší výkon ako konkurenčná ATI so svojou ponúkanou radou Radeon S príchodom nových rýchlejších pamätí DDR sa tento nedostatok odstránil až vývojom DirectX 7. Pre nasledujúcu radu GeForce 3 boli vytvorené tri špeciálne čipy Ti200, Ti500 a rada MX, ktoré priamo konkurovali Radeon Všetky plne podporovali DirectX 8, čo prinieslo ešte vyšší výkon, ktorý umožňoval pripojenie dvoch monitorov prostredníctvom dvoch D-Sub konektorov. Skutočný prelom nastal až vývojom štvrtej generácie grafických kariet Geforce 4. S narastajúcim 18

20 výkonom jej nemohla konkurovať žiadna iná firma zaoberajúca sa výrobou grafických adaptérov. V tejto rade sa začali po prvýkrát používať konektory DVI, ktoré umožnili pripojiť LCD monitory. Ďalšou veľkom zmenou bola možnosť využitia zbernice AGP 8x. Ku koncu tejto generácie sa začala spoločnosť ATI vyrovnávať výkonnostne a to svojou radou Radeon Aby si Nvidia zachovala prvenstvo medzi grafickými kartami musela prísť s novou technológiou pamätí DDR2 a následné DDR3, ktoré sa využívali v piatej generácii. Ako prvá grafická karta s týmito pamäťami sa predstavila GeForce FX 5800 s podporov DirectX 9. S narastajúcim výkonom rástla aj požiadavka na napájanie a preto bolo nutnosťou umiestniť na kartu napájací konektor. Karty bolo možné používať aj bez dodatočného napájania, ale automaticky sa znížila frekvencia čipu i pamäte. S nárastom výkonu bolo nutné dostatočne ochladzovať grafické čipy a aj pamäte. Nvidia sa rozhodla použiť technológiu nasávania studeného vzduchu zo skrinky a odvádzanie teplého vzduchu von. Tento systém dostal názov FX-Flow. Výhodou tejto inovácie bola vysoká účinnosť chladenia, ale mala aj svoje nedostatky: zvýšenú hlučnosť a zaberala jeden PCI slot pod AGP portom. Prvá grafická karta pri ktorej použili PCI-Express zbernicu bola PCX Skutočné plnohodnotné využite tejto zbernice nastal až ďalšou generáciou GeForce 6. Priniesla veľké množstvo noviniek v podobe podpory vertexu a pixel shadru definované v DirectX 9.c. Tri vertex vrcholy tvoria polygón pomocou ktorého sú tvorené všetky 3D priestory. Pixel shader slúži na vytvorenie reálneho povrchu vďaka tieňovaniu jednotlivých bodov a tiež má za úlohu osvetlenie predmetu. Taktiež priniesla aj vynovenie 0,13 µm technológie na 0,11 µm, vďaka čomu predbehla ATI, ale nie na dlho. Ďalšou výhodou tejto série je aj navŕšenie pipelines, ktorý zvýšili na 16 paralelne spracovaných príkazov, čo umožnilo vykonávať väčšie množstvo príkazov v jednom takte. V následnej vývojovej generácii GeForce 7 použili novú technológiu SLI. Tak isto to bola posledná rada, kde sa používala zbernica AGP [6]. 19

21 Najväčšia zmena prišla s príchodom ôsmej generácie čipov Nvidia GeForce 8. Ako prvá ponúkla voľne programovateľné API prostredie s podporov DirectX 10 a OpenGL 2.1 architektúrou. Hlavná zmena nastala v samotnej funkčnej jednotke, v ktorej sa doteraz používal pixel a vertex shader, s využitím úplné novej platformy so stream procesormi. Výhoda je v tom, že stream procesor je skalár a tým umožňuje flexibilitu jednej zložky v danom čase. GeForce 8 vykonáva výrazne lepšie filtrovanie textúr ako je tomu u predchádzajúcich generáciách, ktoré používali rôzne optimalizačné a vizualizačné triky na zrýchlenie vykresľovania pri zhoršení kvality filtrácie [8]. Nasledovala ďalšia vývojová rada GeForce 9 pri ktorej sa objavili iba minimálne zmeny oproti predchádzajúcej generácii. Nasledujúcou vývojovou radou od spoločnosti Nvida sa stala GTX. Pri tejto rade sa použila vylepšená technológia Unified Architecture, ktorá sa už objavila pri predchádzajúcich generáciách 8 a 9. Taktiež sa zvýšil aj počet stream procesorov zhruba o dvojnásobok. Pri predchádzajúcich modeloch sa ich počet pohyboval v rozmedzí sto [3]. Boli vyvíjané aj špeciálne čipy pre konkrétne aplikačné účely ako napríklad: Quadro grafické procesory pre profesionálne pracovné stanice Tesla špeciálne pre účely paralelných výpočtov GPGPU GoForce, Tegra procesory pre média do PDA a mobilných telefónov nforce integrované čip sety do základných dosiek 2.4 Historický vývoj grafických kariet ATI Historický vývoj prišiel s uvedením čipu Rage Fury koncom deväťdesiatych rokov 20. storočia. Do tej doby bol lídrom na trhu Nvidia. Pôvodne sa zameriavala na grafické karty pre použitie v kanceláriách až následné sa preorientovala na herný priemysel. Prvá snaha o konkurenciu pre Rivu od Nvidii bola grafická karta ATI Rage Fury maxii. To označenie II 20

22 (dva) znamenalo, že v sebe obsahovala dva integrované čipy. Poslednou kartou s takýmto označením bola Rage 128 s podporou zbernice AGP 1x. So skutočný prelomom vo vývoji prišla až s novou radou Radeon, ktorá sa stala ozajstnou konkurenciou pre Nvidiu. Na začiatku boli tri typy kariet Radeon SDR, Radeon DDR a Radeon VIVO. Z poslednej zmieňovanej sa neskoršie stala rada Spoločnou vlastnosťou bola synchronizačná frekvencia GPU pamätí, čo neumožňovalo pretaktovanie. Jednou z výhod v následnom označovaní kariet je, že prvé číslo série označuje podporu DirectX. Prvé karty Radeon 7000 boli osadzované pamäťami SDRAM ku koncu série používali už DDR. Boli koncipované pre zbernice AGP 2x/4x a PCI. Rozdiely medzi nimi a GeForce 2 boli v lepšej optimalizácii a hlavne v kvalite výstupných filtrov prevodníkov RAMDAC. Nevýhodou bolo, že poskytovali menší výkon ako konkurencia. Najväčším prínosom týchto kariet je podpora dvoch monitorov. Rovnako ako Nvidia prichádzala s novými generáciami aj ATI. Snažila sa udržiavať krok a s príchodom GeForce 3 a uviedla na trh svoju najnovšiu radu Radeon Najdôležitejšou zmenou bola plná podpora DirectX 8.1 a tým sa podstatne zväčšil jej výkon. Od začiatku série boli osadzované pamäťami DDR prevažne 128 MB. Celkovo táto rada znamenala cez podporu nových a revolučných funkcií iba prestupnú sériu. Skutočný triumf prišiel až s vydaním série 9000, s ktorou prekonali Nvidiu. Vývojári ATI zahrnuli do prvých typov týchto kariet DirectX 9, pričom konkurencia zostávala pri DirectX 8.1. Tým došlo asi na rok k získaniu prvenstva na trhu s grafickými kartami. Ďalšími novinkami bola podpora zbernice AGP 8x a všetky typy kariet tejto série boli osadené pamäťami DDR2. Asi najnegatívnejšou vlastnosťou spomínanej rady sa stalo rozhodnutie o porušení zabehnutých štandardov a tým začali objavovať časté problémy s kompatibilitou s rôznymi chipsetmi. Toto sa hlavne stávalo s VIA. 21

23 Jednou z výhod bola aj možnosť pretaktovania. Pri niektorých kartách sa robila automaticky na základe požadovaného výkonu. Na začiatku roku 2004 prišla spoločnosť ATI s úplne novou sériou. V prípade ATI sa jednalo o sériu X, pričom to X znamenalo novú zbernicu PCI- Express. Výkonnostne sa od seba konkurenčné čipy líšili iba minimálne. Grafické karty boli osadzované pamäťami DDR3. V tejto sérii sa po prvýkrát objavuje možnosť spracovávanie viacerých grafických kariet s pomenovaním CrossFile [6]. Od roku 2007 až do súčasnosti sa vyrába nová séria s typovým označením HD. Prišla s novou formou prepojenia grafických kariet, ktorá sa označovala CrossFileX, kde už nepotrebovala prepojenie prostredníctvom Y- rozdvojky. Obsahovala už aj novú technológiu Stream procesorov [3]. 2.5 Vývoj nového typu GPGPU Snaha o využite grafického procesora na inšie účely, ako sú typické pre zobrazovanie, viedlo k vývoju nového typu procesora GPGPU (General Purpose Graphics Processing Unit). Hlavnú zásluhu na vzniku majú dva projekty: BrookGPU bola vyvíjaná na Stanfordskej Univerzite pánom Buckom, pre implementáciu programového jazyka na moderné grafické hardvéry. Ide o rozšírený štandard ANSI (American National Standards Institute) pre programový jazyk C do ktorého boli začlenené myšlienky paralelných výpočtov a aritmetiky. Lib Sh je výsledkom výskumu na Univerzite Waterloo v počítačovom grafickom laboratóriu. Aplikuje metaprogramovací jazyk pre programovateľné GPU. 22

24 Zásadný pokrok nastal až v roku 2005, kedy sa do tejto problematiky zapojila spoločnosť Nvidia. Najala Bucka aby prepracoval problematiku GPGPU a tak vznikol vývoj produktu CUDA. Tým sa dostala do popredia o snahu poskytnúť všeobecné programové riešenie pre GPU. To umožnilo Nvidii vykonať skutočné zmeny v návrhu grafického procesora a ovládače na uľahčenie programovania GPGPU. Spoločnosti zaoberajúce sa vývojom CPU nedokázali konkurovať rýchlemu vývoju GPGPU, preto hľadali cestu ako sa aspoň priblížiť k tejto technológii. Prvá zmena nastala keď AMD kúpila ATI, odvekého rivala Nvidii v oblasti grafických kariet. Spoločným úsilím sa snažili presadiť na tomto úzko špecifickom trhu, ktorému do tej doby dominovala spoločnosť Nvidia. Začali prepracovávať koncepciu BrookGPU a za spolupráci Stanfordskej Univerzity vydali novú verziu, ktorá je známa ako Brook+. S ďalšou vývojovou etapou prišla spoločnosť Apple. Jednalo sa o ich prispôsobenie kódu pre viacjadrové CPU, ktoré sa v súčasnosti čím viac uplatňuje a rozvíja. Prišli s niečím, čo pomenovali Grand Central. Tým umožnili vývojárom oslobodiť sa od mnohých zložitých úloh, podieľajúcich sa na paralelnom programovaní. Postupom času si táto aplikácia našla uplatnenie v GPGPU a preto bola zahrnutá do špecifikácií API. Vznikol tak nový otvorený štandard s pomenovaním OpenCL (Open Computing Language). Ako všetky otvorené štandardy ho spravuje priemyselné konzorcium Khronos Group. Následne za spolupráci hlavných subjektov (Intel, AMD, ATI, Nvidia, RapidMind, ClaerSpeed, Apple, IBM, Texas Instruments, Toshiba, Los Alamos Nation Laboratory, Motorola, QNX a ďalších) vyšla prvá verzia 1.0 zo špecifikáciami OpenCL v rekordnom čase. Základnou myšlienkou je možnosť využívať viacjadrové procesory spolu s grafickými procesormi [7]. Jednou z hlavných dnešných požiadaviek na GPGPU je vysoká presnosť práce s plávajúcou desatinou čiarkou (floating-point). V počítači to 23

25 umožňuje reprezentovať čísla, ktoré by boli príliš veľké alebo príliš malé na to, aby sa reprezentovali ako celé číslo. Čísla sú všeobecne zastúpené pevným počtom platných čísel a použitím exponenta je definovaná desatinná čiarka. Medzi najpoužívanejšie štandardy floating-point patrí definícia IEEE 754. Obsahuje dve hlavné formy presnosti: jednoduchá (single, 32bitovu) dvojnásobná (double, 64bitovu) Rýchlosť operácii s pohyblivou desatinou čiarkou sa stalo meradlom výkonu pre počítače v mnohých aplikačných oblastiach, meria sa v FLOPS (FLoating point Operations Per Second). Táto podpora sa u grafických kariet objavila až v DirectX9 [3] CUDA CUDA (Compute Unified Device Architecture) umožňuje paralelné výpočty v grafickej karte s možnosťou využívať API prostredia. Obsahuje hardvérovú a softvérovú podporu cez, ktorú priamo riadi výpočet cez grafickú kartu. Vnútorná štruktúra pozostáva z niekoľkých hlavných časti: CUDA knižnice CUDA runtime CUDA driver Hardvérová časť bola vytváraná pre podporu runtime a driver. Táto technológia je použitá v nových typoch grafických kariet GeForce 8, Quadro a Tesla. Hlavný rozdiel medzi CPU a touto hardvérovou konfiguráciou je v použití paralelnej multi-procesorovej architektúry (Obr. č. 2.1). Pri tejto architektúre sú použité špeciálne SFU (Special Function Unit) jednotky, ktoré pracujú na podobnom princípe ako SIMD (Single Instruction Multiple Data) 24

26 jednotky, vykonávajúce rovnaké operácie na viacerých dátach súčasne. S použitím dvoch SFU je možné vykonávať inštrukcie na 32. prvkoch zároveň, jeden prvok sa nazýva threads vlákno. Výpočet GPU jednotky sa rozvetví do tisícok takýchto vlákien. Obr. č. 2.1 Schéma multi-procesora pre GeForce 8 Maximálny počet vlákien v jednom multi-procesore je 768, tie sa združujú do blokov. Osem blokov sa spája do mriežky (Obr. č. 2.2). Na základe usporiadania vlákien do mriežky je snaha dosiahnuť maximum 65536x65536x65536 blokov. Pre GeForce 8 je možné spustiť program na dobu maximálne 2 miliónov inštrukcii na 150 miliardách vlákien. 25

27 Obr. č. 2.2 Vnútorné usporiadanie vlákien do blokov V samotnom grafickom procesore sa nachádza takýchto multiprocesorov niekoľko. Každý z nich má k dispozícii samostatnú pamäť o veľkosti 16 KB. Pre samotné konštanty je vyčlenená pamäť o veľkosti 8 KB. Ďalej sú tu obsiahnuté aj 32bit registre. V nasledujúcej tabuľke (Tabuľka 3) sú uvedené počty týchto procesorov pre jednotlivé grafické karty Nvidia [8]. Tabuľka 3 Počet multi-procesorov 26

28 Pre softvérovú časť bol použitý programovací jazyk C zostavený na základe PathScale Open64 C kompilátore, ktorý sprístupňuje kód algoritmu pre spustenie v GPU. Tým bolo umožnené programovanie v softvéroch Phython, Fortran, Java a Matlab. Na nasledujúcom obrázku (Obr. č. 2.3) je možné vidieť princíp spracovania dát v grafickej karte GeForce 8800 [3]. Obr. č. 2.3 Riadenie toku procesov cez CUDA rozhranie 1. Kopírovanie dát všetky dáta sa prenesú do pamäte GPU pre rýchlejšiu prácu s nimi 2. Inštrukcie pre proces CPU vyšle inštrukcie ktoré majú byť vykonané na daných dátach 3. Vykonávanie procesu v každom jadre dáta sa rozčlenia paralelne do jednotlivých multi-procesorov 4. Kopírovanie výsledkov spracované dáta sa prekopírujú do hlavnej pamäte 27

29 2.5.2 ATI Stream Hlavný rozdiel medzi CUDA a ATI Stream je v tom, že ATI priamo využíva CPU od AMD. Toto prepojenie mám umožňuje rýchle a efektívne využite pri najrôznejších paralelných výpočtoch. Vnútorná štruktúra hardvérového prepojenia je do značnej miery rovnaká ako u Nvidii. Nájdu sa tu nepatrné rozdiel v prepojení jednotlivých blokoch a to hlavne pre streaming procesory (SP), ako môžme vidieť na obrázku (Obr. č. 2.4). Vnútri každého sa nachádza päť SPU (Stream Processing Unit) a jedna ALU (Arithmetic Logic Unit) jednotka. Súčasťou SP jednotky je aj súbor registrov. Každá takáto jednotka môže vykonávať individuálnu činnosť, ale vnútorná časť SPU pracuje iba na rovnakej inštrukcii. Obr. č. 2.4 Vnútorná štruktúra Streaming procesora pre ATI Po prepojený šestnástich SP jednotiek a ďalších súčastí, ako sú textúrová jednotka, L1 pamäť, zdieľaná pamäť a riadiaca logika sa takýto celok nazýva SIMD jednotka. Tie sa následné zoskupujú do tzv. Wavefront, v ktorých sa nachádza 64 vlákien. Na to, aby sme dosiahli maximálne 28

30 využitie GPU, je nutné usporiadať vlákna tak, aby sa inštrukcia vykonávala v každom SPU súčasne. Ak nie je splnená táto požiadavka, výkon sa znižuje a dochádza tým k nevyužitiu celej technológie. Kvôli zabráneniu takejto situácie je nutné správne paralelné programovanie pre jednotlivé cykly. Na nasledujúcom obrázku (Obr. č. 2.5) je uvedený príklad inštrukcie pre jedno vlákno a spôsob spracovania pre Nvidiu a AMD-ATI. Obr. č. 2.5 Spôsob spracovania inštrukcie pre jedno vlákno pre Nvidiu a AMD-ATI Súčasnou snahou je pridať niekoľko nových hardvérových inštrukcií pre SPU a tak zrýchliť realizáciu ďalších pokynov ako aj celkovo zlepšiť výkon 29

31 pre požiadavky rôznych API prostredí. Jednou z takýchto zmien je aj vnorenie viacerých cyklov do jedného. Medzi ďalšie patrí aj snaha o zvýšenie počtu SIMD jednotiek, ktoré sa nachádzajú na jednom čipe, napr. pre RV770 je ich desať. Zo zvyšovaním počtu jednotiek je nutné aj zvýšiť obsah vnútorných pamätí [9]. Prvá softvérová podpora pre GPGPU vyšla v novembri 2006 s názvom CTM (Close To Metal), ktorá umožnila vývojárom prístup do inštrukčných sád a pamätí pre paralelné výpočty. Následne až vydaním Stream SDK (Software Development Kit), ktoré bolo postavené na vynovenej platforme Brook+, sa umožnilo vývojárom využívať túto technológiu aj s podporou API prostredia. Následne ďalším vývojom bolo umožnené v júni 2008 využitie aj podpory pre OpenCL. Koncom tohto roku sa vydali aj ovládače s označením Catalyst 8.12, pomocou ktorých sa umožnil plnohodnotný prístup k ATI Stream akceleráciám. Prvá aplikácia využívajúca túto technológiu bola ATI Avivo Video Converter určená pre úpravu video súborov [10] OpenCL Hlavné určenie OpenCL je sprístupniť stream procesory na GPU pre širšie využite. Umožňuje taktiež aj priamy prístup k pamätiam, ktoré sa nachádzajú priamo na grafických kartách, rovnako ako je tomu pri systémových pamätiach. Ako už bolo spomenuté, slúži najmä na rozdelenie úloh medzi CPU - GPU a najmä pre uľahčenie programovania. Celkový program sa dá rozčleniť do troch hlavných častí: 1. Špecifikácia jazyka - ako hlavný programovací jazyk je použitý štandard C s menšou korekciou pre GPU. Táto úprava sa označuje ako ISO C99, pomocou nej sa zefektívňuje tok dát pre paralelné výpočty. Aby bola zaručená numerická presnosť pre rozličné grafické karty od rôznych výrobcov použil sa štandard IEEE

32 2. Platforma API - poskytuje funkcie umožňujúce paralelné aplikácie, určuje možnosti štruktúry dátového usporiadania jadier a obsahuje aj bohatú sadu funkcií. 3. Runtime - vykonáva úlohy predložené prostredníctvom API prostredia. Jeho hlavnou úlohou je riadiť prenos dát medzi hlavnou a vybranou pamäťou na GPU a ešte aj výkon jadier. Na umožnenie vzájomnej komunikácie medzi procesormi CPU a GPU pri prenosoch dát sa vytvoril nasledujúci štandard modelu pamätí. Obsahuje niekoľko základných typov pamätí, ktoré sú navzájom poprepájané. Základná štruktúra modelu pre prenos dát prebieha cez počítačové zariadenia procesora a inou pamäťou. Jednotlivé typy pamätí sa dajú rozdeliť do dvoch skupín. V prvej skupine sa nachádzajú súkromné pamäte do ktorých má prístup iba výpočtová jednotka zariadenia. Do druhej skupiny sa radia globálne pamäte, do nich majú prístup všetky počítačové jednotky na prístroji. Môžme definovať štyri pamäťové priestory: privátne pamäte sú viditeľné len pre výpočet jednotlivých jednotiek v zariadení. Toto je podobne ako u registrov v jednej výpočtovej jednotke alebo jednom CPU jadre. lokálne pamäte slúžia na rozdelenie práce medzi vnútornou a pracovnou skupinou, jej veľkosť sa pohybuje okolo 16 KB. globálna/konštantná pamäť sa používa pre ukladanie dátových konštánt v priebehu činnosti jadra. Hostiteľský procesor je zodpovedný za prideľovanie pamäte a inicializáciu objektov, ktoré sú uložené na tejto pamäti. globálna pamäť sa používa vo všetkých výpočtových jednotkách na prístroji. 31

33 Na jednoduchom príklade (Obr. č. 2.6) si môžeme vysvetliť spôsob akým sa adresujú jednotlivé globálne premenné pomocou OpenCL. Príklad poukazuje na jednoduchý spôsob prepisu kódu, ktorý má byť vykonaný paralelne. Ide o výpočet sčítania dvoch konštánt a, b a následného uloženia do premennej result. Aby sme mohli využiť paralelný výpočet musíme si na začiatok príkazu napísať kernel (jadro). Medzi ďalšie zmeny patrí spôsob definovania konštánt a premennej, ktoré musia byť globálne. Na záver sa musí ešte zadefinovať priestor jadra, unikátnym pracovným bodom id. Pracovné body sú zoskupené do lokálnych pracovných skupín, kde získavajú svoju veľkosť a za pomoci zdieľanej lokálnej pamäti sa synchronizujú [11]. Obr. č. 2.6 Prepis skalárneho kódu do paralelného Pre jednoduchšie poukázanie spôsobu akým sa vykonávajú jednotlivé kroky pri spracovávaní OpenCL som uviedol obrázok (Obr. č. 2.7). V ňom sa nachádza postup, ktorým sa vykonáva inštrukcia príkladu uvedeného na obrázku (Obr. č. 2.6). Táto činnosť pozostáva z niekoľkých hlavných častí: kompilácia kódu, vytvorenie dát a argumentov, na záver samotný výpočet. 32

34 Obr. č. 2.7 Spôsob vykonávania kódu v OpenCL V súčasnej dobe sa využívajú prostriedky OpenCL v obidvoch platformových prostriedkoch CUDA a ATI Stream. Pomocou nich sa umožňuje zrýchľovať niektoré programy, ktoré doteraz pracovali iba s využitím CPU. V prevažnej väčšine sa jedná o pracú s video súbormi. Výhod tejto myšlienky sa ujala aj vedecká časť užívateľov. Spoločnou snahou implementujú matematicko fyzikálne algoritmy, na ktoré sa využívajú výhody paralelných výpočtov cez GPGPU akcelerátory. Preto vývojári z Nvidii zahrnuli priamo do produktového balička CUDA špeciálne matematické knižnice. Tieto knižnice priamo zahŕňajú základné subrutiny, ktorými sa už užívateľ nemusí zapodievať. Práve z tohto dôvodu sa v tejto práci budem venovať iba produktu CUDA. Aj keď ATI Stream je v niektorých aspektoch výkonnejšie ako konkurencia. Do súčasnej dobi neposkytuje užívateľské prostredie pre účely vedeckého využitia. 33

35 3 Programové prostredie Matlab Matlab (MATrix LABoratory) je interaktívny systém pre vedeckotechnické výpočty založený na maticových kalkuláciách. Umožňuje riešiť veľkú oblasť numerických problémov, bez toho aby sme museli vytvárať vlastný program. Zároveň poskytuje aj vhodný grafický interface pre zobrazenia v 2D aj 3D. V polovici sedemdesiatych rokov minulého storočia pán Cleve Moler so svojím tímom vyvíjal subrutiny pre Fortran v rámci projektu National Science Foundation. Jednalo sa o projekty LINPACK, ktoré zastrešovali oblasť riešenia lineárnych rovníc a EISPACK, ktorý sa sústredil na riešenie vlastných čísel. Spojením týchto dvoch projektov vznikol nástroj na maticové výpočty. Neskôr sa Cleve Moler usiloval využiť výsledky projektu v pedagogike na univerzite v Novom Mexiku kde pôsobil. Nechcel študentov zaťažovať programovaním vo Fortrane. Chcel sa sústrediť na samotnú maticovú algebru. Preto sa rozhodol vytvoriť program, ktorý bude interaktívnym rozhraním medzi používateľom a subrutinami LINPACK a EISPACK. Pomenoval ho Matlab. V roku 1984 Cleve Moler, Steve Bangert a John Little vytvorili tím a Matlab preprogramovali do jazyka C doplnený o grafiku. O rok neskôr vznikla spoločnosť MathWorks, ktorá sa stará o vývoj dodnes [3]. Matlab je iba základná výpočtová platforma, ktorá sa dá rozširovať o ďalšie funkcie z rôznych oblastí vedy a techniky. V súčasnosti sa eviduje viac ako 100 rozširujúcich balíkov toolboxov. Najznámejší a zároveň aj najväčší z nich je Simulink. Ide o program pre simuláciu a modelovanie dynamických systémov, ktoré sa vytvárajú interaktívne vo forme blokových schém a prepojení medzi nimi. Popularite prispieva aj previazanosť jednotlivých balíkov, ako aj možnosť doprogramovať si vlastné funkcie využívajúce jednak základné funkcie (build-in), ako aj funkcie toolboxov. 34

36 Základným dátovým typom Matlabu je matica alebo vektor, pričom nie je potrebné definovať vopred ich rozmer. To Matlab odlišuje od klasických programovacích jazykov ako C alebo Fortran, ktoré sú navrhované na prácu so skalárnymi premennými. Matlab má výpočtové operácie zamerané práve na prácu s maticami a tak používateľ nemusí programovať náročné maticové operácie. Umožňuje nám programovať aj rozsiahle projekty s navzájom previazanými funkciami. Základné dátové typy Matlabu sú reprezentované triedami, ktorých je spolu 15. Každá trieda je vo forme matice alebo vektora, ktoré môžu byť rozmeru 0 0 alebo n-rozmerného vektora. Všetky základné dátové typy sú na nasledujúcom obrázku (Obr. č. 3.1) napísané malými písmenami. Obr. č. 3.1 Základné dávové typy Užívatelia si môžu dodefinovať vlastné objektovo orientované dátové typy. Dvojrozmerné matice typu double a logical môžeme uložiť vo dvoch formátoch full a sparse. Formát full uloží celú maticu a formát sparse uloží iba časť matice. Hlavnú výhodu to má pri typoch matíc v ktorých sa 35

37 vyskytuje veľa núl. Umožňuje nám to šetriť miesto v pamäti. Pri jednotlivých typoch je nutné si dávať pozor na následné operácie s nimi [12]. 3.1 CUDA knižnice CUDA obsahuje predprogramovane knižnice, cez ktoré dokážeme priamo volať programy. Nie je už potom nutné používať ďalšie zdĺhavé vytváranie nového kódu. Súčasťou nových ovládačov CUDA 3 sú aj dve matematické knižnice zahrnuté v CUDA runtime oblasti: CUBLAS sú v nej začlenené základné lineárne algebrické podprogramy; v skratke BLAS (Basic Linear Algebra Subprograms). Ide o najpoužívanejšiu súčasť CUDA knižníc pre jej široké uplatnenie. CUFFT poskytuje možnosti paralelného výpočtu Furierovej transformácie FFT (Fast Furier Transform), pomocou ktorých sa rieši veľké množstvo aplikácii v najrôznejších oblastiach vedy a techniky CUBLAS knižnice Každá knižnica v sebe obsahuje určité pomocné funkcie na vytváranie a mazanie dát z pamäte GPU. Pre maximálnu kompatibilitu funguje aj v prostredí Fortran. Následne si môžeme spomenúť niektoré tieto pomocné funkcie a vysvetliť si v skratke čo vykonávajú a načo nám slúžia. Pre CUBLAS typy sa pred každou funkciou definuje cublasstatus, ktorý sa používa pre stav návratu funkcie. V súčasnej dobe sú tieto hodnoty definované nasledovne: CUBLAS_STATUS_SUCCESS- operácia bola úspešne dokončená CUBLAS_STATUS_NOT_INITIALIZED - knižnica nie je inicializovaná CUBLAS_STATUS_ALLOC_FALLED - alokácia zdrojov zlyhala CUBLAS_STATUS_INVALID_VALUE - nepodporovaná číselná hodnota 36

38 CUBLAS_STATUS_MAPPING_ERROR - prístup k pamäti GPU zlyhal CUBLAS_STATUS_EXECUTION_FALLED - program GPU sa nepodarilo spustiť CUBLAS_STATUS_INTERNAL_ERROR - interná CUBLAS operácia zlyhala Zoznam pomocných funkcii pre CUBLAS: cublasgetmatrix (int rows, int cols, int elemsize, const void *A, int lda, void *B, int ldb) je to kópia riadkov (rows) krát stĺpcov (cols) z matice A do matice B v priestore pamäte GPU. Každý prvok vyžaduje elemsize bytov na uloženie. Obe matice sú považované za uložené v hlavnom stĺpci (čísla v riadkoch), s rozmermi matice A uvedenej v lda a s vedúcim rozmerom určenia matice B uvedenej v ldb. Potom A je ukazovateľ na objekt alebo časť objektu, ktorý bol pridelený v priestore pamäti GPU cez cublasalloc (). cublassetmatrix (int rows, int cols, int elemsize, const void *A, int lda, void *B, int ldb) - je totožná funkcia s cublasgetmatrix (), s tým rozdielom, že B je ukazovateľ na objekt alebo časť objektu pridelený v priestore pamäti GPU cez cublasalloc (). cublasgetvector (int n, int elemsize, const void *x, int incx, void *y, int incy) ide o kópiu n-prvkového vektora x a vektora y v priestore pamäti GPU. Predpokladá sa, že prvky oboch vektorov majú veľkosť elemsize bytov. Vzdialenosť medzi dvoma susednými prvkami je incx pre zdroj vektora x a incy pre určenie vektora y. Všeobecne platí, že ukazovateľ x je objekt alebo časť objektu pridelený cublasalloc (). Ak je vektor súčasťou matice, potom sa vektor prírastku rovná jednému čiastočnému stĺpcu matice. cublassetvector (int n, int elemsize, const void *x, int incx, void *y, int incy) - vykonáva rovnakú operáciu ako cublasgetvector (), len na 37

39 rozdiel od neho ukazovateľ y je objekt alebo časť objektu pridelený cublasalloc (). cublasfee (const void *deviceptr) maže objekt v priestore pamäti GPU s odkazom na deviceprt. cublasalloc (int n, int elemsize, void **deviceptr) vytvorí objekt v priestore pamäti GPU, kde možno umiestniť polia n-prvov. Každý prvok vyžaduje elemsize bytov na uloženie. Ak je volanie funkcie úspešné, je ukazovateľ umiestnený v pamäti GPU v priestore deviceprt. Ide o jediné zariadenie, ktoré nemôže byť odkázané v hostiteľských kódoch. cubasgeterror (void) vracia poslednú chybu, ktorá sa objavila vo volaní z ktorejkoľvek základnej funkcie. CUBLAS pomocník vracia status priamo. Pri čítaní chybného statusu cez túto funkciu sa obnoví vnútorná chyba. cublasshutdown (void) je verzia pre CPU zdroj, ktoré používajú knižnice CUBLAS. Umožňuje pozastaviť alebo vypnúť aplikácie v GPU prostredí. cublasinit (void) inicializuje knižnicu CUBLAS a musí byť zvolená pred akoukoľvek inou volanou funkciou CUBLAS API. Prideľuje hardvérové zdroje potrebné na prístup k GPU. Toto sú iba základne typy pomocných funkcii pre CUBLAS. Ďalej sa dajú ešte členiť na základe jednotlivých skupín pre ktoré sú určené. V celku sa delia na tri: Prvý stupeň v sebe zahŕňa výpočty pre skalárne a vektorové operácie. V druhom sa nachádzajú funkcie pre vektorovo-maticové algoritmy. Pri tretej sa využívajú operácie s maticami. 38

40 V samostatných skupinách sa ešte členia na základe požadovanej presnosti podľa IEEE 754 na štyri: jednoduchá presnosť komplex jednoduchej presnosti dvojnásobná presnosť komplex dvojnásobná presnosti [13] CUFFT knižnice Knižnice CUFFT sa zvyčajne od seba líšia v podpore transformácie typu a veľkosti dát. Napríklad, niektoré knižnice vykonávajú len Radix-2 FFT, ktoré sa obmedzujú na veľkosť spracovávaného výkonu do dvoch. Zatiaľ čo iné realizujú ľubovoľne veľké transformácie. Radix-2 FFT je najjednoduchší FFT algoritmus. Podobne ako všetky FFT, poskytujú rýchlosť využitia výsledkov a súčasne počíta medzi výpočty na viacerých frekvenčných výstupoch. Samotná knižnica CUFFT v sebe obsahuje určité funkcie, ktoré nám umožňujú nasledujúce využitia: jednorozmerné až trojrozmerné transformácie komplexných a reálnych dátových hodnou skupina príkazov pre spracovanie viacerých jednorozmerných transformácií paralelne dvojrozmerné a trojrozmerné transformácie v rozmedzí veľkosti 2 až v akomkoľvek rozmere jednorozmerné transformácie až do veľkosti 8 miliónov prvkov vnútorné a vonkajšie priestorové transformácie pre reálne aj komplexné dáta 39

41 Následne si uvedieme niektoré konkrétne typy knižníc s pomocou ktorých dokážme priamo adresovať konkrétne funkcie a transformácie medzi mini. Typy a transformačné smery CUFFT: cuffthandle - je typ slúžiaci na ukladanie a realizáciu plánu. cuffresult - je výpočet hodnôt, používané výhradne ako funkcia hodnoty API návratu. Nižšie si uvedieme možné hodnoty návratu. cuffreal - je typ jednoduchej presnosti, pohyblivou desatinnou čiarkou reálnych dát. cufftcomplex - je typ komplexného dátového typu jednoduchej presnosti s pohyblivou desatinnou čiarkou, ktorý je rozčlenený na reálne a imaginárne zložky. Transform Types - podporuje transformáciu komplexných a reálnych dát. Pre komplexné FFT musia mať vstupné a výstupné polia skutočnú aj imaginárnu časť. Transform Directions - slúži na vyššiu transformáciu FFT do 2D a 3D oblasti. Môžeme si zvoliť postupnosť pri transformácii, čo je vhodné pre API funkcie. Ak si nezvolíte postupnosť pri 3D FFT napr. matice X, Y a Z, potom sa nám môže stať, že CUFFT zamení poradie matíc a transformuje najskôr Z, Y a potom až X. Pri použití typu cufftresult sa môžu vyskytnúť nasledujúce možné hodnoty návratu: CUFFT_SUCCESS operácia bola úspešne dokončená CUFFT_INVALID_PLAN_CUFFT je podaný neplatný plán spracovania CUFFT_ALLOC_FAILED alokácia zdrojov zlyhala CUFFT_INVALID_TYPE používateľ požaduje nepodporovaný typ CUFFT_INVALID_VALUE nepodporovaná číselná hodnota CUFFT_INTERNAL_ERROR používa sa na všetky vnútorné chyby CUFFT_EXEC_FAILED CUFFT sa nepodarilo spustiť FFT na GPU 40

42 CUFFT_SETUP_FAILED knižnici CUFFT sa nepodarilo inicializovať CUFFT_SHUTDOWN_FAILED knižnicu CUFFT sa nepodarilo vypnúť CUFFT_INVALID_SIZE užívateľ zadáva nepodporovanú veľkosť FFT Knižnica CUFFT inicializuje vstupné dáta pri prvom vyvolaní funkcie API, čo má niekedy za príčinu, že by sa mohli API funkcie vrátiť s chybovým kódom CUFFT_SETUP_FALLED. V tom prípade, že knižnici sa nepodarí inicializovať, CUFFT sa automaticky zatvára. Aby sme predišli takýmto chybám musíme presne zaadresovať FFT funkciu. CUFFT funkcie sú nasledujúce: cufftplan1d() vytvára jednorozmernú FFT konfiguráciu pre určitý signál, veľkosť a typ dát. Vstupný parameter hovorí CUFFT koľko jednorozmerných transformácii má nakonfigurovať. cufftplan2d() vytvára dvojrozmernú FFT, nastavuje sa podľa stanovených signálov, veľkosti a typov dát. Táto funkcia je rovnaká ako predchádzajúca s výnimkou veľkosti parametrov. cufftplan3d() vytvára trojrozmernú FFT, táto funkcia je zhodná s predošlou avšak obsahuje aj tretí parameter. cufftdestroy() uvoľňuje všetky GPU zdroje pre činnosť CUFFT a pretvára dátovú štruktúru. Funkcia sa inicializuje iba raz, aby nedochádzalo k zahlcovaniu GPU pamäte zbytočne. cuffexexc2c() vykonáva CUFFT komplexné transformácie. Využíva vstupné dáta v pamäti GPU na určenie parametrov a zároveň ukladá aj Fourierove koeficienty. cufftexecr2c() vykonáva CUFFT pre skutočné a komplexné (implicitné) premenné. Taktiež využíva vstupné dáta v pamäti GPU na určenie parametrov s tým rozdielom, že Fourierové koeficienty ukladá mimo hlavných údajov. 41

43 cufftexecc2r() vykonáva CUFFT pre komplexnú a skutočnú transformáciu. Rovnako ako u predchádzajúceho ukladá Fourierové koeficienty mimo hlavných údajov. Knižnica CUFFT implementuje niekoľko FFT algoritmov z ktorých každá má inú presnosť a výkon. Aby sme dosiahli najlepší výkon musí zodpovedať transformácia určitej veľkosti a to dosiahneme keď splníme nasledovné dve kritéria: 1. vhodnou úpravou CUDA pre adresovanie do zdieľanej pamäte, 2. právomoc jedného faktora. Ak sú splnené kritéria je takáto transformácia veľmi presná kvôli svojej numerickej stabilite pre zvolený algoritmu FFT. Pre transformácie, ktoré spĺňajú iba prvé kritérium a druhé už nie, CUFFT používa všeobecnejší Radix FFT algoritmus, pričom sú zvyčajne pomalšie a menej numericky presné. Preto, ak je to možné, je najlepšie používať veľkosti transformácií, ktoré spĺňajú aj druhé kritérium. Aby sme ho plnili musia byť právomoci určené dvoma alebo štyrmi, v inom prípade to môžu byť malé prvočísla. V tomto prípade FFT algoritmus v CUFFT využije maximálne šírku zdieľanej pamäte. Pre transformačné veľkosti, ktoré nespĺňajú ani jedno z kritérií, CUFFT používa zmiešaný algoritmus, pri ktorom sa všetky priebežné výsledky uchovávajú v globálnych pamätiach na GPU. Hoci tento algoritmus používa optimalizované transformačné moduly pre mnoho faktorov, má vo všeobecnosti nižší výkon. Je to zapríčinené hlavne tým, že šírka pásma pre globálne pamäte je nižšia ako je tomu pri zdieľaných pamätiach [13]. 42

44 3.2 Softvérové baličky Jacket a GPUmat Aby som mohol využívať technológiu CUDA v programovom prostredí Matlab, využívam softvérové balíčky, ktoré sú už vytvorené a tým mi uľahčujú tvorbu zdrojového kódu. Využívam už pred programované funkcie a volám ich. V súčasnej dobe sa na trhu vyskytujú dva takéto pomocné balíčky od rôznych výrobcov. V prvom prípade je to Jacket od spoločnosti AccelerEyes. Jeho hlavnou nevýhodou je, že sa nejedná o voľnú verziu pre bežných užívateľov. Poskytuje aj voľnú (Trial) verziu, ktorá obsahuje všetky funkcie ako plnohodnotná (Full) verzia, ale je obmedzená časovo na 15 dní. V druhom prípade ide o produkt s názvom GPUmat od firmy GP-you Group. Pri tomto produkte je umožnené využívať funkcie CUDA bez akéhokoľvek obmedzenia, lebo sa jedná o voľne šíriteľnú verziu pre užívateľov. V ďalších podkapitolách si uvedieme spôsoby akým sa jednotlivé aplikácie inštalujú (uvádzajú do činnosti) a akým spôsobom sa volajú jednotlivé funkcie CUDA. Na záver si vyhodnotíme jednotlivé merania pre tieto balíčky Jacket Jacket bol vyvinutý spoločnosťou AccelerEyes pre úlohy využitia rýchleho paralelného výpočtu na GPGPU. Sídlo firmy sa nachádza v Atlante v USA, kde bola založená v Júni Hlavnou prioritou je vyvíjať jednoduché softvérové balíčky pre najrôznejšie odvetvia techniky ako napríklad biomedicína, letectvo a vesmír alebo pre výskum a akademické aplikácie. 43

45 Na to, aby sme mohli využívať tento produkt musíme spĺňať niektoré požiadavky, ktoré sú: 1. pamäť CPU by mala byť vyššia alebo rovnako veľká ako pamäť GPU, 2. v niektorých prípadoch kedy sa ako operačný systém používa Windows sa požaduje NET Framework, 3. a požiadavka na Matlab je, že musí byť použitá najmenej verzia R2006B a vyššia. Ak sú tieto podmienky splnené môžeme po registrácii na ich stránkach využívať samotný balíček. Z dôvodov, že plná verzia je nesmierne drahá, základná licencia stojí 999 $, využil som možnosť a nainštaloval som si trial verziu. Jej inštalácia prebieha podobne ako u iných programov. Pri prvom spustení si od Vás vypýta registračné údaje a na základe nich určí akú verziu budete využívať. Následne sa inicializujú jednotlivé prístupové cesty pre Matlab: AccelerEyesJacket/engine = pre Jacket AccelerEyesJacket/gfx = pre grafiku AccelerEyesJacket/gfx/mgl = pre toolbox balíčky Na nasledujúcom obrázku (Obr. č. 3.2) je možné vidieť ako funguje vzájomné prepojenie Matlabu a Jacketu z užívateľom. Obr. č. 3.2 Spôsob prepojenia užívateľa s prostredím Jacketu v Matlabe 44

46 Pre využitie dátových funkcií v tomto prostredí sa pred štandardné príkazy umiestňuje písmenko g. Pomocou neho vie daný kompilátor, že pre koho je daná sprava určená, či pre CPU alebo GPU. Napríklad pre volanie pomocníka help pre CPU a pre GPU je to ghelp [14]. Funkcie Jacket v Matlabe Opis funkcie Príklad gsingle Vytvorí maticu s jednoduchou presnosťou. A = gsingle (B); gdouble Vytvorí maticu s dvojnásobnou presnosťou. A = gdouble (B); glogical Vytvorí binárnu maticu kde sú všetky A = glogical (B); hodnoty väčšie ako 0 prepísané na 1. A = glogical (0:4); guint32, gint32 Vytvorí maticu s 32bit celým číslom. A = guint32 (B); A = gint32 (B); guint8, gint8 Vytvorí maticu s 8bit celým číslom. A = guint8 (B); A = gint8 (B); gzeros Vytvorí maticu so samými nulami. A = gzeros (5); A= gzeros (2, 6); gones Vytvorí maticu so samými jednotkami. A = gones (5); A = gones ([3 9]); geye Vytvorí maticu z jednotkami po diagonále. A = geye (5); Tabuľka 4 Zoznam dátových funkcii Jacket pre GPU GPUmat Balíček GPUmat bol vyvinutý skupinou GP-you Group, ktorá produkuje podobné softvérové produkty ako AccelerEyes. V apríli 2009 predstavili svoju prvú verziu pre knižnice Matlab. Ako som už spomenul, ide o voľne šíriteľnú verziu čo je jej najväčšie pozitívum. Umožňuje tak vývojárom jednoduchý spôsob, ako využívať GPGPU pre najrôznejšie aplikácie [15]. Medzi ďalšie veľké výhody patrí aj to, že nie je nutná žiadna inštalácia. Stačí si stiahnuť produkt z ich stránky, čo sa ale dá iba po registrácii, čím si chránia svoje autorské práva. V súbore sa nachádzajú dva programy pre 45

47 Matlab pomocou ktorých spúšťame a ukončujeme GPU kompilátor. Po spustení dokáže už priamo rozlišovať kód pre GPGPU. Rovnako ako tomu bolo u predchádzajúceho balíčka sa tu tiež využíva pred štandardné príkazy predurčený dátový typ v tvare GPU. S tým rozdielom, že GPUmat používa iba dva druhy GPUsingle a GPUdouble. Ostatné musia byť prevádzane cez tieto dva typy. V tom sa najviac odlišuje od Jacketu, ale verím, že v ďalších verziách sa tento malý nedostatok odstráni. Jacket glogical gones gzeros geye GPUmat GPUsingle(logical) GPUsingle(ones) GPUsingle(zeros) GPUsingle(eye) GPUdouble(logical) GPUdouble(ones) GPUdouble(zeros) GPUdouble(eye) Tabuľka 5 Rozdiel v zápise dátových funkcii pre Jacket a GPUmat Ako hlavná úloha pre tieto balíčky je práca s matematickými operáciami. V obidvoch prípadoch t. j. pre Jacket a GPUmat bol zvolený jednotný systém akým sa zapisujú. Je totožný s Matlab-ovskými operáciami, čo veľmi uľahčuje prácu s nimi. I keď aj tu sa nájdu nepatrné rozdiely v podporách niektorých matematických funkciách. Preto je nutné si preštudovať dodávané užívateľské manuáli, v ktorých sa nachádzajú všetky podporované operácie. 3.3 Hardvérová zostava na testovanie Všetky testy budú prebiehať na nasledujúcom stolnom počítači s týmito základnými parametrami: základná doska AMD 790GX s čipsetom AMD SB750 procesor AMD Athlon II X4 620 s taktom 2,6 GHz pamäte DDR2 o veľkosti 4x1024 MB grafická karta Nvidia GTX-470 s novou technológiou Fermi operačný systém Microsoft Windows 7 zo 64 bit architektúrou 46

48 3.3.1 Základné údaje o procesor AMD Athlon II X4 620 AMD Athlom II X4 je štvorjadrový procesor (Obr. č. 3.3) tvorený z 468 miliónov tranzistorov. Jeho hlavnou schopnosťou je možnosť používať DDR2 alebo DDR3 pamäte. Obsahuje dve cache pamäte L1 a L2 pričom možnosť využitia L3 je blokovaná. Obidve pamäte sú obsiahnuté štyrikrát s rozličnou veľkosťou. Pre L1 je táto veľkosť 128 KB a pre L2 to obsahuje 512 KB. Technológia výroby jadra je 45nm s využitým SOI (Silicon On Insulator) [16]. Ide o technológiu, pri ktorej sa využíva tenká vrstva kremíka, od 50nm do 100µm, ktorá je vytvorená na izolovanom substráte. Väčšinou je tvorený zafírom alebo kremíkom s izolovanou vrstvou oxidu kremíka (SiO2) 80nm hrubou na jeho povrchu. Hlavná výhoda je v tom, že tento izolant redukuje kapacitu hradla tranzistora a to sa s tým pádom na prepnutie nemusí tak dlho nabiť, čo logicky znamená zredukovanie prepínacieho času [5]. Obr. č. 3.3 Röntgenový snímok procesora AMD Athlon II X

49 3.3.2 Technológia Fermi Ide o z cela novú technológiu využívajúcu prevratne vynovené jadro grafickej karty. Hlavný rozdiel voči predchádzajúcim typom je v počte použitých tranzistorov. V prvých verziách sa ich objavilo 3 až 3,2 miliárd čo je dvakrát viac ako u predchádzajúcej série. Aj voči konkurencii je to dosť veľký rozdiel, napríklad grafická karta od ATI Radeon HD5800 ich má 2,15 miliárd. Nová zmena nastala aj v samotnom premenovaný stream procesorov (SP) na CUDA procesory (CP), ktorých je teraz až 512. Grafický procesor sa rozdelil na šestnásť steaming multy-procesorových (SM) jednotiek (Obr. č. 3.4). Obr. č. 3.4 Streaming multi-procesor pre Fermi V každom z nich sa nachádza 32 CUDA procesorov, čo je štyrikrát viac ako u predchádzajúcich a tým sa umožnilo zapracovávať 2 x 32 vlákien za 48

50 jeden takt. Zdvojnásobil sa aj počet SFU v jadre. Samotný blok SM má k dispozícii 64 KB pamäte s možnosťou navýšiť si ju o časť L1 cach. GPU bolo vybavené aj novými šiestimi 64 bitovými pamäťami GDDR5 s maximálnou veľkosťou 6 GB. Medzí ďalšie prevratné novinky patrí u Fermi spôsob, akým sa vykonávajú jednotlivé operácie cez SM. Doterajšie využitie bolo časovo zdĺhavé a hlavne neefektívne, preto to bolo nutne zmeniť. Zmena nastala s využitím dvojvrstvových plánovačov (Scheduler), pomocou ktorých sa jednotlivé úlohy koordinujú do vlastných Warp Schedulerov. Takto sa zrýchlila práca pri spracovávaní dát o desaťnásobok. Túto novinku pomenovali GigaThread. Jej hlavné uplatnenie je v hernej sfére, kde sa využíva na rozdeľovanie činnosti pre zobrazovanie a technológiu PhysX [17]. Obr. č. 3.5 Spôsob rozdelenia úloh pre plné využitie SM pre GigaThread Na obrázku (Obr. č. 3.5) je možne vidieť akým spôsobom sa využíva GigaThread pri spracovávaní údajov. Pri klasickom sériovom spracovaní (ľavá časť obrázku) sa jednotlivé operácie vykonávali postupne podľa toho, ako boli adresované, čo predlžovalo celkový čas. Aby sa úplne využil SM, jednotlivé úlohy sa prekrývajú a tak sa využíva celá časť. 49

51 Nami používaná grafická karta Nvidia GTX-470 obsahuje 448 CUDA procesorov (Obr. č. 3.6). Je vybavená pamäťami GDDR5 o veľkosti 1280 MG, ktoré komunikujú pomocou 320 bitovej pamäťovej zbernice. Jadro je vyrobené technológiou 40nm pri frekvencii 607 MHz a pre CUDA procesory je 1215 MHz a pre pamäte 3384 MHz [18]. Obr. č. 3.6 Röntgenový snímok procesora GTX-470 Fermi 50

52 4 Vzájomné porovnanie výkonnosti prostredí Jacket a GPUmat V tejto časti si ukáže spôsob využitia jednotlivých poskytovaných akceleračných balíčkov. Testovanie bude prebiehať na už spomínanej počítačovej zostave s použitím softvérového vybavenia Matlab. Vyhodnocovať sa bude čas trvania jednotlivej aplikácie. Na porovnanie sa bude test vykonávať na CPU a GPU v jednom slede. Ako už bolo dokázané v predchádzajúcich diplomových prácach, ktoré pojednávali o podobnej problematike, najväčšie možné zaťaženie procesorov je pri vzájomnom násobení matíc. Doposiaľ nebolo možne vykonávať násobenie matíc s dvojnásobnou presnosťou z dôvodu, že nebola podporovaná. Až vydaním podpri CUDA 3 sa to umožnilo. Matlab používa automaticky spomínanú dvojnásobnú presnosť až kým si nezvolíme inú. Testami som chcel porovnať výkonnosť a spoľahlivosť medzi jednotlivými softvérovými balíčkami Jacket a GPUmat. Porovnával som časy výpočtov pre jednoduchú a dvojnásobnú presnosť. Merania sa museli vykonávali samostatne, pretože jednotlivé kompilátory by nedokázali odlíšiť od seba príkazy, ktoré boli zadávané pre konkrétne aplikácie. Začiatok testu sa začínal maticou o veľkosti 1000x1000 a zväčšovala sa o hodnotu 500. Nebolo možné násobiť matice väčšie ako 5000x5000 z dôvodu zaplnenia kapacity pamäte grafickej karty. Aby bolo meranie korektné, každé násobenie sa vykonalo desaťkrát a následne sa vykonal aritmetický priemer z nameraných časov. Po každom samostatnom meraní som reštartoval počítač z dôvodu prečistenia oboch pamätí ako grafickej karty, tak aj pamäte DDR2 na základnej doske. 51

53 Výsledky merania sú v nasledujúcich podkapitolách rozčlenené pre jednotlivé softvérové baličky. Vyhodnotenie som vykonal pre jednotlivé presnosti a sú uvedené v samostatnej podkapitole. 4.1 Test pre Jacket Zdrojový kód k tomuto príkladu uvádzam v prílohe (Prílohe A). Výsledky merania sú zobrazené v nasledujúcom grafe (Graf 1) Čas [s] CPU_single CPU_double Jacket_single Jacket_double Rozmer matice Graf 1 Porovnanie výpočtových časov pre CPU a Jacket s rôznou presnosťou Z grafu je badateľný časový rozdiel medzi CPU a Jacket. Pri Jacket je rozdiel medzi jednoduchou a dvojnásobnou presnosťou menší, ako je to v prípade CPU. Z časových výsledkov vyplýva, že Jacket s jednoduchou presnosťou je 15-krát výkonnejší ako CPU s rovnakou presnosťou a zároveň 8-krát výkonnejšie s dvojnásobnou presnosťou. 52

54 4.2 Test pre GPUmat Druhému meranému príkladu je zdrojový kód uvedený v druhej prílohe (Príloha B). Výsledky z tohto merania sú uvedené v grafe (Graf 2). V tomto prípade boli rozdiely medzi výkonnosťou CPU a GPUmat menšie ako pri predchádzajúcom príklade. Rozdiel výkonov pre jednoduchú presnosť je 9- krát rýchlejšie ako pri CPU a pri dvojnásobnej presnosti je tento rozdiel len 6- násobný Čas [s] CPU_single CPU_double GPUmat_single GPUmat_double Rozmer matice Graf 2 Porovnanie výpočtových časov pre CPU a GPUmat s rôznou presnosťou 4.3 Vyhodnotenie testov Cieľom vykonaných meraní bolo, porovnať poskytované akceleračné balíčky pre GPGPU. Zameral som sa hlavne na poukázanie rýchlosti spracovania matíc pri násobení s jednoduchou a dvojnásobnou presnosťou. 53

55 Z nameraných výsledkov vyplýva, že balíček Jacket vykonáva matematické operácie rýchlejšie a efektívnejšie ako je to u GPUmat. Operácie pri jednoduchej presnosti prvý spomínaný balíček vykonáva o 47% rýchlejšie, čo môžeme vidieť v grafe (Graf 3). 0,8 0,7 0,6 Čas [s] 0,5 0,4 0,3 0,2 0,1 GPUmat_single Jacket_single Rozmer matice Graf 3 Porovnanie časových výsledkov pre jednoduchú presnosť Pri dvojnásobnej presnosti sme dosiahli menšie rozdiely ako tomu bolo pri predchádzajúcej presnosti. Rozdiel bol v tomto prípade iba 29%, čo je znázornené na grafe (Graf 4). 2,5 2 Čas [s] 1,5 1 GPUmat_double Jacket_double 0, Rozmer matice Graf 4 Porovnanie časových výsledkov pre dvojnásobnú presnosť 54

56 5 Všeobecné nasadenie GPGPU Možnosť využitia GPGPU je v dnešnej dobe veľmi široká. Využíva sa hlavne v oblastiach, kde sa vyžaduje vysoký výpočtový výkon. Tieto procesy sú účinné pri riešení problémov paralelného spracovávania. Z tohto vyplývajú aj možnosti jeho využitiu, ako napríklad pre grafické operácie, nasadenie pre metódu konečných prvkov, triedenie informácií, simulácie DNA, štiepnych chemických a fyzikálnych reakcií, kryptografii či vzájomné interakcie objektov. Jedna z praktických aplikácií je pri analýze geofyzikálnych dát, kde spracovanie je natoľko náročné, že na základe údajov zozbieraných z hornín nemôžu byť vykonané analýzy vzhľadom na nedostatočný výkon pri výpočtoch. Použitie GPGPU umožňuje výrazne zrýchľovať tento proces, najmä tým, že je možné zobraziť výsledky v reálnom čase. Tieto poznatky sa uplatnili hlavne v ropnom priemysle (Obr. č. 5.1). Prieskumné vrty ropných vrtov predstavujú miliónové náklady pre ropné spoločnosti. Preto je nevyhnutné správne určiť seizmické dáta, ktoré vedú k optimálnemu výberu lokalít na vŕtanie [19]. Obr. č. 5.1 Podpovrchový geologický model (vľavo) a seizmický snímok (vpravo) 55

57 Ďalšie aplikácie, kde sa využívajú daná technológia, je pri simulácii vplyvu žiarenia vyžarovaného z GSM na ľudské tkanivá (Obr. č. 5.2); rovnako ako iné účely, napríklad na rýchlu detekciu rakoviny prsníka alebo simulácie spojené s kardiostimulátorom. Pri simulácii jedného neurónu je potrebný výpočet približne 200 miliónov diferenciálnych rovníc za sekundu. Až po spojení celej štruktúry neurónov si dokážeme predstaviť to obrovské množstvo výpočtov, ktoré je potrebne na samotnú simuláciu [8]. Obr. č. 5.2 Simulácia GSM modulu na neurónovú sieť 5.1 Využitie GPGPU v strojárenských aplikáciách V nasledujúcej podkapitole sa budem venovať možnosti nasadenia GPGPU akcelerácie pre strojárenský priemysel. Ako hlavné využitie by som spomenul možnosti pri riešení lineárnych rovníc. Na základe nich sa rieši veľká škála dynamických systémov, ako napríklad termická analýza, mechanické simulácie, dynamika tekutín a mnoho ďalších. V strojárenskom priemysle si našla táto technológia uplatnenie napríklad pri simulácii injekčného vstrekovania plastových dielov. Slúži na optimalizovanie vlastností procesu digitálneho prototypu a vytvorenia finálneho návrhu. Podobné nasadenie je možné aj pri výpočtoch v oblasti pružnosti, pevnosti alebo zvarov [19]. V súčasnosti sa nevykonáva výskum na ÚAMAI ohľadom využitá GPGPU akcelerácie. Práve z toho dôvodu som sa rozhodol využiť poznatky, ktoré som nadobudol počas štúdia knižníc CUDA. Pre možne uplatnenie na 56

58 laboratórnom modeli votknutého nosníka, ktorý sa nachádza na našom ústave. Pri tejto úlohe sa používa Fourierová transformácia na výpočet deterministického stavového modelu systému. Na spomínanej transformácii by som chcel demonštrovať možné uplatnenie tejto technológie. Využijem pri tej príležitosti knižnice CUFFT. V nasledujúcich častiach poukážem na problematikou kmitania telies, ktorá spôsobuje nežiaduce účinky na konštrukciách. Na záver vykonám merania na spomenutom votknutom nosníku. Namerané dáta spracujem pomocou už spomínaných softvérových balíčkov cez GPU. 5.2 Problematika kmitania telies S touto problematikou sa zaoberajú nielen vedci na akademickej pôde, ale aj v dnešnej dobe viaceré inšie výskumné skupiny. Medzi ne patria hlavne stavebníctvo, obchodné a vojenské letectvo, vývoj lekárskeho vybavenia, presné výrobne systémy a mnoho ďalších. Spoločnou snahou je prichádzať s riešeniami, ktoré budú zabraňovať svojvoľnému kmitaniu. Vo prevažnej väčšine je takéto kmitanie nežiaduce a môže spôsobovať zníženie výkonu výrobku (vznik mikrotrhlín) a v neposlednej rade aj bezpečnostné problémy (únavový lom). Vedci už prišli s niekoľkými systémami ako sa dá takýmto veciam predchádzať. Jednou z nich je použitie pasívnych tlmičov kmitania ako je tomu pri mrakodrapoch. Kde sa pomocou takéhoto systému zabraňuje zrúteniu budovy pri seizmických otrasoch. Jeden z princípov spočíva v odizolovaní celej budovy od povrchu za pomoci miskovitých foriem a druhej stykovej plochy v tvare pologule. Pri vibráciách sa polguľovitý povrch voľne kĺže po miske a pôsobením gravitácie sa celý objekt stabilizuje uprostred spomínaného telesa. V niektorých prípadoch nie je možne využiť takýto systém, v tom prípade je nutné použiť aktívny spôsob tlmenia. Ten spočíva v uplatnení 57

59 pohonu pôsobiaceho proti sile, ktorá spôsobuje kmitanie. V takom prípade je potrebné riadiť tento pohon, aby nedošlo ešte k zosilneniu vibrácii. Sila sa preto riadi pomocou spätnej väzby od snímaných senzorov. Na to, aby táto odozva bola čo možno najrýchlejšia je nutné používať výpočty v reálnom čase čo možno s najmenším oneskorením na systém. Ako pohony sa osvedčili hlavne piezoelektrické materiáli. Ich hlavnou výhodou je, že dokážu pracovať v rozsiahlom frekvenčnom pásme a majú nízku hmotnosť, ktorá nezaťažuje riadený systém. V súčasnosti sa tieto prvky využívajú aj v pasívnych tlmiacich aplikáciách. 5.3 Popis systému votknutého nosníka Model votknutého nosníka sa dá laický popísať ako teleso upevnené iba na jednom konci, v ktorom sú mu odoberajú všetky možné posunutia a rotácie. Druhý voľný koniec sa môže pohybovať vo všetkých smeroch a natočeniach. Z vedeckého hľadiska sa dá ešte popísať aj ako kmitanie kontinua s nekonečným počtom vlastných frekvencií. Pre podrobnejší opis kmitajúceho nosníka by sme potrebovali poznať diferenciálnu rovnicu nekonečného radu pre každý bod opisujúci kmitanie. Samostatne tieto frekvencie nemusia mať rovnaké účinky na kmitanie votknutého nosníka avšak, ďalší aspekt na ktorý sa musí bezpodmienečne prihliadať, je veľkosť energie. Táto energia sa prejavuje vo veľkosti vychýlenia nosníka na základe vlastnej frekvencie. Pre možnosti tlmenia s riadenou odozvou je uspokojivé, ak poznáme niekoľko prvotných vlastných frekvencií. Prístup založený na pevných bodoch a mnohých zjednodušení nám ponúka riešenia pre fyzikálnu mechaniku. Tieto zjednodušenia vychádzajú z uplatnenia modelu, z ktorého sa berie iba prvotná vlastná frekvencia kmitania Prístup sa aplikuje v nelineárnych diferenciálnych rovniciach. 58

60 Jeden z možných systémov ako získať model kmitajúceho nosníka pozostáva z princípov systémovej identifikácie. Táto metóda je založená na meraní vstupno-výstupných parametrov. Túto metódou po prvýkrát aplikovali v roku 1996 vedci P. Van Overschee., B. De Moor [1]. Dynamický systém opísaný v deterministickým stavovým modelom je efektívnym spôsobom pre určenie matíc A (stavová matica), B (vstupná matica), C (výstupná matica) a D (kladná spätná väzba v prípadoch, že systémový model neobsahuje spätnú väzbu, je daná matica nulová). Všeobecný zápis stavového modelu pre diskrétne systémy je nasledovný: x(k + 1) = Ax(k) + Bu(k) (1) y(k) = Cx(k) + Du(k) V danom zápise nám vstupné veličiny predstavuje vektor u(k), výstupné veličiny zas vektor y(k) a stavový vektor je vyjadrený x(k). Zápis stavového modelu sa dá reprezentovať aj pomocou schematického celku, ako je tomu na obrázku (Obr. č. 5.3). Obr. č. 5.3 Bloková schéma stavového modelu 59

61 V našom prípade matica D nadobudla nulovú hodnotu z dôvodu, že systém votknutého nosníka neobsahuje spätnú väzbu. x(k + 1) = Ax(k) + Bu(k) (2) y(k) = Cx(k) Aby sme dokázali určiť matice dynamiky kmitajúceho nosníka musíme previesť namerané hodnoty z časovej oblasti do oblasti frekvenčnej. K tejto činnosti nám slúži FFT (Fast Fourier Transform). Táto transformácia využíva N 1 k = 0 pre výpočet diskrétne Fourierových transformácií F = F { f } ( n) platí: n k k, pre ktoré F n = N 1 k= 0 f k e 2 π i n k / N (3) V nasledujúcom meraní budem využívať práve túto funkciu FFT, ktorá je obsiahnutá už v spomínaných CUFFT knižniciach. Mojím cieľom bude porovnávať rýchlosť transformácie na CPU a GPU s použitím akceleračných balíčkov Jacket a GPUmat. 5.4 Opis merania Meranie sa uskutočnilo na laboratórnom votknutom nosníku, na ktorom boli umiestnené vstupno-výstupné prvky. Ako vstupné zariadenie sa použil laserový merací prístroj Keyence LK-G82 a na výstup bol použitý piezoelektrický prvok MIDÉ QP N16. Súčasťou meracieho reťazca boli aj ďalšie komponenty, ktoré bližšie popisujem v nasledujúcich riadkoch. Tieto komponenty nám umožňovali spracovávať namerané údaje, ktoré boli 60

62 vykonané v prostredí Matlab. Celková schéma zapojenia je zobrazená na obrázku (Obr. č. 5.4). Obr. č. 5.4 Schéma zapojenia jednotlivých meracích prístrojov Popis jednotlivých prístrojov v meracom reťazci: 1. votknutý nosník vyrobený z materiálu hliník s označením EN AW Jeho rozmery sú 550x40x3 mm a dĺžka upevnenia je 20 mm. 2. piezoelektricky prvok MIDÉ QP N16 jeho rozmery sú 45,9x20,7x0,25 mm. Je napájaný napätím ±120V a jeho kapacita je 137nF. Piezo doštička je obklopená ochranným filmom a je dodávaný s elektródami, ktoré sú umiestnené na povrchu. 3. zosilňovač MIDÉ EL-1225 prístroj prijíma vstupný signál a zosilňuje ho až na požadovanú hodnotu. Taktiež poskytuje stabilné riadenie pre veľké kapacitné zaťaženia. Poskytuje výstupnú šírku pásma 5kHz s 3dB útlmom. 4. vstupno-výstupní analógoví prevodník BNC-2111 poskytuje prepojenie medzi meracou kartou a meranými veličinami. Obsahuje 16 analógových vstupných svoriek, 2 analógové výstupné svorky a 5 digitálnych vstupno-výstupných portov. 61

Spájanie tabuliek. Jaroslav Porubän, Miroslav Biňas, Milan Nosáľ (c)

Spájanie tabuliek. Jaroslav Porubän, Miroslav Biňas, Milan Nosáľ (c) Spájanie tabuliek Jaroslav Porubän, Miroslav Biňas, Milan Nosáľ (c) 2011-2016 Úvod pri normalizácii rozdeľujeme databázu na viacero tabuliek prepojených cudzími kľúčmi SQL umožňuje tabuľky opäť spojiť

More information

Copyright 2016 by Martin Krug. All rights reserved.

Copyright 2016 by Martin Krug. All rights reserved. MS Managed Service Copyright 2016 by Martin Krug. All rights reserved. Reproduction, or translation of materials without the author's written permission is prohibited. No content may be reproduced without

More information

kucharka exportu pro 9FFFIMU

kucharka exportu pro 9FFFIMU požiadavky na export kodek : Xvid 1.2.1 stable (MPEG-4 ASP) // výnimočne MPEG-2 bitrate : max. 10 Mbps pixely : štvorcové (Square pixels) rozlíšenie : 1920x1080, 768x432 pre 16:9 // výnimočne 1440x1080,

More information

Registrácia účtu Hik-Connect

Registrácia účtu Hik-Connect Registrácia účtu Hik-Connect Tento návod popisuje postup registrácie účtu služby Hik-Connect prostredníctvom mobilnej aplikácie a webového rozhrania na stránke www.hik-connect.comg contents in this document

More information

Aplikačný dizajn manuál

Aplikačný dizajn manuál Aplikačný dizajn manuál Úvod Aplikačný dizajn manuál je súbor pravidiel vizuálnej komunikácie. Dodržiavaním jednotných štandardov, aplikácií loga, písma a farieb pri prezentácii sa vytvára jednotný dizajn,

More information

Databázové systémy. SQL Window functions

Databázové systémy. SQL Window functions Databázové systémy SQL Window functions Scores Tabuľka s bodmi pre jednotlivých študentov id, name, score Chceme ku každému doplniť rozdiel voči priemeru 2 Demo data SELECT * FROM scores ORDER BY score

More information

Anycast. Ľubor Jurena CEO Michal Kolárik System Administrator

Anycast. Ľubor Jurena CEO Michal Kolárik System Administrator Anycast Ľubor Jurena CEO jurena@skhosting.eu Michal Kolárik System Administrator kolarik@skhosting.eu O nás Registrátor Webhosting Serverové riešenia Správa infraštruktúry Všetko sa dá :-) Index Čo je

More information

VYLEPŠOVANIE KONCEPTU TRIEDY

VYLEPŠOVANIE KONCEPTU TRIEDY VYLEPŠOVANIE KONCEPTU TRIEDY Typy tried class - definuje premenné a metódy (funkcie). Ak nie je špecifikovaná inak, viditeľnosť členov je private. struct - definuje premenné a metódy (funkcie). Ak nie

More information

Obsah. SOA REST REST princípy REST výhody prest. Otázky

Obsah. SOA REST REST princípy REST výhody prest. Otázky REST Peter Rybár Obsah SOA REST REST princípy REST výhody prest Otázky SOA implementácie WEB (1990) CORBA (1991) XML-RPC (1998) WS-* (1998) SOAP RPC/literal SOAP Document/literal (2001) REST (2000) SOA

More information

TP-LINK 150Mbps Wireless AP/Client Router Model TL-WR743ND Rýchly inštalačný sprievodca

TP-LINK 150Mbps Wireless AP/Client Router Model TL-WR743ND Rýchly inštalačný sprievodca TP-LINK 150Mbps Wireless AP/Client Router Model TL-WR743ND Rýchly inštalačný sprievodca Obsah balenia TL-WR743ND Rýchly inštalačný sprievodca PoE injektor Napájací adaptér CD Ethernet kábel Systémové požiadavky

More information

1 Komplexný príklad využitia OOP

1 Komplexný príklad využitia OOP 1 Komplexný príklad využitia OOP Najčastejším využitím webových aplikácií je komunikácia s databázovým systémom. Komplexný príklad je preto orientovaný práve do tejto oblasti. Od verzie PHP 5 je jeho domovskou

More information

CSE 591: GPU Programming. Introduction. Entertainment Graphics: Virtual Realism for the Masses. Computer games need to have: Klaus Mueller

CSE 591: GPU Programming. Introduction. Entertainment Graphics: Virtual Realism for the Masses. Computer games need to have: Klaus Mueller Entertainment Graphics: Virtual Realism for the Masses CSE 591: GPU Programming Introduction Computer games need to have: realistic appearance of characters and objects believable and creative shading,

More information

Manuál k programu FileZilla

Manuál k programu FileZilla Manuál k programu FileZilla EXO TECHNOLOGIES spol. s.r.o. Garbiarska 3 Stará Ľubovňa 064 01 IČO: 36 485 161 IČ DPH: SK2020004503 support@exohosting.sk www.exohosting.sk 1 Úvod EXO HOSTING tím pre Vás pripravil

More information

Crestron Mercury. Univerzálny Videokonferenčný a Kolaboračný systém

Crestron Mercury. Univerzálny Videokonferenčný a Kolaboračný systém Crestron Mercury Univerzálny Videokonferenčný a Kolaboračný systém Tradičná malá zasadacia miestnosť CRESTRON Mercury Videokonferenčná miestnosť Možnosť rezervácie miestnosti: Prostredníctvom MS Outlook

More information

Coordinates ordering in parallel coordinates views

Coordinates ordering in parallel coordinates views Univerzita Komenského v Bratislave Fakulta matematiky, fyziky a informatiky Coordinates ordering in parallel coordinates views Bratislava, 2011 Lukáš Chripko Univerzita Komenského v Bratislave Fakulta

More information

Rýchlosť Mbit/s (download/upload) 15 Mbit / 1 Mbit. 50 Mbit / 8 Mbit. 80 Mbit / 10 Mbit. 10 Mbit / 1 Mbit. 12 Mbit / 2 Mbit.

Rýchlosť Mbit/s (download/upload) 15 Mbit / 1 Mbit. 50 Mbit / 8 Mbit. 80 Mbit / 10 Mbit. 10 Mbit / 1 Mbit. 12 Mbit / 2 Mbit. Fiber 5 Mbit ** 5 Mbit / Mbit 5,90 Fiber 50 Mbit * 50 Mbit / 8 Mbit 9,90 Fiber 80 Mbit * 80 Mbit / Mbit 5,90 Mini Mbit* Mbit / Mbit 9,90 Klasik 2 Mbit* 2 Mbit / 2 Mbit Standard 8 Mbit* 8 Mbit / 3Mbit Expert

More information

Riešenia a technológie pre jednotnú správu používateľov

Riešenia a technológie pre jednotnú správu používateľov Riešenia a technológie pre jednotnú správu používateľov Radovan Semančík Agenda Úvod: Identity Crisis Technológie správy používateľov Postup nasadenia Záver Súčasný stav IT Security Nekonzistentné bezpečnostné

More information

Microsoft Azure platforma pre Cloud Computing. Juraj Šitina, Microsoft Slovakia

Microsoft Azure platforma pre Cloud Computing. Juraj Šitina, Microsoft Slovakia Microsoft Azure platforma pre Cloud Computing Juraj Šitina, Microsoft Slovakia m Agenda Cloud Computing Pohľad Microsoftu Predstavujeme platformu Microsoft Azure Benefity Cloud Computingu Microsoft je

More information

Databázy (1) Prednáška 11. Alexander Šimko

Databázy (1) Prednáška 11. Alexander Šimko Databázy (1) Prednáška 11 Alexander Šimko simko@fmph.uniba.sk Contents I Aktualizovanie štruktúry databázy Section 1 Aktualizovanie štruktúry databázy Aktualizácia štruktúry databázy Štruktúra databázy

More information

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY VÝUKOVÁ WEBOVÁ APLIKÁCIA NA PROGRAMOVANIE GPU.

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY VÝUKOVÁ WEBOVÁ APLIKÁCIA NA PROGRAMOVANIE GPU. UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY VÝUKOVÁ WEBOVÁ APLIKÁCIA NA PROGRAMOVANIE GPU Diplomová práca 2017 Bc. Denis Spišák UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA

More information

1. Introduction 2. Methods for I/O Operations 3. Buses 4. Liquid Crystal Displays 5. Other Types of Displays 6. Graphics Adapters 7.

1. Introduction 2. Methods for I/O Operations 3. Buses 4. Liquid Crystal Displays 5. Other Types of Displays 6. Graphics Adapters 7. 1. Introduction 2. Methods for I/O Operations 3. Buses 4. Liquid Crystal Displays 5. Other Types of Displays 6. Graphics Adapters 7. Optical Discs 1 Structure of a Graphics Adapter Video Memory Graphics

More information

Nové komunikačné trendy v dátových centrách

Nové komunikačné trendy v dátových centrách Nové komunikačné trendy v dátových centrách Martin Vozár Roman Benko 25. november 2009 Cisco Expo, Bratislava Agenda 1. Konvergovaná architektúra 2. Komponenty architektúry 3. AVNET demo LAB 2 / 17 Konvergovaná

More information

Graphics Hardware. Graphics Processing Unit (GPU) is a Subsidiary hardware. With massively multi-threaded many-core. Dedicated to 2D and 3D graphics

Graphics Hardware. Graphics Processing Unit (GPU) is a Subsidiary hardware. With massively multi-threaded many-core. Dedicated to 2D and 3D graphics Why GPU? Chapter 1 Graphics Hardware Graphics Processing Unit (GPU) is a Subsidiary hardware With massively multi-threaded many-core Dedicated to 2D and 3D graphics Special purpose low functionality, high

More information

Programovanie v jazyku Python. Michal Kvasnica

Programovanie v jazyku Python. Michal Kvasnica Programovanie v jazyku Python Michal Kvasnica Organizačné detaily Prednášky aj cvičenia v 638 Povinná účasť na cvičeniach Hodnotenie: priebežné odovzdávanie zadaní (40% známky) záverečný projekt na skúške

More information

NIKY a NIKY S. JEDNOFÁZOVÉ UPS od 600 do 3000 VA SVETOVÝ ŠPECIALISTA PRE ELEKTRICKÉ INŠTALÁCIE A DIGITÁLNE SYSTÉMY BUDOV

NIKY a NIKY S. JEDNOFÁZOVÉ UPS od 600 do 3000 VA SVETOVÝ ŠPECIALISTA PRE ELEKTRICKÉ INŠTALÁCIE A DIGITÁLNE SYSTÉMY BUDOV NIKY a NIKY S JEDNOFÁZOVÉ UPS od 600 do 3000 VA SVETOVÝ ŠPECIALISTA PRE ELEKTRICKÉ ŠTALÁCIE A DIGITÁLNE SYSTÉMY BUDOV Ideálna ochrana pre malé kancelárie a domáce kancelárske aplikácie. Tento rad ponúka

More information

CSE 591/392: GPU Programming. Introduction. Klaus Mueller. Computer Science Department Stony Brook University

CSE 591/392: GPU Programming. Introduction. Klaus Mueller. Computer Science Department Stony Brook University CSE 591/392: GPU Programming Introduction Klaus Mueller Computer Science Department Stony Brook University First: A Big Word of Thanks! to the millions of computer game enthusiasts worldwide Who demand

More information

LL LED svietidlá na osvetlenie športovísk. MMXIII-X LEADER LIGHT s.r.o. Všetky práva vyhradené. Uvedené dáta podliehajú zmenám.

LL LED svietidlá na osvetlenie športovísk. MMXIII-X LEADER LIGHT s.r.o. Všetky práva vyhradené. Uvedené dáta podliehajú zmenám. LL LED svietidlá na osvetlenie športovísk MMXIII-X LEADER LIGHT s.r.o. Všetky práva vyhradené. Uvedené dáta podliehajú zmenám. LL SPORT LL SPORT je sofistikované vysoko výkonné LED svietidlo špeciálne

More information

General Purpose Computing on Graphical Processing Units (GPGPU(

General Purpose Computing on Graphical Processing Units (GPGPU( General Purpose Computing on Graphical Processing Units (GPGPU( / GPGP /GP 2 ) By Simon J.K. Pedersen Aalborg University, Oct 2008 VGIS, Readings Course Presentation no. 7 Presentation Outline Part 1:

More information

Základná(umelecká(škola(Jána(Albrechta Topoľčianska(15

Základná(umelecká(škola(Jána(Albrechta Topoľčianska(15 Základná(umelecká(škola(Jána(Albrechta Topoľčianska(15 851(01(Bra@slava Titl.: Ján(Hrčka Bohrova(11 851(01(Bra@slava V(Bra@slave(21.11.2013 Vec:(Odpoveď(na(informácie(ohľadom(mandátnej(zmluvy(na(základe(Zákona(č.(211/2000(Zb.

More information

Ochrana koncových staníc pomocou Cisco Security Agent 6.0. Ľubomír Varga.

Ochrana koncových staníc pomocou Cisco Security Agent 6.0. Ľubomír Varga. Ochrana koncových staníc pomocou Cisco Security Agent 6.0 Ľubomír Varga lubomir.varga@lynx.sk Agenda CSA 6.0 refresh Vybrané vlastnosti CSA 6.0 Application Trust levels Notify User Rule Actions User Justifications

More information

POKROČILÉ C++ Marian Vittek

POKROČILÉ C++ Marian Vittek POKROČILÉ C++ Marian Vittek vittek@fmph.uniba.sk O predmete Pôvodne seminár Teraz normálna prednáška so skúškou/testom Predmetom kurzu je detailnejší pohľad na jazyk C++ a občasné porovnanie s inými programovacími

More information

REPORT DESIGNER 1 VYTVORENIE A ÚPRAVA FORMULÁRA. úprava formulárov v Money S4 / Money S Vytvorenie formulára

REPORT DESIGNER 1 VYTVORENIE A ÚPRAVA FORMULÁRA. úprava formulárov v Money S4 / Money S Vytvorenie formulára REPORT DESIGNER úprava formulárov v Money S4 / Money S5 Informačný systém Money S4/S5 umožňuje upraviť tlačové zostavy tak, aby plne vyhovovali potrebám používateľa. Na úpravu tlačových zostáv slúži doplnkový

More information

GPGPU, 4th Meeting Mordechai Butrashvily, CEO GASS Company for Advanced Supercomputing Solutions

GPGPU, 4th Meeting Mordechai Butrashvily, CEO GASS Company for Advanced Supercomputing Solutions GPGPU, 4th Meeting Mordechai Butrashvily, CEO moti@gass-ltd.co.il GASS Company for Advanced Supercomputing Solutions Agenda 3rd meeting 4th meeting Future meetings Activities All rights reserved (c) 2008

More information

Recipient Configuration. Štefan Pataky MCP, MCTS, MCITP

Recipient Configuration. Štefan Pataky MCP, MCTS, MCITP Recipient Configuration Štefan Pataky MCP, MCTS, MCITP Agenda Mailbox Mail Contact Distribution Groups Disconnected Mailbox Mailbox (vytvorenie nového účtu) Exchange Management Console New User Exchange

More information

SIP v malých telekomunikačných systémoch. Convergence. A matter of lifestyle.

SIP v malých telekomunikačných systémoch. Convergence. A matter of lifestyle. SIP v malých telekomunikačných systémoch Convergence. A matter of lifestyle. Obsah Prehľad portfólia malých komunikačných systémov Aastra BusinessPhone - Úvod - Prehľad koncových telefónnych aparátov -

More information

INTERNET. História internetu

INTERNET. História internetu INTERNET 1 Úvod Internet je celosvetová počítačová sieť. Je všade okolo, ale nepatrí nikomu, nikto ho neriadi. Internet predstavuje najväčšie množstvo informácií dostupných z jedného miesta. Internet tvoria

More information

CS GPU and GPGPU Programming Lecture 8+9: GPU Architecture 7+8. Markus Hadwiger, KAUST

CS GPU and GPGPU Programming Lecture 8+9: GPU Architecture 7+8. Markus Hadwiger, KAUST CS 380 - GPU and GPGPU Programming Lecture 8+9: GPU Architecture 7+8 Markus Hadwiger, KAUST Reading Assignment #5 (until March 12) Read (required): Programming Massively Parallel Processors book, Chapter

More information

Ochrana proti DDoS za použitia open-source software. Katarína Ďurechová

Ochrana proti DDoS za použitia open-source software. Katarína Ďurechová Ochrana proti DDoS za použitia open-source software Katarína Ďurechová katarina.durechova@nic.cz 30.11.2013 Distributed Denial of Service odopretie služby dosiahnutím limitu pripojenia sieťovej karty CPU

More information

Mesačná kontrolná správa

Mesačná kontrolná správa Mesačná kontrolná správa Štrukturálna štúdia mar.18 feb.18 jan.18 dec.17 nov.17 okt.17 sep.17 aug.17 júl.17 jún.17 máj.17 apr.17 mar.17 Internetová populácia SR 12+ 3 904 509 3 802 048 3 870 654 3 830

More information

Poradové a agregačné window funkcie. ROLLUP a CUBE

Poradové a agregačné window funkcie. ROLLUP a CUBE Poradové a agregačné window funkcie. ROLLUP a CUBE 1) Poradové a agregačné window funkcie 2) Extrémy pomocou DENSE_RANK(), TOP() - Príklady 3) Spriemernené poradia 4) Kumulatívne súčty 5) Group By a Datepart,

More information

GPU Architecture. Michael Doggett Department of Computer Science Lund university

GPU Architecture. Michael Doggett Department of Computer Science Lund university GPU Architecture Michael Doggett Department of Computer Science Lund university GPUs from my time at ATI R200 Xbox360 GPU R630 R610 R770 Let s start at the beginning... Graphics Hardware before GPUs 1970s

More information

Návrh kritérií pre habilitáciu docentov a vymenúvanie profesorov na Ekonomickej fakulte TU v Košiciach

Návrh kritérií pre habilitáciu docentov a vymenúvanie profesorov na Ekonomickej fakulte TU v Košiciach EKONOMICKÁ FAKULTA TU V KOŠICIACH MATERIÁL NA ROKOVANIE: Vedeckej rady, dňa: 16.11.20 Návrh kritérií pre habilitáciu docentov a vymenúvanie profesorov na Ekonomickej fakulte TU v Košiciach Predkladá: prof.

More information

VLSM a CIDR. CCNA2 Kapitola Cisco Systems, Inc. All rights reserved. Cisco Public 1

VLSM a CIDR. CCNA2 Kapitola Cisco Systems, Inc. All rights reserved. Cisco Public 1 VLSM a CIDR CCNA2 Kapitola 6 1 Trošku histórie Pred rokom 1981 IP adresy používali na špecifikáciu siete len prvých 8 bitov Rok1981, RFC 791 Zaviedol adresný priestor s tromi triedami adries Polovica 90

More information

CUFFT Library PG _V1.0 June, 2007

CUFFT Library PG _V1.0 June, 2007 PG-00000-003_V1.0 June, 2007 PG-00000-003_V1.0 Confidential Information Published by Corporation 2701 San Tomas Expressway Santa Clara, CA 95050 Notice This source code is subject to ownership rights under

More information

Ekonomický pilier TUR

Ekonomický pilier TUR Názov indikátora: HDP na obyvateľa Zaradenie indikátora v DPSIR štruktúre: Základné informácie: SR Definícia Hrubý domáci produkt vyjadrovaný ako celková peňažná hodnota statkov a služieb vytvorených za

More information

XPS 8920 Setup and Specifications

XPS 8920 Setup and Specifications XPS 8920 Setup and Specifications Model počítača: XPS 8920 Regulačný model: D24M Regulačný typ: D24M001 Poznámky, upozornenia a výstrahy POZNÁMKA: POZNÁMKA uvádza dôležité informácie, ktoré umožňujú lepšie

More information

Mesačná kontrolná správa

Mesačná kontrolná správa Mesačná kontrolná správa Štrukturálna štúdia dec.16 nov.16 okt.16 sep.16 aug.16 júl.16 jún.16 máj.16 apr.16 mar.16 feb.16 jan.16 Internetová populácia SR 12+ 3 728 988 3 718 495 3 718 802 3 711 581 3 700

More information

Accelerator cards are typically PCIx cards that supplement a host processor, which they require to operate Today, the most common accelerators include

Accelerator cards are typically PCIx cards that supplement a host processor, which they require to operate Today, the most common accelerators include 3.1 Overview Accelerator cards are typically PCIx cards that supplement a host processor, which they require to operate Today, the most common accelerators include GPUs (Graphics Processing Units) AMD/ATI

More information

Spôsoby zistenia ID KEP

Spôsoby zistenia ID KEP Spôsoby zistenia ID KEP ID KEP (kvalifikovaný elektronický podpis) je možné zistiť pomocou napr. ovládacieho panela, prostredíctvom prehliadača Internet Expolrer, Google Chrome alebo Mozilla Firefox. Popstup

More information

What Next? Kevin Walsh CS 3410, Spring 2010 Computer Science Cornell University. * slides thanks to Kavita Bala & many others

What Next? Kevin Walsh CS 3410, Spring 2010 Computer Science Cornell University. * slides thanks to Kavita Bala & many others What Next? Kevin Walsh CS 3410, Spring 2010 Computer Science Cornell University * slides thanks to Kavita Bala & many others Final Project Demo Sign-Up: Will be posted outside my office after lecture today.

More information

AR6181-MX, AR6182-MX Čítačky MIFARE kariet

AR6181-MX, AR6182-MX Čítačky MIFARE kariet AR6181-MX, AR6182-MX Čítačky MIFARE kariet ISO14443-A, ISO14443-B a ISO15693 Systém kontroly vstupu 13,56 MHz proximity technológia Jednoduchá konfigurácia čítačky použitím konfiguračnej karty Možnosť

More information

G P G P U : H I G H - P E R F O R M A N C E C O M P U T I N G

G P G P U : H I G H - P E R F O R M A N C E C O M P U T I N G Joined Advanced Student School (JASS) 2009 March 29 - April 7, 2009 St. Petersburg, Russia G P G P U : H I G H - P E R F O R M A N C E C O M P U T I N G Dmitry Puzyrev St. Petersburg State University Faculty

More information

2 Grafické knižnice a systémy

2 Grafické knižnice a systémy 2 Grafické knižnice a systémy 2.1 Prehľad vývoja, základné pojmy, určenie a klasifikácia Zobrazovací podsystém Zobrazovací podsystém počítačového systému je obvykle najdrahšia a energicky najnáročnejšia

More information

JAVA. Sieťové programovanie

JAVA. Sieťové programovanie JAVA Sieťové programovanie Sieťové programovanie Sieťová knižnica jazyka JAVA bola vytvorená podľa súborovej knižnice Zapúzdrovanie pripojení do streamov Multithreading Identifikácia počítača Každý počítač

More information

GPU Basics. Introduction to GPU. S. Sundar and M. Panchatcharam. GPU Basics. S. Sundar & M. Panchatcharam. Super Computing GPU.

GPU Basics. Introduction to GPU. S. Sundar and M. Panchatcharam. GPU Basics. S. Sundar & M. Panchatcharam. Super Computing GPU. Basics of s Basics Introduction to Why vs CPU S. Sundar and Computing architecture August 9, 2014 1 / 70 Outline Basics of s Why vs CPU Computing architecture 1 2 3 of s 4 5 Why 6 vs CPU 7 Computing 8

More information

Nvidia Quadro K5200 8GB two DVI-I two DisplayPort Graphics Card by ThinkStation (4X60G69025)

Nvidia Quadro K5200 8GB two DVI-I two DisplayPort Graphics Card by ThinkStation (4X60G69025) OVERVIEW Nvidia Quadro K5200 8GB two DVI-I two DisplayPort Graphics Card by ThinkStation (4X60G69025) The Nvidia Quadro K5200 8GB DVI-I, two DisplayPort Graphics Card by ThinkStation is based on Nvidia

More information

Real-time Graphics 9. GPGPU

Real-time Graphics 9. GPGPU Real-time Graphics 9. GPGPU GPGPU GPU (Graphics Processing Unit) Flexible and powerful processor Programmability, precision, power Parallel processing CPU Increasing number of cores Parallel processing

More information

GPU Architecture and Function. Michael Foster and Ian Frasch

GPU Architecture and Function. Michael Foster and Ian Frasch GPU Architecture and Function Michael Foster and Ian Frasch Overview What is a GPU? How is a GPU different from a CPU? The graphics pipeline History of the GPU GPU architecture Optimizations GPU performance

More information

Constraint satisfaction problems (problémy s obmedzujúcimi podmienkami)

Constraint satisfaction problems (problémy s obmedzujúcimi podmienkami) I2AI: Lecture 04 Constraint satisfaction problems (problémy s obmedzujúcimi podmienkami) Lubica Benuskova Reading: AIMA 3 rd ed. chap. 6 ending with 6.3.2 1 Constraint satisfaction problems (CSP) We w

More information

Government Cloud. Stratégia využitia Cloud Computing-u vo Verejnej správe SR. Peter Kišša

Government Cloud. Stratégia využitia Cloud Computing-u vo Verejnej správe SR. Peter Kišša Government Cloud Stratégia využitia Cloud Computing-u vo Verejnej správe SR Peter Kišša Prečo? Aug, 2011 - Amazon launches US government cloud designed to meet the regulatory requirements of U.S. government

More information

Real - Time Rendering. Graphics pipeline. Michal Červeňanský Juraj Starinský

Real - Time Rendering. Graphics pipeline. Michal Červeňanský Juraj Starinský Real - Time Rendering Graphics pipeline Michal Červeňanský Juraj Starinský Overview History of Graphics HW Rendering pipeline Shaders Debugging 2 History of Graphics HW First generation Second generation

More information

ECE 571 Advanced Microprocessor-Based Design Lecture 20

ECE 571 Advanced Microprocessor-Based Design Lecture 20 ECE 571 Advanced Microprocessor-Based Design Lecture 20 Vince Weaver http://www.eece.maine.edu/~vweaver vincent.weaver@maine.edu 12 April 2016 Project/HW Reminder Homework #9 was posted 1 Raspberry Pi

More information

Tvorba informačných systémov. 4. prednáška: Návrh IS

Tvorba informačných systémov. 4. prednáška: Návrh IS Tvorba informačných systémov 4. prednáška: Návrh IS Návrh informačného systému: témy Ciele návrhu ERD DFD Princípy OOP Objektová normalizácia SDD Architektonické pohľady UML diagramy Architektonické štýly

More information

Martin Kruliš, v

Martin Kruliš, v Martin Kruliš 1 GPGPU History Current GPU Architecture OpenCL Framework Example Optimizing Previous Example Alternative Architectures 2 1996: 3Dfx Voodoo 1 First graphical (3D) accelerator for desktop

More information

Technology for a better society. hetcomp.com

Technology for a better society. hetcomp.com Technology for a better society hetcomp.com 1 J. Seland, C. Dyken, T. R. Hagen, A. R. Brodtkorb, J. Hjelmervik,E Bjønnes GPU Computing USIT Course Week 16th November 2011 hetcomp.com 2 9:30 10:15 Introduction

More information

MERANIE SOFTVÉRU. Jakub Šimko MSI

MERANIE SOFTVÉRU. Jakub Šimko MSI Slovenská Technická Univerzita v Bratislave Fakulta Informatiky a Informačných Technológií Jakub Šimko jsimko@fiit.stuba.sk MERANIE SOFTVÉRU 9.10.2012 MSI Meranie a metriky Kto by mal dávať pozor? Predsa

More information

Daker DK Plus UPS RACK-TOWER UPS. od 1 do 10 kva SVETOVÝ ŠPECIALISTA PRE ELEKTRICKÉ INŠTALÁCIE A DIGITÁLNE SYSTÉMY BUDOV

Daker DK Plus UPS RACK-TOWER UPS. od 1 do 10 kva SVETOVÝ ŠPECIALISTA PRE ELEKTRICKÉ INŠTALÁCIE A DIGITÁLNE SYSTÉMY BUDOV Daker DK Plus UPS RACK-TOWER UPS od 1 do 10 kva SVETOVÝ ŠPECIALISTA PRE ELEKTRICKÉ INŠTALÁCIE A DIGITÁLNE SYSTÉMY BUDOV Daker DK Plus On-Line UPS s dvojitou konverziou je možné inštalovať v prevedení RACK

More information

Programové vybavenie - softvér. Funkcie operačného systému

Programové vybavenie - softvér. Funkcie operačného systému Programové vybavenie - softvér Funkcie operačného systému Softvér Softvér (software) programové vybavenie počítača. Vzniká programovaním, pričom každý počítačový program obsahuje postupnosť inštrukcií,

More information

GPGPU, 1st Meeting Mordechai Butrashvily, CEO GASS

GPGPU, 1st Meeting Mordechai Butrashvily, CEO GASS GPGPU, 1st Meeting Mordechai Butrashvily, CEO GASS Agenda Forming a GPGPU WG 1 st meeting Future meetings Activities Forming a GPGPU WG To raise needs and enhance information sharing A platform for knowledge

More information

CUDA. CUBLAS Library

CUDA. CUBLAS Library CUDA CUBLAS Library PG-00000-002_V1.0 June, 2007 CUBLAS Library PG-00000-002_V1.0 Published by Corporation 2701 San Tomas Expressway Santa Clara, CA 95050 Notice ALL DESIGN SPECIFICATIONS, REFERENCE BOARDS,

More information

Textový formát na zasielanie údajov podľa 27 ods. 2 písm. f) zákona

Textový formát na zasielanie údajov podľa 27 ods. 2 písm. f) zákona Popis textového formátu a xsd schémy na zasielanie údajov podľa 27 ods. 2 písm. f) zákona (formu na zaslanie údajov si zvolí odosielateľ údajov) Textový formát na zasielanie údajov podľa 27 ods. 2 písm.

More information

Pat Hanrahan. Modern Graphics Pipeline. How Powerful are GPUs? Application. Command. Geometry. Rasterization. Fragment. Display.

Pat Hanrahan. Modern Graphics Pipeline. How Powerful are GPUs? Application. Command. Geometry. Rasterization. Fragment. Display. How Powerful are GPUs? Pat Hanrahan Computer Science Department Stanford University Computer Forum 2007 Modern Graphics Pipeline Application Command Geometry Rasterization Texture Fragment Display Page

More information

HPC Middle East. KFUPM HPC Workshop April Mohamed Mekias HPC Solutions Consultant. Introduction to CUDA programming

HPC Middle East. KFUPM HPC Workshop April Mohamed Mekias HPC Solutions Consultant. Introduction to CUDA programming KFUPM HPC Workshop April 29-30 2015 Mohamed Mekias HPC Solutions Consultant Introduction to CUDA programming 1 Agenda GPU Architecture Overview Tools of the Trade Introduction to CUDA C Patterns of Parallel

More information

Pentura Mini LED veľmi tenké lištové svietidlo

Pentura Mini LED veľmi tenké lištové svietidlo Lighting Pentura Mini LED veľmi tenké lištové svietidlo Pentura Mini LED Pentura Mini LED je mimoriadne tenké lištové svietidlo, ktoré ponúka výhody energetickej úspornosti technológie LED, ako aj vynikajúci

More information

Real-time Graphics 9. GPGPU

Real-time Graphics 9. GPGPU 9. GPGPU GPGPU GPU (Graphics Processing Unit) Flexible and powerful processor Programmability, precision, power Parallel processing CPU Increasing number of cores Parallel processing GPGPU general-purpose

More information

1. Introduction. Introduction to Computer Graphics

1. Introduction. Introduction to Computer Graphics 1 1. Introduction Introduction to Computer Graphics 2 Display and Input devices Display and Input Technologies Physical Display Technologies 3 The first modern computer display devices we had were cathode

More information

Testovanie bieleho šumu

Testovanie bieleho šumu Beáta Stehlíková FMFI UK Bratislava Opakovanie z prednášky Vygenerujeme dáta Vygenerujeme dáta: N

More information

Antonio R. Miele Marco D. Santambrogio

Antonio R. Miele Marco D. Santambrogio Advanced Topics on Heterogeneous System Architectures GPU Politecnico di Milano Seminar Room A. Alario 18 November, 2015 Antonio R. Miele Marco D. Santambrogio Politecnico di Milano 2 Introduction First

More information

GPU-Based Volume Rendering of. Unstructured Grids. João L. D. Comba. Fábio F. Bernardon UFRGS

GPU-Based Volume Rendering of. Unstructured Grids. João L. D. Comba. Fábio F. Bernardon UFRGS GPU-Based Volume Rendering of João L. D. Comba Cláudio T. Silva Steven P. Callahan Unstructured Grids UFRGS University of Utah University of Utah Fábio F. Bernardon UFRGS Natal - RN - Brazil XVIII Brazilian

More information

ENGICAM významný výrobca ARM modulov SOM, usom, SMARC, uqseven, riešení OPEN FRAME a CARRIER BOARD prichádza na náš trh

ENGICAM významný výrobca ARM modulov SOM, usom, SMARC, uqseven, riešení OPEN FRAME a CARRIER BOARD prichádza na náš trh ENGICAM významný výrobca ARM modulov SOM, usom, SMARC, uqseven, riešení OPEN FRAME a CARRIER BOARD prichádza na náš trh Spoločnosť Engicam S.r.l. bola založená v roku 2004, sídlo spoločnosti je Florencia

More information

Transactions of the VŠB Technical University of Ostrava, Mechanical Series No. 2, 2008, vol. LIV, article No. 1632

Transactions of the VŠB Technical University of Ostrava, Mechanical Series No. 2, 2008, vol. LIV, article No. 1632 Transactions of the VŠB Technical University of Ostrava, Mechanical Series No. 2, 2008, vol. LIV, article No. 1632 Sylvia ROVŇÁKOVÁ *, Ondrej LÍŠKA ** LASER CUTTING MACHINE AND OPTIMISATION OF INPUT PARAMETERS

More information

Štruktúra údajov pre kontajner XML údajov 1. Dátové prvky pre kontajner XML údajov

Štruktúra údajov pre kontajner XML údajov 1. Dátové prvky pre kontajner XML údajov Štruktúra údajov pre kontajner XML údajov 1. Dátové prvky pre kontajner XML údajov D.4 Kontajner XML údajov (XMLDataContainer) Príloha č. 11 k výnosu č. 55/2014 Z. z. [pridaná novelou č. 275/2014 Z. z.,

More information

Xerox PARC the office of the future. Michal Winczer

Xerox PARC the office of the future. Michal Winczer Xerox PARC 1970-80 the office of the future Michal Winczer Čo to je? Kde to je? PARC = Palo Alto Research Center Čo bolo pred tým Vojna vo Vietname Hnutie hippies Úspechy XEROXu s kopírkami Neexistencia

More information

Slovenská technická univerzita v Bratislave Fakulta informatiky a informačných technológií FIIT-XXXX-XXXXX

Slovenská technická univerzita v Bratislave Fakulta informatiky a informačných technológií FIIT-XXXX-XXXXX Toto je titulný list práce. Je súčasťou každej priebežnej či záverečnej správy (BP, DP) Slovenská technická univerzita v Bratislave Fakulta informatiky a informačných technológií FIIT-XXXX-XXXXX evidenčné

More information

Introduction to Modern GPU Hardware

Introduction to Modern GPU Hardware The following content are extracted from the material in the references on last page. If any wrong citation or reference missing, please contact ldvan@cs.nctu.edu.tw. I will correct the error asap. This

More information

Martin Kruliš, v

Martin Kruliš, v Martin Kruliš 1 GPGPU History Current GPU Architecture OpenCL Framework Example (and its Optimization) Alternative Frameworks Most Recent Innovations 2 1996: 3Dfx Voodoo 1 First graphical (3D) accelerator

More information

Algoritmy deterministickej a stochastickej optimalizácie a ich počítačová realizácia

Algoritmy deterministickej a stochastickej optimalizácie a ich počítačová realizácia Algoritmy deterministickej a stochastickej optimalizácie a ich počítačová realizácia ESF 2007 D. Ševčovič Katedra aplikovanej matematiky a štatistiky, Univerzita Komenského, 842 48 Bratislava http://www.iam.fmph.uniba.sk/institute/sevcovic

More information

GPU ARCHITECTURE Chris Schultz, June 2017

GPU ARCHITECTURE Chris Schultz, June 2017 GPU ARCHITECTURE Chris Schultz, June 2017 MISC All of the opinions expressed in this presentation are my own and do not reflect any held by NVIDIA 2 OUTLINE CPU versus GPU Why are they different? CUDA

More information

Threading Hardware in G80

Threading Hardware in G80 ing Hardware in G80 1 Sources Slides by ECE 498 AL : Programming Massively Parallel Processors : Wen-Mei Hwu John Nickolls, NVIDIA 2 3D 3D API: API: OpenGL OpenGL or or Direct3D Direct3D GPU Command &

More information

Current Trends in Computer Graphics Hardware

Current Trends in Computer Graphics Hardware Current Trends in Computer Graphics Hardware Dirk Reiners University of Louisiana Lafayette, LA Quick Introduction Assistant Professor in Computer Science at University of Louisiana, Lafayette (since 2006)

More information

GPGPUs in HPC. VILLE TIMONEN Åbo Akademi University CSC

GPGPUs in HPC. VILLE TIMONEN Åbo Akademi University CSC GPGPUs in HPC VILLE TIMONEN Åbo Akademi University 2.11.2010 @ CSC Content Background How do GPUs pull off higher throughput Typical architecture Current situation & the future GPGPU languages A tale of

More information

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV POČÍTAČOVÉ GRAFIKY A MULTIMÉDIÍ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER GRAPHICS AND

More information

GRAPHICS HARDWARE. Niels Joubert, 4th August 2010, CS147

GRAPHICS HARDWARE. Niels Joubert, 4th August 2010, CS147 GRAPHICS HARDWARE Niels Joubert, 4th August 2010, CS147 Rendering Latest GPGPU Today Enabling Real Time Graphics Pipeline History Architecture Programming RENDERING PIPELINE Real-Time Graphics Vertices

More information

Georgia Institute of Technology Center for Signal and Image Processing Steve Conover February 2009

Georgia Institute of Technology Center for Signal and Image Processing Steve Conover February 2009 Georgia Institute of Technology Center for Signal and Image Processing Steve Conover February 2009 Introduction CUDA is a tool to turn your graphics card into a small computing cluster. It s not always

More information

Grafické a multimediálne systémy

Grafické a multimediálne systémy Grafické a multimediálne lne systémy Ing. Pavol Bezák, PhD. Ústav aplikovanej informatiky, automatizácie a matematiky MTF STU Katedra aplikovanej informatiky a automatizácie m. č. S-325 e-mail: pavol.bezak@stuba.sk

More information

Vzory, rámce a webové aplikácie

Vzory, rámce a webové aplikácie Vzory, rámce a webové aplikácie Jakub Šimko jakub.simko@stuba.sk Návrhové vzory (načo slúžia?) 1. Dobré zvyky v programovaní 2. Riešia často sa opakujúce problémy praxou overeným spôsobom 3. Pomôžu nám

More information

CMPE 665:Multiple Processor Systems CUDA-AWARE MPI VIGNESH GOVINDARAJULU KOTHANDAPANI RANJITH MURUGESAN

CMPE 665:Multiple Processor Systems CUDA-AWARE MPI VIGNESH GOVINDARAJULU KOTHANDAPANI RANJITH MURUGESAN CMPE 665:Multiple Processor Systems CUDA-AWARE MPI VIGNESH GOVINDARAJULU KOTHANDAPANI RANJITH MURUGESAN Graphics Processing Unit Accelerate the creation of images in a frame buffer intended for the output

More information

ECE 571 Advanced Microprocessor-Based Design Lecture 18

ECE 571 Advanced Microprocessor-Based Design Lecture 18 ECE 571 Advanced Microprocessor-Based Design Lecture 18 Vince Weaver http://www.eece.maine.edu/ vweaver vincent.weaver@maine.edu 11 November 2014 Homework #4 comments Project/HW Reminder 1 Stuff from Last

More information

SLOVENSKÁ TECHNICKÁ UNIVERZITA V BRATISLAVE MATERIÁLOVOTECHNOLOGICKÁ FAKULTA SO SÍDLOM V TRNAVE ZOBRAZOVACIE ZARIADENIA POČÍTAČOVEJ GRAFIKY

SLOVENSKÁ TECHNICKÁ UNIVERZITA V BRATISLAVE MATERIÁLOVOTECHNOLOGICKÁ FAKULTA SO SÍDLOM V TRNAVE ZOBRAZOVACIE ZARIADENIA POČÍTAČOVEJ GRAFIKY SLOVENSKÁ TECHNICKÁ UNIVERZITA V BRATISLAVE MATERIÁLOVOTECHNOLOGICKÁ FAKULTA SO SÍDLOM V TRNAVE ZOBRAZOVACIE ZARIADENIA POČÍTAČOVEJ GRAFIKY BAKALÁRSKA PRÁCA MTF-5262-48146 2010 Matúš GRAMBLIČKA SLOVENSKÁ

More information

FHD ZAP. Zväčšenie x na 22 LCD so šošovkou +4 Pracovná výška 250mm pre šošovku +4. Výstup HDMI a USB 3.0 Spotreba on/stand-by 7,4 W / 0,5 W

FHD ZAP. Zväčšenie x na 22 LCD so šošovkou +4 Pracovná výška 250mm pre šošovku +4. Výstup HDMI a USB 3.0 Spotreba on/stand-by 7,4 W / 0,5 W FHD ZAP Systém FHD ako jediný umožňuje nahrávať video vo Full HD kvalite. Vďaka tomu môžete ľahko vytvoriť presné postupy práce pre operátorov alebo pre zákazníkov. S free programom môžete okrem videa

More information