Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
32
3.JęzykprogramowaniadostępnywOpenCL
Deklarowanywskaźnikmusibyćopatrzonysłowem--global:
--globalhalf*offsetToData;
offsetToData=ptrToData+1024;
żebymożnabyłonanimwykonywaćtypoweoperacjenawskaźnikach.
Niemożnautworzyćzmiennejczyteżtablicywpamięcilokalnejwoparciuoty-
pyhalf.Odczytdanychwymagastosowaniafunkcjivload-half.Zapisrównież
wymagastosowaniaoddzielnejfunkcjivstore-half.Ograniczeniadlategotypu
wynikajązjegogłównegoprzeznaczeniadodanychgrafcznych,np.dlateksturuży-
wanychdogeneracjigrafki.Krótkomówiąc,niejesttotypszerokowykorzystywa-
nywobliczeniachnumerycznych.Łatwotozauważyćwnastępującymzestawieniu
wartościminimalnychimaksymalnychdlapodstawowychtypówzmiennoprzecinko-
wychdostępnychwOpenCLC:
typhalfliczbaopołówkowejprecyzji,wartośćnajmniejsza2–146.10×10–5,
wartośćnajwiększa215×(22–10)=65504.
typfloatliczbapojedynczejprecyzji,wartośćnajmniejsza2–1261.18×10–38,
wartośćnajwiększa2127×(22–23)3.40×1038.
typdoubleliczbapodwójnejprecyzji,wartośćnajmniejsza2–10221.00×10323.3,
wartośćnajwiększa21023×(22–52)1.00×10308.3.
NiektórezwymienionychtypówskalarnychOpenCLmająswojebezpośrednie
odpowiednikiwnazewnictwietypówdlaAPIOpenCLstosowanepostroniegospo-
darza.Wtabeli3.2przedstawionozestawienietypówOpenCLorazichodpowiedni-
kówdostępnychwAPIOpenCL.
Należypamiętaćteżotym,żeOpenCLjeststandardemuniwersalnym,więc
możnanapotkaćnainnyporządekbitówdlatypówskalarnychsystemugospodarza
orazinnydlaurządzeńobliczeniowychOpenCL.Wdwóchpodstawowychtypach
porządkubitówbitnajmniejznaczącyjestumieszczonypoprawej(typlittle-en-
dian)lubpolewejstronie(typbig-endian).Kopiującdanedourządzeniaoblicze-
niowego,należyodpowiedniozmienićporządekbitówipodobniezmienićdanepo
odczytaniudanychzurządzeniaobliczeniowego.
ZpoziomuAPIOpenCLmożemyodczytaćsposóbukładubitówzapomocąfunk-
cjiclGetDeviceInfoistałejCL-DEVICE-ENDIAN-LITTLE(wrozdz.4.1podano
przykładodczytującyinformację).OdczytaniewartościCL-TRUEoznacza,żeurzą-
dzeniemaporządektypulittle-endian.
Równieżwprzypadkukodudlaurządzeniaobliczeniowegomożnasprawdzić,
jakiobowiązujeporządekbitówdladanych.Zdefniowanezostałomakro--EN-
DIAN-LITTLE--,któregoobecnośćoznacza,żemamyporządeklittle-endian,
natomiastbrakdefnicjitegomakraoznaczaporządekbig-endian.
Używanietypudoublerównieżwymagadodaniaodpowiedniejdefnicjipre-
procesora,tzw.pragmy,wkodziejądraobliczeniowego:
#pragmaOPENCLEXTENSIONcl-khr-fp64:enable