Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
2.ZrozumiećGPU
21
inst.
x++
i=0
i=1
x–
if
rdzeń
ALU1
true
ALU2
true
ALU3
false
ALU4
true
ALU5
true
ALU6
false
ALU7
true
ALU8
false
if(x==0){
i=0;
x++;
}
else{
i=1;
x––;
}
Rysunek2.4.Schematwykonywaniarozgałęzieńwprogramie.Instrukcjawarunkowajest
spełnionadlapięciuzośmiuwątków.Wtakiejsytuacjijestkoniecznezastosowaniemaski
nawybranewątkiiwykonaniekażdejzgałęzikodusekwencyjnie
Znajomośćtegoproblemujestniezwykleistotnadlaprogramisty,podobniejak
sposobynajegounikanie.Oddłuższegoczasuprocesorygraczneimplementują
mechanizmnazywanydynamicznymrozgałęzianiem(ang.dynamicbranching).Po-
zwalaonuniknąćwykonaniatychrozgałęzień,któreniesąwybieraneprzezżadne
zwątków.Oznaczatotyle,żejeżelimamykodziestrukturęif-elseiwszystkie
wątkiwdanymblokuwykonawczymzgadzająsięwejśćtylkowjednorozgałęzie-
nie,drugiezostaniepominięte,analogiczniejaknaCPU.Wstarszychgeneracjach
GPU,wszystkiewątkiprzechodziłyprzezkażdągałąźikażdąinstrukcjęprogramu.
Wartozauważyć,żeGPUgrupujewywołaniashaderówwsposóbpozwala-
jącyutrzymaćjaknajlepsząlokalnośćdanych,szczególniepodczaswykonywania
shaderafragmentów,gdzieblokiwykonawczeprzetwarzajązwyklesąsiadująceze
sobąpiksele.Pozwalatoczęstoprzewidziećoptymalnośćzastosowanychinstruk-
cjikontroliprzepływu.Naprzykład,jeżelimamynaekraniewiększyobiekt3D
poruszającysięzlewejstronynaprawą,dlaktóregowykonujemybardziejskom-
plikowaneobliczenia,gdyjestpolewejstronieekranu(instrukcjaifzwarunkiem
sprawdzającympołożenie),tomożemysięspodziewać,żewywołaniashadera
fragmentówdlalokalnychgruppikselibędątraaływjednąbądźdrugągałąź
kodu.Topozwolicałymblokomwykonawczymskorzystaćzzaletdynamicznego
rozgałęziania.Oczywiścieblokiwykonawczeprzetwarzającepikselewcentrum
ekranu,będązapewnemusiałyodwiedzićobiegałęziewkodzie.Przykładem
nieefektywnegostosowaniainstrukcjikontroliprzepływubyłobywprowadzenie
warunkubazującegonawartościkoloru,pobranegoztekstury,reprezentującej
szumwskaliszarości,iuzależnieniewejściawdważneblokikoduodtego,czy
wartośćtajestwiększalubmniejszaod0,5.Piszącinstrukcjekontroliprzepływu
wshaderach,należyzatemzwracaćnanieszczególnąuwagę,gdyżmogąznacznie
wpłynąćnawydajnośćaplikacji.
Wwieluprzypadkach,niektórefunkcjewbudowaneshaderówpozwalająunik-
nąćzbędnychrozgałęzień.Możnadonichzaliczyćm.in.max,min,clampczystep.
IchopisznajdujesięwdodatkuE.Wartojestosowaćwewszystkichsytuacjach,
wktórychjesttomożliwe,gdyżmogąoneznacznieograniczyćliczbęinstrukcji
sterującychiostateczniezmniejszyćliczbęcykliwymaganychnaichwykonanie.