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ówjedendlasyste-
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órezdolnedowykonywaniawieluwą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,gdzieodczytywaneizapisywane
daneprzezproceduryobliczeniowe.Pamięćglobalnajestteżnajwiększawprzy-
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.