Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
2.ZrozumiećGPU
19
międzyposzczególnymiproducentami.NvidiaiAMDoddłuższegoczasuutrzymu-
jąstałąwartość,którawynosiodpowiednio32i64.Oznaczato,żewprzypadku
procesorówgracznychtychrm,wywołaniashaderówgrupowanenajczęściej
będąwblokiotakichrozmiarach.Nvidiapojedynczytakiblokokreślajakowarp,
natomiastAMDwavefront.Myzkoleiwramachujednoliceniabędziemystosować
nazwęblokwykonawczy.Taknaprawdęblokwykonawczymożnarozumiećjako
grupęzsynchronizowanychzesobąwątkówwykonywanych,uruchomionychna
zycznychjednostkachwykonawczych.Takichgrupwątkówmożeistniećwiele
najednymmultiprocesorze,aichwykonaniamogąsięmiędzysobąprzeplatać,
zupełniejakwątkinaCPU.Zmianęwykonywaniajednegoblokuwykonawczego
nainny,natychsamychjednostkachwykonawczych,określamymianemprzełą-
czaniaczyteżzmianykontekstu.
2.2.3.Przełączaniekontekstuiunikanieopóźnień
Gdygrupajednostekwykonawczychrozpoczniejużprzetwarzanieprogramu
związanegozdanymblokiemwykonawczym,możesięzdarzyć,że,przechodząc
przezkolejnejegoinstrukcje,natranataką,którejwykonaniebędziewymaga-
łosięgnięciadodalszychobszarówpamięci(np.pamięcigłównejVRAM,która
zycznieznajdujesiępozaukłademGPU).Dobrymtegoprzykłademmożebyć
próbkowanietekstury.Wsytuacji,gdypróbkowanyfragmentteksturyznajdujesię
pozaobszarempamięcipodręcznej(niejestwniejaktualniedostępny),kontroler
pamięcimusiponiegosięgnąćdopamięcigłównej.Problemem,którysiętupoja-
wia,jestwysokikosztczasowywykonaniatakiejoperacji,któramożezająćnawet
kilkasetcyklizegarataktującegoukładgraczny.Gdybycałyblokwykonawczy,
złożonypowiedzmyz64wątków(wprzypadkuAMD),musiałczekaćnapobranie
danychzpamięcitakdługo,byłobytobardzonieefektywne.Abyuniknąćtego
typuopóźnień,dodanejgrupyjednostekwykonawczychprzypisujesięwięcej
niżjedenblokwykonawczy.Wmomencie,gdyjedenznichzostaniewstrzymany
zprzytoczonegopowyżejpowodu,następujezmianakontekstuwykonawczego
itymsamyminnyblokwykonawczywchodzinajegomiejsce.Gdytenzkolei
równieżzostaniezablokowany,poprzednimożeprzejąćinicjatywęlub,gdynadal
niejestongotowy,możezostaćwykonanykolejnyoczekującywkolejce.Nary-
sunku2.3zobrazowanotęsytuację.
Tegotypuprzełączaniekontekstujestbardzoszybkąoperacjąipozwalaukryć
opóźnieniaspowodowanepobieraniemdanychzpamięci.Imwięcejkontekstów/
blokówwykonawczychmożezostaćumieszczonychnapojedynczymmultiproce-
sorze,tymwiększeszansenauniknięcietychopóźnień.Niestetypamięćdostępna
naichprzechowywanieniejestzwyklezbytduża.Najlepszymsposobemnaopty-
malizacjęjesttuunikaniezbędnejrezerwacjirejestrów.Nierzadkosprowadzasię
todoanalizykodubinarnegoshaderów.