Treść książki
Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
10
1.Wprowadzenie
awewnętrznemechanizmyOpenCLdopasowująpodanyprogramdoaktualnie
używanejplatformywykorzystywanejdoobliczeńwramachOpenCL.Oznaczato
zasadnicząprzewagęstandarduOpenCLnadtechnologiąCUDA,gdyżmożebyć
stosowanynietylkodokartgrafcznych,alerównieżdotradycyjnychprocesorów,
któreobecniesąwyposażonewwektorowejednostkioferująceinstrukcjetypuSSE,
AltiVec,NeonczyAVX.NowościąjestteżwykorzystywaniestandarduOpenCLdo
układówFPGA2,którepoodpowiednimzaprogramowaniurównieżmogąstanowić
wydajnąjednostkędorealizacjiobliczeń.
WartozapoznaćsięztechnologiąOpenCL,bowiemwykorzystaniekartgrafcz-
nychwiodącychproducentówdorealizacjiobliczeńuniwersalnychróżnegotypujest
jużodkilkulatbardzopopularne.Wieleaplikacji(np.związanychzprzetwarzaniem
grafki,multimediów),anawetprogramydokompresjidanychpozwalająnawyko-
rzystaniemocyobliczeniowejkartgrafcznychdoprzyspieszeniaobliczeń.Znako-
mitymprzykłademjestGIMP–jedenzogólniedostępnychprogramówootwartym
źródle,adokładniepodsystemGEGL,wktóregonajnowszejwersjistandardOCLbę-
dzieszerokostosowany.InnymprzykłademjestprogramWinZIP
,którywykorzystuje
OpenCLdoprzyspieszeniakompresjiorazdekompresji.
1.1.Obliczeniarównoległe
Choćobecnieistniejądwagłównestandardytworzeniaprogramówdlakartgrafcz-
nych:wymienionatechnologiaCUDAfrmyNVIDIAorazstandardOpenCL(który
możnatraktowaćjakoodpowiednikOpenGLdorealizacjiobliczeń).Obarozwią-
zaniamająswojezaletyiwady.CUDAjestbardzopopularna,jednakżedziałatylko
zkartamifrmyNVIDIA.OpenCLtostandardustanowionyprzezorganizacjęKhro-
nos–aplikacjeopracowanezajegopomocądziałająnakartachgrafcznychgłów-
nychproducentówkartgrafcznych,obecniesątofrmyNVIDIAorazAMD.
Wymienionetechnologiemająpodobnymodelprogramowania.Zaletątechno-
logiiCUDA,jakwspomnianowewstępie,jestpełnaintegracjazjęzykiemC/C++.
WłaściwietonależymówićojęzykachprogramowaniaCUDACiCUDAC++.
OpenCLoferujeodrębnyjęzykprogramowania–podobnydoC,aleniejesttoC++.
Stanowitoteżpewnąwadę,ponieważniesądostępnenp.szablony.WCUDAmoż-
natworzyćklasyjęzykaC++,którychmetodysąrealizowaneprzezkartęgrafczną.
WprzypadkuOpenCLtworzonesątzw.kernele(wdalszejczęściksiążkibędąone
nazywanejądramiobliczeniowymialboprocedurami/funkcjamiobliczeniowymi)
stanowiąceoddzielneprogramydowykonaniaprzezodpowiednieurządzeniaobli-
czeniowedostępnewramachtzw.platformyOpenCL.Wartotuwspomniećopakie-
cieAPARAPIdlajęzykaJava(zostanieonszerzejprzedstawionywrozdz.6.2),który
funkcjonujepodobniejaktechnologiaCUDA.Programprzeznaczonydorealizacji
2FPGA–FieldProgrammableGateArray,wbezpośrednimtłumaczeniu:programowalnamacierz
bramek.Układtakimożnawielokrotnieprogramować,abyzmieniaćjegoprzeznaczenieifunkcjo-
nalność,nawetpozamontowaniuwurządzeniudocelowym.