Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
18
Shadery.ZaawansowaneprogramowaniewGLSL
Narysunku2.2przedstawionoogólnyschematpojedynczegomultiprocesora,
naktórympozajednostkamiobliczeniowymi,znajdująsięm.in.:kontrolersterujący
przepływeminstrukcji,kontekstwykonawczyorazpamięćpodręcznapierwszego
poziomu.Podkreślamyponownie,żejesttoschematodpowiedniouproszczony,
napotrzebęopisuogólnejbudowyprocesoragracznego.Ponadtowzależności
odarchitektury,rozkładwidocznychelementówmożnesięznacznieżnić.Dla
większejprzejrzystościnieuwzględniliśmyteżjednostekspecjalnych,odpowie-
dzialnychzaprzetwarzanietekstur,specjalnychfunkcji(np.sin,cos)czyteżin-
nych.Mimotojesttodobrabazadlazrozumieniapodstawmodeluprzetwarzania.
Zacznijmyodpierwszegoblokuodpowiedzialnegozasterowanieprzepływem
instrukcji(ang.instructionstream,warpdispatcher,wavescheduler).Reprezentuje
ontutajmodułpobierania(ang.fetch)idekodowania(ang.decode)instrukcji
orazmechanizmszeregowania(ang.scheduler)odpowiedzialnyzaprzekazywanie
ichdoodpowiednichjednostekwykonawczych.Niejestjednaktak,żekażda
takajednostkaotrzymujeniezależnyfragmentprogramudowykonania.Jakjuż
wspominaliśmy,wodróżnieniuodCPU,któregoposzczególnerdzenie(jednost-
kiwykonawcze)wykonująswojąpracęniezależnieodsiebie,wGPUmamydo
czynieniazichgrupowaniem.Polegatonatym,żetesamezdekodowanein-
strukcjeshaderatraajądowykonanianakilkaczykilkanaściejednostekwyko-
nawczychjednocześnie,ztążnicą,żekażdyznichoperujenainnychdanych
wejściowych.JesttotypowymodelprzetwarzaniaSIMD(ang.SingleInstruction,
MultipleData),polegającynarównoległymprzetwarzaniutejsamejinstrukcjidla
żnychdanych.Nietrudnotutajoskojarzeniazwojskiem,gdziegrupażołnierzy
(jednostekwykonawczych)wykonujetesamerozkazy(instrukcje)otrzymaneod
dowódcy(sterowanieprzepływeminstrukcji)wtymsamymczasie.Matoniewąt-
pliwysenswodniesieniutodomodeluprzetwarzaniawewspółczesnejgrace
trójwymiarowej,opartejnageometriiorazjejrasteryzacji.Wierzchołki,zktórych
jestzbudowanymodel3Dorazpikselepowstającewwynikujegorasteryzacji,są
zwykleprzetwarzanepodczasrenderowaniazapomocątychsamychprogramów,
shaderów3.Każdywierzchołekjestprzekształcanywtensamsposób(zapomocą
tegosamegoalgorytmu),jednakbazującnainnychdanych(wektorzepozycji,
wektorzenormalnymitd.).Bardziejwydajnejestzatemgrupowaniejednostek
przetwarzającychidostarczanieimwsposóbsekwencyjnytychsamychinstrukcji
programu.Rodzitopewnenieprzyjemnekonsekwencje,szczególnieprzystoso-
waniuinstrukcjikontroliprzepływu.
Liczbaumieszczonychsięwpojedynczymmultiprocesorzejednostekwyko-
nawczych,którewspółbieżniewykonująidentycznefragmentyprogramu,żnisię
3Podczaswywoływaniafunkcjirysującejnarzeczbuforawierzchołkówmożezostaćużytytyl-
kojedenobiektprogramu(podrozdz.3.5)zprzywiązanymidoniegoshaderami.Dlategowszystkie
wierzchołkizostanąprzetworzoneprzeztensamshaderwierzchołkówiinne,jakiezostaływłączone
doobiektuprogramu.