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:
•typhalf–liczbaopołówkowejprecyzji,wartośćnajmniejsza2–14≈6.10×10–5,
wartośćnajwiększa215×(2–2–10)=65504.
•typfloat–liczbapojedynczejprecyzji,wartośćnajmniejsza2–126≈1.18×10–38,
wartośćnajwiększa2127×(2–2–23)≈3.40×1038.
•typdouble–liczbapodwójnejprecyzji,wartośćnajmniejsza2–1022≈1.00×10323.3,
wartośćnajwiększa21023×(2–2–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ącytęinformację).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