Jak jiˇz bylo uvedeno dˇr´ıve, homogenn´ı veden´ı je takov´e veden´ı, u nˇehoˇz jsou vˇsechny jeho prim´arn´ı parametry nemˇenn´e. Vzhledem k proveden´ym experiment˚um s veden´ım homo-genn´ım (viz pˇredchoz´ı kapitola), jsem se rozhodl prov´est experimenty i veden´ım nehomo-genn´ım.
Prvn´ı nehomogenitu jsem do modelu zavedl tak, ˇze jsem zmˇenil vˇsechny hodnoty re-zistor˚u Rs poˇc´ınaje 250.t´ym elementem. Z hodnoty Rs = 10−4 jsem ji zvˇetˇsil na hodnotu Rs2 = 10−2. Provedl jsem pak stejn´y experiment jako s homogenn´ım veden´ım.
V grafu 3.20 je vidˇet celkov´y pr˚ubˇeh napˇet´ı v simulovan´em modelu, v grafu 3.21 jsem se pak zamˇeˇril opˇet na m´ısta maxim´aln´ıch hodnot vybran´ych napˇet´ı. Oproti homogenn´ımu veden´ı je zde patrn´a zmˇena v chov´an´ı sign´alu proch´azej´ıc´ıho kask´adou dvojbran˚u. Sign´al je sice zpoˇzdˇen, ale aˇz do 250.t´eho dvojbranu se chov´a tak, jako by nebyl tlumen. Od 250.t´eho dvojbranu pak je sign´al tlumen v souladu s v´ysledky z´ıskan´ymi v pˇredchoz´ı kapitole.
Prov´adˇel jsem dalˇs´ı experimenty s takov´ymto veden´ım a porovn´aval dosaˇzen´e v´ysledky.
Experimenty jsem prov´adˇel podobnˇe jako s homogenn´ım veden´ım, tj. zamˇeˇril jsem se na zkoum´an´ı hodnoty rezistor Rs.
Protoˇze zaveden´ı jedn´e nehomogenity d´avalo zaj´ımav´y v´ysledek v podobˇe grafu 3.10, rohodl jsem jsem se zkoumat veden´ı se zaveden´ım hned dvou nehomogenit. Provedl jsem tedy dva experimenty. Hodnoty rezistoruRsvˇcetnˇe element˚u veden´ı, kter´ych se dan´a hod-nota t´yka, jsou v n´asleduj´ıc´ı tabulce 3.2. Z´ıskan´e pr˚ubˇehy napˇet´ı pak zachycuj´ı grafy 3.22 pro prvn´ı experiment a 3.23 pro druh´y experiment.
V obou pˇr´ıpadech jsem dostal velmi zaj´ımav´e v´ysledky. V pˇr´ıpadˇe prvn´ıho
experi-Obr´azek 3.13: Graf pr˚ubˇehu napˇet´ı pˇri volbˇe hodnoty rezistoruRs = 10−2
Tabulka 3.2: Hodnoty rezistor˚u Rs v proveden´ych experimentech Rs 1.experiment Rs 2.experiment Ovlivnˇen´e dvojbrany
1·10−8 1·10−8 1 — 166
1·10−2 1·10−4 167 — 332
1·10−4 1·10−2 333 — 500
mentu se nejvpre napˇet´ı na jednotliv´ych elementech zvyˇsovala, jakmile byly elementy ve-den´ı ovlivnˇeny rezistoremRs= 1·10−2, doch´azelo k postupn´emu ˇc´ım d´al vˇetˇs´ımu tlumen´ı proch´azej´ıc´ıch napˇet´ı. Jakmile se vˇsak napˇet´ı dostalu pˇres tuto ”bari´eru” k hodnotˇe rezistoru Rs = 1·10−4, tlumen´ı se opˇet zmenˇsovalo a ´uroveˇn napˇet´ı se pomalu zvˇetˇsovala.
Ve druh´em pˇr´ıpadˇe se pak zvyˇsovala hodnota rezisotru Rs postupnˇe aˇz na hodnotu Rs = ·10−2. Dokud sign´al nedorazil k rezistor˚um se zmiˇnovanou hodnotou, napˇet´ı nejen, ˇ
ze se nezd´alo b´yt tlumen´e, ale nav´ıc se jeho ´uroveˇn zvyˇsovala. Proveden´e experimenty tak nab´ız´ı hypot´ezu, ˇze ´urovnˇe napˇet´ı (ˇci obecnˇe sign´alu) mohou stoupat aˇz po urˇcitou mez, dokud nenaraz´ı na rezistor s nejvyˇsˇs´ı hodnotou. Zda je tuto hypot´ezu moˇzn´e potvrdit, ˇci vyvr´atit, uk´aˇze aˇz dalˇs´ı v´yzkum.
Obr´azek 3.14: Pˇr´ımky proloˇzen´e maxim´aln´ımi hodnotami napˇet´ı pˇri r˚uzn´ych volb´ach hod-noty rezistoru Rs
Obr´azek 3.15: Detail pr˚ubˇeh˚u sledovan´ych sign´al˚u
Obr´azek 3.16: Detail pr˚ubˇeh˚u sledovan´ych sign´al˚u pˇri volbˇe Rp= 1·106
Obr´azek 3.17: Detail pr˚ubˇeh˚u sledovan´ych sign´al˚u pˇri volbˇe Rp= 1·105
Obr´azek 3.18: Detail pr˚ubˇeh˚u sledovan´ych sign´al˚u pˇri volbˇe Rp= 1·104
Obr´azek 3.19: Detail pr˚ubˇeh˚u sledovan´ych sign´al˚u pˇri volbˇe Rp= 1·104
Obr´azek 3.20: Pr˚ubˇeh napˇet´ı v nehomogenn´ım veden´ı
Obr´azek 3.21: Detail m´ısta maxim´aln´ıch hodnot napˇet´ı nehomogenn´ı veden´ı
Obr´azek 3.22: Pr˚ubˇeh napˇet´ı pˇri prvn´ım experimentu
Obr´azek 3.23: Pr˚ubˇeh napˇet´ı pˇr´ı druh´em experimentu
Kapitola 4
Akcelerace v´ ypoˇ ct˚ u v GPU
V pˇredchoz´ıch kapitole jsem diskutoval pouˇzit´ı parci´aln´ıch diferenci´aln´ıch rovnic pˇri anal´yze veden´ı. ˇReˇsen´ı takov´ychto rovnic je lepˇs´ı pˇrenechat nˇejak´emu automatizovan´emu procesu, tedy napˇr. CPU stoln´ıho poˇc´ıtaˇce. Tuto ˇcinnost prov´ad´ı syst´em TKSL. I kdyˇz v´yvoj proce-sor˚u jde velmi rychle dopˇredu a v´ypoˇcetn´ı v´ykon procesor˚u se neust´ale zvyˇsuje, procesory jiˇz nemaj´ı pouze jedno j´adro, pˇresto na nich mohou takov´eto v´ypoˇcty trvat ne´umˇernˇe dlouho.
Naproti tomu ˇcipy grafick´ych karet a jejich procesory se v dneˇsn´ı dobˇe dost´avaj´ı do popˇred´ı s ohledem na v´ypoˇcetn´ı v´ykon, kter´y je nˇekdy aˇz mnohon´asobnˇe vyˇsˇs´ı neˇz v´ykon bˇeˇzn´eho CPU.
Proto je vhodn´e sloˇzit´e v´ypoˇcty pˇrenechat pr´avˇe grafick´ym procesor˚um, kter´e maj´ı v´ıce jader, a vˇetˇs´ı rychlost a propustnost sbˇernic. Pro moˇznost pˇresunu sloˇzit´ych v´ypoˇct˚u do GPU je vyv´ıjen n stroj nVidia CUDA.
4.1 Grafick´ e karty
4.1.1 Historie v´yvoje grafick´ych karet
V dobˇe prvn´ıch poˇc´ıtaˇc˚u byly prvotn´ı grafick´e karty pouˇz´ıv´any pouze jako D/A pˇrevodn´ıky pro pˇrevod dat z videopamˇeti na grafick´y v´ystup. Na poˇc´atku 70.t´ych let pak vznikly myˇslenky o akceleraci rasterizaˇcn´ıch operac´ı specializovan´ym ˇcipem pr´avˇe na grafick´e kartˇe.
Prvn´ımi takov´ymi ˇcipy byly ˇcipy ANTIC a CTIA, kter´e nab´ızely vykreslov´an´ı jak v textov´ych, tak grafick´ych reˇzimech, vykreslov´an´ı sprit˚u.
Sprite je vlastnˇe dvourozmˇern´y obr´azek, pomoc´ı nˇehoˇz se do ”sc´eny” vkl´adaj´ı pohybuj´ıc´ı se objekty. Sprite definoval u kaˇzd´eho prvku, kter´y se mˇel h´ybat tzv. animaˇcn´ı f´azi prvku.
Samotn´y ˇcip ANTIC byl navrˇzen jako speci´aln´ı ”procesor” pro mapov´an´ı textu a teh-dejˇs´ıch grafick´ych dat na video v´ystup.
S prvn´ımi takov´ymito grafick´ymi kartami jsme se mohli setkat u osmibitov´ych poˇc´ıtaˇc˚u ATARI, ˇci pozdˇeji v 80.t´ych letech, Commodore Amiga. Amiga se stala pr˚ukopn´ıkem na poli grafick´ych ˇcip˚u, byl to jeden z prvn´ıch ˇcip˚u, kter´y by v dneˇsn´ı terminologii by mohl b´yt oznaˇcen jako grafick´y akceler´ator, protoˇze prakticky vˇsechny vykreslovac´ı funkce byly pˇresunuty pr´avˇe do hardwaru.
V 90.t´ych letech pak prob´ıhal v´yvoj hlavnˇe 2D hardwarov´e akcelerace, nicm´enˇe se na trhu zaˇcaly pomalu objevovat i prvn´ı 3D akceler´atory. Prvn´ı pokusy o 3D akceleraci vy´ustily v ˇcipy S3 Virge ˇci ATi Rage, kter´e vˇsak byly pouze jist´ym zp˚usobem o 3D funkce -vylepˇsen´e ˇcipy pˇredchoz´ı generace pro 2D akceleraci.
V polovinˇe 90.t´ych letech pak pˇriˇsly na trh prvn´ı ”opravdov´e” 3D akceler´atory, kter´e umoˇzˇnovaly zpracov´an´ı polygonov´ych s´ıt´ı a aplikaci textury na tyto s´ıtˇe. Nicm´enˇe poˇr´ad ˇslo pouze o jist´y druh specializovan´ych ˇcip˚u, kter´e nebyly schopny v GPU prov´adˇet uˇzivatelsky definovan´e programy, obsahovaly tedy pouze fixn´ı vykreslovac´ı ˇretˇezec. Tato doba rovnˇeˇz znamen´a obdob´ı masivnˇejˇs´ıho rozˇsiˇrov´an´ı OpenGL a DirectX.
V roce 2001 se spoleˇcnost nVidia vˇsak postarala o vpravdˇe revoluci ve zpracov´an´ı re-altime grafiky - pˇrivedla na trh grafick´y ˇcip GeForce3 (codename NV200). Tento ˇcip totiˇz na rozd´ıl od sv´ych pˇredch˚udc˚u byl jako prvn´ı schopen zpracov´avat pixely urˇcit´ym kr´atk´ym programem, poprv´e se tedy objevuje moˇznost programov´an´ı grafick´eho ˇcipu. Za zm´ınku d´ale stoj´ı ˇcip ATi Radeon 9700 (codename R300), coˇz byl prvn´ı ˇcip na svˇetˇe, kter´y imple-mentoval akceleraci rozhran´ı Direct3D 9.0.
Grafick´e ˇcipy se tedy v pr˚ubˇehu let st´avaj´ı ze specializovan´ych ˇcip˚u ˇcipy programova-teln´ymi, a tedy flexibilnˇejˇs´ımi.
4.1.2 Propojen´ı se syst´emem a pˇrenosov´e rychlosti
Grafick´a karta je do syst´emu pˇripojena pomoc´ı extern´ıho adapt´eru a pro komunikaci pak vyuˇz´ıv´a sbˇernici. V souˇcasn´e dobˇe se jedn´a o sbˇernici typu PCI-Express (PCI-E) verze 1.1 nebo novˇejˇs´ı verze 2.0 (dle [15] se jiˇz pˇripravuje specifikace 3.0 pl´anovan´a na konec roku 2009). Srovn´an´ı propustnosti obou verzi sbˇernic PCI-Express je uvedeno v n´asleduj´ıc´ı tabulce.
Tabulka 4.1: Tabulka propustnosti sbˇernice PCI-Express, v z´avorce uvedena rychlost pro obousmˇernou komunikaci (pˇrevzato z [22])
Komunikace procesoru s pamˇet´ı poˇc´ıtaˇce prob´ıh´a ˇr´adovˇe v rychlosti nˇekolika GB/s, zat´ımco pamˇet’ grafick´e karty b´yv´a v tomto ohledu mnohokr´ate rychlejˇs´ı, protoˇze je potˇreba z´asobovat stream jednotky grafick´e karty velk´ym mnoˇzstv´ım dat.
Je tedy zˇrejm´e, ˇze pˇresun dat z lok´aln´ı pamˇeti procesoru do pamˇeti grafick´e karty a nazpˇet nar´aˇz´ı na probl´em rychlosti sbˇernice propojuj´ıc´ı tyto komponenty. Tento probl´em lze ˇreˇsit napˇr. t´ım, ˇze se pˇresune veˇsker´y v´ypoˇcet do grafick´e karty.
4.1.3 Podporovan´e datov´e typy
Souˇcasn´e GPU zpravidla pracuj´ı se spojit´ym 3D prostorem, kde vyuˇz´ıvaj´ı v´ypoˇcty v plo-vouc´ı ˇr´adov´e ˇc´arce. Z hlediska rychlosti jsou vˇsak podporov´any zat´ım podporov´any pouze datov´e typy s pˇresnost´ı 32bit˚u. Nejbliˇzˇs´ı budoucnost vˇsak slibuje i zaveden´ı 64bitov´e pˇresnosti.
Kromˇe datov´ych typ˚u s plovouc´ı ˇr´adovou ˇc´arkou, jsou podporov´any i datov´e typy s pevnou ˇr´adovou ˇc´arkou. Zpravidla jsou vˇsak tyto datov´e typy emulov´any z datov´ych typ˚u s plovouc´ı ˇr´adovou ˇc´arkou.
Ukazatele souˇcasn´e GPU vyuˇz´ıvaj´ı pouze jako odkazy na data textur a programy, vytv´aˇren´ı vlastn´ıch datov´ych typ˚u v GPU zat´ım nen´ı moˇzn´e.
4.1.4 V´ykonnost grafick´ych karet
Jak jiˇz bylo uvedeno v kapitole zab´yvaj´ıc´ı se histori´ı v´yvoje grafick´ych karet, jejich v´ykon neust´ale stoup´a. To s sebou pˇrin´aˇs´ı hlavnˇe probl´em, jak tento v´ykon zvyˇsovat. Bˇeˇznˇe se v´ykon zvyˇsoval tak, ˇze se zvˇetˇsil poˇcet tranzistor˚u na ˇcipu, nebo se zv´yˇsilo napˇet´ı, pˇr´ıpadnˇe se zv´yˇsil takt ˇcip˚u.
ˇ
cip poˇcet tranzistor˚u ·106
AMD Athlon 64 X2 CPU 154
Tabulka 4.2: Tabulka poˇctu tranzistor˚u na ˇcipech ([1], [3], [2])
Avˇsak z technologick´eho hlediska se uk´azalo, ˇze tento trend jiˇz nen´ı do budoucna moˇzn´y [8]. Bylo tˇreba hledat jin´e zp˚usoby zvyˇsov´an´ı v´ykonnosti nejen grafick´ych ˇcip˚u.
Jako nejlepˇs´ı zp˚usob se tedy logicky uk´azalo prov´adˇet v´ypoˇcty paralelnˇe. Prakticky od poˇc´atku programovatelnosti grafick´ych ˇcip˚u se jevilo jako nejefektivnˇejˇs´ı optimalizo-vat v´ypoˇcet pro zpracov´an´ı typu SIMD1. Tento zp˚usob prov´adˇen´ı v´ypoˇct˚u je velmi dobˇre paralelizovateln´y, nebot’ zpravidla neobsahuje ˇz´adn´e nebo jen mal´e datov´e z´avislosti.
Jak ukazuje Obr´azek 4.1, teoretick´a v´ykonnost grafick´ych karet neust´ale roste. Zvyˇsov´an´ı v´ykonu se tedy vyd´av´a cestou masivn´ı paralelizace v´ypoˇct˚u. Nov´e GPU tedy na sv´em ˇcipu maj´ı stovky jednotek, kter´e jsou schopny prov´adˇet v´ypoˇcet ve stejn´em ˇcase. Tento pˇr´ıstup slibuje obrovsk´y n´ar˚ust teoretick´eho v´ykonu ovˇsem za cenu skuteˇcnˇe masivn´ı paralelizace.
V´ypoˇcet je tedy zpravidla rozdˇelen do mnoha v´ypoˇcetn´ıch vl´aken. Je tˇreba si vˇsak uvˇedomit, ˇ
ze na jedno vl´akno pˇripad´a menˇs´ı v´ypoˇcetn´ı v´ykon. Vytv´aˇren´ı a spr´ava vl´aken je vˇsak plnˇe v reˇzii grafick´eho hardware a tedy je reˇzie vytv´aˇren´ı vl´aken a pˇrep´ın´an´ı kontextu t´emˇeˇr nulov´a. Tento fakt pochopitelnˇe neplat´ı u vl´aken CPU.
4.1.5 Srovn´an´ı v´yhod a nev´yhod pouˇzit´ı GPU V´yhody
• Obrovsk´y teoretick´y v´ypoˇcetn´ı v´ykon
• Vysok´a propustnost pamˇeti
• Reˇzie vl´aken realizov´ana v GPU
• Masivnˇe paraleln´ı prostˇred´ı Nev´yhody
• Mal´a pˇresnost datov´ych typ˚u
1Single Instruction Multiple Data - tedy jedna operace nad mnoha daty
Obr´azek 4.1: Srovn´an´ı v´yvoje v´ykonnosti GPU a CPU
• N´ızk´y v´ykon na jedno vl´akno
• Nemoˇznost vytv´aˇren´ı vlastn´ıch datov´ych typ˚u