Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
2.3.Modelwykonawczy
2.3.1.SiatkaobliczeniowaNDRange
23
Siatkaobliczeniowa(zamienniemożnaużywaćpojęciaprzestrzeniindeksującejda-
ne)wOpenCLokreślanajestskrótemNDRange.Jesttokluczowepojęciewprzy-
padkuprocedurobliczeniowychOpenCL.Jakjużtozostałopowiedzianewcześniej,
mamytrzymożliwekształtyprzestrzeniindeksowejczyteżindeksującej:wektor,
płaszczyzna,sześcianorazprostopadłościan.ZatemwymiaroznaczonyjakoNprzy-
bierajednąznastępującychwartości:1,2,3.
Przestrzeńindeksowamapostaćhierarchiczną.Najmniejszymelementemjesttzw.
jednostkarobocza,któraposiadaunikalnyidentyfkatornazywanyidentyfkatoremglo-
balnym.Zestawjednostekroboczychtworzytzw.grupęroboczą,którejwymiarowość
równieżmożeprzybieraćwartości1,2,3.Każdajednostkarobocza,opróczidentyfka-
toraglobalnego,posiadatakżeidentyfkatorlokalnywramachdanejgrupyroboczej.
Kilkagruproboczychtworzysiatkęroboczą.Poszczególnegrupyposiadajątakże
własneidentyfkatory.Oznaczato,jednostkaroboczamożebyćidentyfkowana
przezidentyfkatorglobalny,identyfkatorlokalny,atakżeprzezidentyfkatorgrupy
roboczej,doktórejnależy.
Kształtsiatkiobliczeniowejdeterminujesposób,wjakiobliczamyposzczególne
identyfkatory,cozostałopokazanenarys.2.4naprzykładziesiatkiodwóchwymia-
rach.Siatkaglobalnazbudowanaze192jednostekroboczychzostałapodzielonana
12gruproboczych,akażdagruparoboczaobejmuje16jednostekroboczychrów-
nieżułożonychwstrukturędwuwymiarowąowymiarach4na4elementy.
Poszczególneindeksy,cobardzoważne,numerowaneodzera.Wartościin-
deksówglobalnychtoliczbyodzeradojedenastudlapierwszejwspółrzędnej(X)
orazodzeradopiętnastudladrugiejwspółrzędnej.Współrzędnelokalnetoliczbyod
zeradotrzechdlaobuwspółrzędnych,każdagruparoboczamabowiemtakiesame
wymiary.Indeksydlagruproboczychmająwartościodzeradodwóchdlapierwszej
współrzędnejorazodzeradotrzechdladrugiejwspółrzędnej.
Identyfkatorylokalne(LID)pozwalająnaidentyfkacjęjednostkiroboczejwra-
machgrupy.Jednakżeidentyfkatorglobalnymożnaobliczyć,znającLID,identyf-
katorcałejgrupyroboczej(WGID)orazwymiargrupyroboczej.Korzystającztych
informacji,identyfkatorglobalny(GID)dladanejjednostkiroboczejmożnaobliczyć
wnastępującysposób:
GID
GID
x=WGID
y=WGID
x*WGS
y*WGS
x+LID
y+LID
x
y
gdzie:WGIDidentyfkatorgrupy,WGSwymiargrupy(wprzykładziemamydwa
wymiary,gdyżsiatkajestdwuwymiarowa).
WstandardzieOpenCLwersja1.2możnawprowadzaćtzw.offset,czylidodatko-
weprzesunięciewindeksowaniuposzczególnychelementów.
Ponieważposzczególnegrupymajątakiesamewymiary,łatwoobliczyćichlicz-
bę,dzielącglobalnąwielkośćprzestrzeniindeksującejprzezliczbęgrupdladanego
wymiaru: