Treść książki
Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
2.2.Modelpamięci
19
Systemgospodarzaogrywarolęnadzorcywprocesieprzeprowadzaniaobliczeń.
Takipodziałpozwalanaoptymalizacjęcałegoprocesu,mocobliczeniowasystemu
gospodarzaniemusibowiembyćtakduża,jakposzczególnychurządzeńobliczenio-
wych.Choćtrzebapamiętać,żeodsprawnościhostazależy,jakszybkobędąprzeka-
zywanedanedoposzczególnychjednostekobliczeniowych.
Platformaobliczeniowakorzystazdwóchrodzajówprogramów–jedendlasyste-
mugospodarzaorazzestawprocedurobliczeniowychnazywanychjądramioblicze-
niowymdlaurządzeńobliczeniowych.Wdalszejczęściksiążkitegotypuprocedury
będąnazywanejądramibądźproceduramiobliczeniowymi,aczasemzostanieużyte
słowokernel,abyniepowtarzaćsłówjądrobądźproceduraobliczeniowa.
Proceduryobliczenioweniemogąbyć,niestety,zupełniedowolnymiprograma-
mi,gdyżstandardOpenCLokreślapostaćjęzykaprogramowania,któryzostałna-
zwanyOpenCLC.ZgodniezeswojąnazwąjęzyktenjestpodobnydojęzykaCijest
częściowozgodnyzestandardemonazwieC99,choćmaistotneograniczenia.
Przełożeniekoduproceduryobliczeniowejna,czasembardzoróżne,rozwiązania
sprzętowetozadaniedlasterownikaOpenCL.Systemgospodarzamożewspierać
tenproces,jednakostatecznewykonanieproceduryobliczeniowejtozadaniedla
urządzeniaobliczeniowego.
2.2.Modelpamięci
ProceduryobliczeniowetworzonewramachOpenCLwykorzystujądostępnośćwie-
lurdzeniobliczeniowych,któresązdolnedowykonywaniawieluwątkówrównocze-
śnie.Najlepszymrozwiązaniemjestsytuacja,gdyposzczególnewątkiniemusząsię
zesobąkomunikować.JednakOpenCLpozwalateżnato,abyjedenzespółwątków
komunikowałsięzapomocąmechanizmupamięcidzielonej.Stądteżistniejekilka
rodzajówpamięci,adokładniecztery,zktórychkorzystająproceduryobliczeniowe:
•pamięćglobalna(ang.globalmemory),
•pamięćstała(ang.constantmemory),
•pamięćlokalna(ang.localmemory),
•pamięćprywatna(ang.privatememory).
Pamięćglobalnatogłównyrodzajpamięci,gdziesąodczytywaneizapisywane
daneprzezproceduryobliczeniowe.Pamięćglobalnajestteżnajwiększa–wprzy-
padkupowszechniestosowanychkartgrafcznychobecnespotykanewielkościto
1GB,2GB,aczasemi3GBbądź4GBpamięcidostępnejdladanych.Wzależności
odkonkretnegorozwiązaniasprzętowegopamięćglobalnamożebyćwyposażona
wsystembuforowania(ang.cache).
Istotnymelementemjestdostępdopamięciglobalnej,którypowinienodbywać
sięwciągłychblokach,zarównowprzypadkuzapisu,jakteżodczytu.Współczesne
implementacjepamięcioferująbowiemwysokąwydajność,jeślidostępdodanych
odbywasięwpostaciciągłychbloków.TakidostępdanychwprzypadkuOpenCL
określasięangielskimsłowemcoalesced.