Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
26
2.StandardOpenCL
koordynacjaoperacjiobliczeniowychmiędzysystememgospodarzaorazsystemem
urządzeńobliczeniowychOpenCL.
OpenCLpozwala,abysystemgospodarzautworzyłwielekolejekdourządzenia
luburządzeńobliczeniowych,np.dorealizacjiróżnychzadań.Wykorzystującsys-
temzdarzeńdostępnywOpenCLmożnanp.pozakończeniuzadaniakopiowania
danychodrazuwywołaćjądroobliczeniowe,wobsłudzezdarzenia,pozagłównym
nurtemprogramu,jakiewykonujeaktualniehost.Należyjednakpodkreślić,żejądro
obliczeniowemusiodwoływaćsiędotegosamegokontekstu,codanakolejkapole-
ceń,którejzleconowykonaniejądraobliczeniowego.
2.4.Modelprogramowania
ModelprogramowaniawOpenCLzostałpodzielonynadwamodele:modeldlada-
nychorazmodeldlazadań.Wtejksiążceorazwszędzietam,gdzieomawiasiępro-
ceduryobliczenioweOpenCL,stosowanyjestmodeldladanych,wktórymsiatka
obliczeniowaadresujedane.
Siatkaobliczeniowawskazujestrukturęprzetwarzania,bowiem(jakjużtozostało
pokazanewrozdz.2.3)hierarchiasiatkiwyróżniajednostkiroboczejakonajmniejsze
elementyprzetwarzaniainformacji.Zazwyczajjednostkaroboczazajmujesięjed-
nymkonkretnymobiektemumieszczonymwpamięciurządzenia,np.jednąliczbą.
Jednakżeniezawszemusitakbyć,jednostkaroboczamożetakżeprzetwarzaćkilka
elementówpobranychzpamięci,choćnapoziomiesiatkiobliczeniowejstanowinaj-
mniejszyelementprzetwarzaniainformacji.
Zespółjednostekroboczychtworzygrupęroboczą.Wgrupiewszystkiejednostki
roboczedziałająrównolegle.Inaczejmówiąc,gruparównolegleprzetwarzazestaw
obiektówpobranychzpamięciurządzeniaobliczeniowego.Dozadańprogramisty
należyustalenierozmiarupojedynczejgrupyroboczejorazliczbygruproboczych
wymaganychdorozwiązywanegozadania.
Istotnymelementemwmodeludanychjestsynchronizacja.Idealnyprzypadek
totaki,wktórymdanewramachpojedynczychjednostekwpełniniezależne
iniemapotrzebysynchronizacji.Wrozwiązywaniurzeczywistychproblemówsytu-
acjaprzedstawiasięinaczej,dlategoOpenCLdostarczadwapoziomysynchronizacji.
Pierwszypoziomodnosisiędogrupyroboczejmożnazastosowaćtzw.barierę,
którawstrzymapracęposzczególnychjednostekroboczychdoczasu,wszystkie
jednostkiwdanejgrupiedoniejdotrą.Jaknarazie(wwersjionumerach1.0,1.1
oraz1.2)standardOpenCLniedostarczamechanizmudosynchronizacjimiędzyróż-
nymigrupamiroboczymi.
Drugipoziomsynchronizacjiodnosisiędokolejkipoleceń.Postawionabarierana
tympoziomieoznacza,wszystkiepoleceniaumieszczonewkolejcemuszązakoń-
czyćswojedziałania,atakżewszystkieoperacjewykonywanenapamięcirównież
muszązostaćzakończone.
PewnąodmianąsynchronizacjinadrugimpoziomiezdarzeniaOpenCL.Do-
stępneAPIpozwalanatworzeniezdarzeń,którebędąwywoływaneporealizacji